パッケージの詳細

tlv-parser

bouroo135MIT1.0.1

Zero-dependency recursive TLV (Tag-Length-Value) parser in pure ES modules. Supports raw TLVNode[] or nested object keyed by tag.

tlv, parser, tag-length-value, esmodule

readme

tlv-parser

npm version downloads License: MIT Build Status

Zero-dependency, recursive TLV (Tag-Length-Value) parser in pure ES Modules. Supports both a raw array of TLVNode objects and a nested plain-object keyed by tag.


Contents


Installation

# via npm
npm install tlv-parser

# or yarn
yarn add tlv-parser

Usage

import { parseTLV, parseTLVNodes } from 'tlv-parser';

// Sample TLV string
const tlv = '0046000600000101030140225202505252KGPGoQxQH5Z5RySO5102TH9104904A';

// 1) Get nested object keyed by tag
const obj = parseTLV(tlv);
console.log(obj);
/* {
  "00": {
    "00": "000001",
    "01": "014",
    "02": "202505252KGPGoQxQH5Z5RySO"
  },
  "51": "TH",
  "91": "904A"
} */

// 2) Get raw TLVNode[]
const nodes = parseTLVNodes(tlv);
console.log(nodes);
/* [
  TLVNode { tag: '00', length: 46, data: '', children: [ … ] },
  TLVNode { tag: '51', length: 2, data: 'TH', children: [] },
  TLVNode { tag: '91', length: 4, data: '904A', children: [] }
] */

API

parseTLV(tlvString: string): Record<string, any>

Parses a TLV-encoded string into a nested plain object keyed by tag. Values are either strings (leaf data) or nested objects (sub-TLVs).

parseTLVNodes(tlvString: string): TLVNode[]

Parses a TLV-encoded string into an array of TLVNode entities. Each TLVNode has:

  • tag: string (2-digit tag)
  • length: number (parsed length)
  • data: string (raw data if no children)
  • children: TLVNode[] (empty if leaf)

Contributing

  1. Fork the repository
  2. Create a branch (git checkout -b feat/YourFeature)
  3. Commit your changes (git commit -m "feat: add …")
  4. Push to your branch (git push origin feat/YourFeature)
  5. Open a Pull Request

Please follow Conventional Commits and write tests.


License

MIT © Kawin Viriyaprasopsook