You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			|  | 2 years ago | |
|---|---|---|
| .. | ||
| lib | 2 years ago | |
| LICENSE | 2 years ago | |
| README.md | 2 years ago | |
| package.json | 2 years ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	token-types
A primitive token library used to read and write from a node Buffer.
Although it is possible to use this module directly, it is primary designed to be used with strtok3 tokenizer.
Compatibility
Module: version 5 migrated from CommonJS to pure ECMAScript Module (ESM). JavaScript is compliant with ECMAScript 2019 (ES10).
Installation
npm install --save token-types
Usually in combination with strtok3:
npm install --save strtok3
Using TypeScript you should also install @tokenizer/token as a development dependency:
npm install --save-dev @tokenizer/token
Example
import * as strtok3 from 'strtok3';
import * as token from 'token-types';
    
(async () => {
  const tokenizer = await strtok3.fromFile("somefile.bin");
  try {
    const myNumber = await tokenizer.readToken(token.Float32_BE);
    console.log(`My number: ${myNumber}`);
  } finally {
    tokenizer.close(); // Close the file
  } 
})();
Tokens
Numeric tokens
node-strtok supports a wide variety of numerical tokens out of the box:
| Token | Number | Bits | Endianness | 
|---|---|---|---|
| UINT8 | Unsigned integer | 8 | n/a | 
| UINT16_BE | Unsigned integer | 16 | big endian | 
| UINT16_LE | Unsigned integer | 16 | little endian | 
| UINT24_BE | Unsigned integer | 24 | big endian | 
| UINT24_LE | Unsigned integer | 24 | little endian | 
| UINT32_BE | Unsigned integer | 32 | big endian | 
| UINT32_LE | Unsigned integer | 32 | little endian | 
| UINT64_BE | Unsigned integer | 64 | big endian | 
| UINT64_LE* | Unsigned integer | 64 | little endian | 
| INT8 | Signed integer | 8 | n/a | 
| INT16_BE | Signed integer | 16 | big endian | 
| INT16_LE | Signed integer | 16 | little endian | 
| INT24_BE | Signed integer | 24 | big endian | 
| INT24_LE | Signed integer | 24 | little endian | 
| INT32_BE | Signed integer | 32 | big endian | 
| INT32_LE | Signed integer | 32 | little endian | 
| INT64_BE | Signed integer | 64 | big endian | 
| INT64_LE* | Signed integer | 64 | little endian | 
| Float16_BE | IEEE 754 float | 16 | big endian | 
| Float16_LE | IEEE 754 float | 16 | little endian | 
| Float32_BE | IEEE 754 float | 32 | big endian | 
| Float32_LE | IEEE 754 float | 32 | little endian | 
| Float64_BE | IEEE 754 float | 64 | big endian | 
| Float64_LE | IEEE 754 float | 64 | little endian | 
| Float80_BE* | IEEE 754 float | 80 | big endian | 
| Float80_LE* | IEEE 754 float | 80 | little endian | 
Other tokens
String types:
- Windows-1252
- ISO-8859-1
*) The tokens exceed the JavaScript IEEE 754 64-bit Floating Point precision, decoding and encoding is best effort based.
Custom token
Complex tokens can be added, which makes very suitable for reading binary files or network messages:
 ExtendedHeader = {
    len: 10,
    get: (buf, off) => {
      return {
        // Extended header size
        size: Token.UINT32_BE.get(buf, off),
        // Extended Flags
        extendedFlags: Token.UINT16_BE.get(buf, off + 4),
        // Size of padding
        sizeOfPadding: Token.UINT32_BE.get(buf, off + 6),
        // CRC data present
        crcDataPresent: common.strtokBITSET.get(buf, off + 4, 31)
      };
    }
  };