commit
This commit is contained in:
parent
a15c733e45
commit
2a5130cbda
2838 changed files with 288613 additions and 0 deletions
7
node_modules/token-types/LICENSE
generated
vendored
Normal file
7
node_modules/token-types/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
Copyright 2017 Borewit
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
120
node_modules/token-types/README.md
generated
vendored
Normal file
120
node_modules/token-types/README.md
generated
vendored
Normal file
|
@ -0,0 +1,120 @@
|
|||

|
||||
[](https://npmjs.org/package/token-types)
|
||||
[](https://npmcharts.com/compare/token-types,strtok3?start=1200&interval=30)
|
||||
[](https://coveralls.io/github/Borewit/token-types?branch=master)
|
||||
[](https://www.codacy.com/app/Borewit/token-types?utm_source=github.com&utm_medium=referral&utm_content=Borewit/token-types&utm_campaign=Badge_Grade)
|
||||
[](https://lgtm.com/projects/g/Borewit/token-types/context:javascript)
|
||||
[](https://lgtm.com/projects/g/Borewit/token-types/alerts/)
|
||||
[](https://deepscan.io/dashboard#view=project&tid=5165&pid=6940&bid=61852)
|
||||
[](https://snyk.io/test/github/Borewit/token-types?targetFile=package.json)
|
||||
|
||||
# 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](https://github.com/Borewit/strtok3).
|
||||
|
||||
## Compatibility
|
||||
|
||||
Module: version 5 migrated from [CommonJS](https://en.wikipedia.org/wiki/CommonJS) to [pure ECMAScript Module (ESM)](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).
|
||||
JavaScript is compliant with [ECMAScript 2019 (ES10)](https://en.wikipedia.org/wiki/ECMAScript#10th_Edition_%E2%80%93_ECMAScript_2019).
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
npm install --save token-types
|
||||
```
|
||||
Usually in combination with [strtok3](https://github.com/Borewit/strtok3):
|
||||
```sh
|
||||
npm install --save strtok3
|
||||
```
|
||||
|
||||
Using TypeScript you should also install [@tokenizer/token](https://github.com/Borewit/tokenizer-token) as a development
|
||||
dependency:
|
||||
|
||||
```shell
|
||||
npm install --save-dev @tokenizer/token
|
||||
```
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
```js
|
||||
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:
|
||||
```js
|
||||
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)
|
||||
};
|
||||
}
|
||||
};
|
||||
```
|
151
node_modules/token-types/lib/index.d.ts
generated
vendored
Normal file
151
node_modules/token-types/lib/index.d.ts
generated
vendored
Normal file
|
@ -0,0 +1,151 @@
|
|||
/// <reference types="node" resolution-mode="require"/>
|
||||
import { IToken, IGetToken } from '@tokenizer/token';
|
||||
import { Buffer } from 'node:buffer';
|
||||
/**
|
||||
* 8-bit unsigned integer
|
||||
*/
|
||||
export declare const UINT8: IToken<number>;
|
||||
/**
|
||||
* 16-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export declare const UINT16_LE: IToken<number>;
|
||||
/**
|
||||
* 16-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export declare const UINT16_BE: IToken<number>;
|
||||
/**
|
||||
* 24-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export declare const UINT24_LE: IToken<number>;
|
||||
/**
|
||||
* 24-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export declare const UINT24_BE: IToken<number>;
|
||||
/**
|
||||
* 32-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export declare const UINT32_LE: IToken<number>;
|
||||
/**
|
||||
* 32-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export declare const UINT32_BE: IToken<number>;
|
||||
/**
|
||||
* 8-bit signed integer
|
||||
*/
|
||||
export declare const INT8: IToken<number>;
|
||||
/**
|
||||
* 16-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export declare const INT16_BE: IToken<number>;
|
||||
/**
|
||||
* 16-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export declare const INT16_LE: IToken<number>;
|
||||
/**
|
||||
* 24-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export declare const INT24_LE: IToken<number>;
|
||||
/**
|
||||
* 24-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export declare const INT24_BE: IToken<number>;
|
||||
/**
|
||||
* 32-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export declare const INT32_BE: IToken<number>;
|
||||
/**
|
||||
* 32-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export declare const INT32_LE: IToken<number>;
|
||||
/**
|
||||
* 64-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export declare const UINT64_LE: IToken<bigint>;
|
||||
/**
|
||||
* 64-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export declare const INT64_LE: IToken<bigint>;
|
||||
/**
|
||||
* 64-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export declare const UINT64_BE: IToken<bigint>;
|
||||
/**
|
||||
* 64-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export declare const INT64_BE: IToken<bigint>;
|
||||
/**
|
||||
* IEEE 754 16-bit (half precision) float, big endian
|
||||
*/
|
||||
export declare const Float16_BE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 16-bit (half precision) float, little endian
|
||||
*/
|
||||
export declare const Float16_LE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 32-bit (single precision) float, big endian
|
||||
*/
|
||||
export declare const Float32_BE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 32-bit (single precision) float, little endian
|
||||
*/
|
||||
export declare const Float32_LE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 64-bit (double precision) float, big endian
|
||||
*/
|
||||
export declare const Float64_BE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 64-bit (double precision) float, little endian
|
||||
*/
|
||||
export declare const Float64_LE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 80-bit (extended precision) float, big endian
|
||||
*/
|
||||
export declare const Float80_BE: IToken<number>;
|
||||
/**
|
||||
* IEEE 754 80-bit (extended precision) float, little endian
|
||||
*/
|
||||
export declare const Float80_LE: IToken<number>;
|
||||
/**
|
||||
* Ignore a given number of bytes
|
||||
*/
|
||||
export declare class IgnoreType implements IGetToken<void> {
|
||||
len: number;
|
||||
/**
|
||||
* @param len number of bytes to ignore
|
||||
*/
|
||||
constructor(len: number);
|
||||
get(array: Uint8Array, off: number): void;
|
||||
}
|
||||
export declare class Uint8ArrayType implements IGetToken<Uint8Array> {
|
||||
len: number;
|
||||
constructor(len: number);
|
||||
get(array: Uint8Array, offset: number): Uint8Array;
|
||||
}
|
||||
export declare class BufferType implements IGetToken<Uint8Array, Buffer> {
|
||||
len: number;
|
||||
constructor(len: number);
|
||||
get(uint8Array: Uint8Array, off: number): Buffer;
|
||||
}
|
||||
/**
|
||||
* Consume a fixed number of bytes from the stream and return a string with a specified encoding.
|
||||
*/
|
||||
export declare class StringType implements IGetToken<string, Buffer> {
|
||||
len: number;
|
||||
encoding: BufferEncoding;
|
||||
constructor(len: number, encoding: BufferEncoding);
|
||||
get(uint8Array: Uint8Array, offset: number): string;
|
||||
}
|
||||
/**
|
||||
* ANSI Latin 1 String
|
||||
* Using windows-1252 / ISO 8859-1 decoding
|
||||
*/
|
||||
export declare class AnsiStringType implements IGetToken<string> {
|
||||
len: number;
|
||||
private static windows1252;
|
||||
private static decode;
|
||||
private static inRange;
|
||||
private static codePointToString;
|
||||
private static singleByteDecoder;
|
||||
constructor(len: number);
|
||||
get(buffer: Buffer, offset?: number): string;
|
||||
}
|
449
node_modules/token-types/lib/index.js
generated
vendored
Normal file
449
node_modules/token-types/lib/index.js
generated
vendored
Normal file
|
@ -0,0 +1,449 @@
|
|||
import * as ieee754 from 'ieee754';
|
||||
import { Buffer } from 'node:buffer';
|
||||
// Primitive types
|
||||
function dv(array) {
|
||||
return new DataView(array.buffer, array.byteOffset);
|
||||
}
|
||||
/**
|
||||
* 8-bit unsigned integer
|
||||
*/
|
||||
export const UINT8 = {
|
||||
len: 1,
|
||||
get(array, offset) {
|
||||
return dv(array).getUint8(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setUint8(offset, value);
|
||||
return offset + 1;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 16-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export const UINT16_LE = {
|
||||
len: 2,
|
||||
get(array, offset) {
|
||||
return dv(array).getUint16(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setUint16(offset, value, true);
|
||||
return offset + 2;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 16-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export const UINT16_BE = {
|
||||
len: 2,
|
||||
get(array, offset) {
|
||||
return dv(array).getUint16(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setUint16(offset, value);
|
||||
return offset + 2;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 24-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export const UINT24_LE = {
|
||||
len: 3,
|
||||
get(array, offset) {
|
||||
const dataView = dv(array);
|
||||
return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
const dataView = dv(array);
|
||||
dataView.setUint8(offset, value & 0xff);
|
||||
dataView.setUint16(offset + 1, value >> 8, true);
|
||||
return offset + 3;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 24-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export const UINT24_BE = {
|
||||
len: 3,
|
||||
get(array, offset) {
|
||||
const dataView = dv(array);
|
||||
return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
const dataView = dv(array);
|
||||
dataView.setUint16(offset, value >> 8);
|
||||
dataView.setUint8(offset + 2, value & 0xff);
|
||||
return offset + 3;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 32-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export const UINT32_LE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getUint32(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setUint32(offset, value, true);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 32-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export const UINT32_BE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getUint32(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setUint32(offset, value);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 8-bit signed integer
|
||||
*/
|
||||
export const INT8 = {
|
||||
len: 1,
|
||||
get(array, offset) {
|
||||
return dv(array).getInt8(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setInt8(offset, value);
|
||||
return offset + 1;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 16-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export const INT16_BE = {
|
||||
len: 2,
|
||||
get(array, offset) {
|
||||
return dv(array).getInt16(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setInt16(offset, value);
|
||||
return offset + 2;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 16-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export const INT16_LE = {
|
||||
len: 2,
|
||||
get(array, offset) {
|
||||
return dv(array).getInt16(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setInt16(offset, value, true);
|
||||
return offset + 2;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 24-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export const INT24_LE = {
|
||||
len: 3,
|
||||
get(array, offset) {
|
||||
const unsigned = UINT24_LE.get(array, offset);
|
||||
return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;
|
||||
},
|
||||
put(array, offset, value) {
|
||||
const dataView = dv(array);
|
||||
dataView.setUint8(offset, value & 0xff);
|
||||
dataView.setUint16(offset + 1, value >> 8, true);
|
||||
return offset + 3;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 24-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export const INT24_BE = {
|
||||
len: 3,
|
||||
get(array, offset) {
|
||||
const unsigned = UINT24_BE.get(array, offset);
|
||||
return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;
|
||||
},
|
||||
put(array, offset, value) {
|
||||
const dataView = dv(array);
|
||||
dataView.setUint16(offset, value >> 8);
|
||||
dataView.setUint8(offset + 2, value & 0xff);
|
||||
return offset + 3;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 32-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export const INT32_BE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getInt32(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setInt32(offset, value);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 32-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export const INT32_LE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getInt32(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setInt32(offset, value, true);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 64-bit unsigned integer, Little Endian byte order
|
||||
*/
|
||||
export const UINT64_LE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getBigUint64(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setBigUint64(offset, value, true);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 64-bit signed integer, Little Endian byte order
|
||||
*/
|
||||
export const INT64_LE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getBigInt64(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setBigInt64(offset, value, true);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 64-bit unsigned integer, Big Endian byte order
|
||||
*/
|
||||
export const UINT64_BE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getBigUint64(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setBigUint64(offset, value);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* 64-bit signed integer, Big Endian byte order
|
||||
*/
|
||||
export const INT64_BE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getBigInt64(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setBigInt64(offset, value);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 16-bit (half precision) float, big endian
|
||||
*/
|
||||
export const Float16_BE = {
|
||||
len: 2,
|
||||
get(dataView, offset) {
|
||||
return ieee754.read(dataView, offset, false, 10, this.len);
|
||||
},
|
||||
put(dataView, offset, value) {
|
||||
ieee754.write(dataView, value, offset, false, 10, this.len);
|
||||
return offset + this.len;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 16-bit (half precision) float, little endian
|
||||
*/
|
||||
export const Float16_LE = {
|
||||
len: 2,
|
||||
get(array, offset) {
|
||||
return ieee754.read(array, offset, true, 10, this.len);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
ieee754.write(array, value, offset, true, 10, this.len);
|
||||
return offset + this.len;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 32-bit (single precision) float, big endian
|
||||
*/
|
||||
export const Float32_BE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getFloat32(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setFloat32(offset, value);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 32-bit (single precision) float, little endian
|
||||
*/
|
||||
export const Float32_LE = {
|
||||
len: 4,
|
||||
get(array, offset) {
|
||||
return dv(array).getFloat32(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setFloat32(offset, value, true);
|
||||
return offset + 4;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 64-bit (double precision) float, big endian
|
||||
*/
|
||||
export const Float64_BE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getFloat64(offset);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setFloat64(offset, value);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 64-bit (double precision) float, little endian
|
||||
*/
|
||||
export const Float64_LE = {
|
||||
len: 8,
|
||||
get(array, offset) {
|
||||
return dv(array).getFloat64(offset, true);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
dv(array).setFloat64(offset, value, true);
|
||||
return offset + 8;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 80-bit (extended precision) float, big endian
|
||||
*/
|
||||
export const Float80_BE = {
|
||||
len: 10,
|
||||
get(array, offset) {
|
||||
return ieee754.read(array, offset, false, 63, this.len);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
ieee754.write(array, value, offset, false, 63, this.len);
|
||||
return offset + this.len;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* IEEE 754 80-bit (extended precision) float, little endian
|
||||
*/
|
||||
export const Float80_LE = {
|
||||
len: 10,
|
||||
get(array, offset) {
|
||||
return ieee754.read(array, offset, true, 63, this.len);
|
||||
},
|
||||
put(array, offset, value) {
|
||||
ieee754.write(array, value, offset, true, 63, this.len);
|
||||
return offset + this.len;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Ignore a given number of bytes
|
||||
*/
|
||||
export class IgnoreType {
|
||||
/**
|
||||
* @param len number of bytes to ignore
|
||||
*/
|
||||
constructor(len) {
|
||||
this.len = len;
|
||||
}
|
||||
// ToDo: don't read, but skip data
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
get(array, off) {
|
||||
}
|
||||
}
|
||||
export class Uint8ArrayType {
|
||||
constructor(len) {
|
||||
this.len = len;
|
||||
}
|
||||
get(array, offset) {
|
||||
return array.subarray(offset, offset + this.len);
|
||||
}
|
||||
}
|
||||
export class BufferType {
|
||||
constructor(len) {
|
||||
this.len = len;
|
||||
}
|
||||
get(uint8Array, off) {
|
||||
return Buffer.from(uint8Array.subarray(off, off + this.len));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Consume a fixed number of bytes from the stream and return a string with a specified encoding.
|
||||
*/
|
||||
export class StringType {
|
||||
constructor(len, encoding) {
|
||||
this.len = len;
|
||||
this.encoding = encoding;
|
||||
}
|
||||
get(uint8Array, offset) {
|
||||
return Buffer.from(uint8Array).toString(this.encoding, offset, offset + this.len);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* ANSI Latin 1 String
|
||||
* Using windows-1252 / ISO 8859-1 decoding
|
||||
*/
|
||||
export class AnsiStringType {
|
||||
constructor(len) {
|
||||
this.len = len;
|
||||
}
|
||||
static decode(buffer, offset, until) {
|
||||
let str = '';
|
||||
for (let i = offset; i < until; ++i) {
|
||||
str += AnsiStringType.codePointToString(AnsiStringType.singleByteDecoder(buffer[i]));
|
||||
}
|
||||
return str;
|
||||
}
|
||||
static inRange(a, min, max) {
|
||||
return min <= a && a <= max;
|
||||
}
|
||||
static codePointToString(cp) {
|
||||
if (cp <= 0xFFFF) {
|
||||
return String.fromCharCode(cp);
|
||||
}
|
||||
else {
|
||||
cp -= 0x10000;
|
||||
return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);
|
||||
}
|
||||
}
|
||||
static singleByteDecoder(bite) {
|
||||
if (AnsiStringType.inRange(bite, 0x00, 0x7F)) {
|
||||
return bite;
|
||||
}
|
||||
const codePoint = AnsiStringType.windows1252[bite - 0x80];
|
||||
if (codePoint === null) {
|
||||
throw Error('invaliding encoding');
|
||||
}
|
||||
return codePoint;
|
||||
}
|
||||
get(buffer, offset = 0) {
|
||||
return AnsiStringType.decode(buffer, offset, offset + this.len);
|
||||
}
|
||||
}
|
||||
AnsiStringType.windows1252 = [8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352,
|
||||
8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,
|
||||
8482, 353, 8250, 339, 157, 382, 376, 160, 161, 162, 163, 164, 165, 166, 167, 168,
|
||||
169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
|
||||
185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||||
201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
|
||||
217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
|
||||
233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
|
||||
248, 249, 250, 251, 252, 253, 254, 255];
|
87
node_modules/token-types/package.json
generated
vendored
Normal file
87
node_modules/token-types/package.json
generated
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
"name": "token-types",
|
||||
"version": "5.0.1",
|
||||
"description": "Common token types for decoding and encoding numeric and string values",
|
||||
"author": {
|
||||
"name": "Borewit",
|
||||
"url": "https://github.com/Borewit"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Borewit"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "del-cli lib/**/*.js lib/***.js.map *.d.ts test/**/*.d.ts test/**/*.js test/**/*.js.map .nyc_output",
|
||||
"build": "npm run compile",
|
||||
"compile-src": "tsc --p lib",
|
||||
"compile-test": "tsc --p test",
|
||||
"compile": "npm run compile-src && npm run compile-test",
|
||||
"eslint": "eslint lib test --ext .ts --ignore-pattern *.d.ts",
|
||||
"lint-ts": "tslint lib/index.ts --exclude '*.d.ts' 'test/**/*.ts' --exclude 'test/**/*.d.ts'",
|
||||
"lint-md": "remark -u preset-lint-recommended .",
|
||||
"lint": "npm run lint-md && npm run eslint",
|
||||
"test": "mocha",
|
||||
"test-coverage": "c8 npm run test",
|
||||
"send-codacy": "c8 report --reports-dir=./.coverage --reporter=text-lcov | codacy-coverage"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Borewit/token-types"
|
||||
},
|
||||
"files": [
|
||||
"lib/index.js",
|
||||
"lib/index.d.ts"
|
||||
],
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"exports": "./lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Borewit/token-types/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chai": "^4.3.1",
|
||||
"@types/mocha": "^9.1.0",
|
||||
"@types/node": "^18.6.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.32.0",
|
||||
"@typescript-eslint/parser": "^5.32.0",
|
||||
"c8": "^7.12.0",
|
||||
"chai": "^4.3.6",
|
||||
"del-cli": "^5.0.0",
|
||||
"eslint": "^8.9.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-import-resolver-typescript": "^3.4.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"eslint-plugin-jsdoc": "^39.3.4",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-unicorn": "^43.0.2",
|
||||
"mocha": "^10.0.0",
|
||||
"remark-cli": "^11.0.0",
|
||||
"remark-preset-lint-recommended": "^6.1.2",
|
||||
"source-map-support": "^0.5.21",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tokenizer/token": "^0.3.0",
|
||||
"ieee754": "^1.2.1"
|
||||
},
|
||||
"remarkConfig": {
|
||||
"plugins": [
|
||||
"preset-lint-recommended"
|
||||
]
|
||||
},
|
||||
"keywords": [
|
||||
"token",
|
||||
"integer",
|
||||
"unsigned",
|
||||
"numeric",
|
||||
"float",
|
||||
"IEEE",
|
||||
"754",
|
||||
"strtok3"
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue