@thomasfosterau/effect-parse 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +550 -2
- package/dist/Ascii.d.ts +392 -0
- package/dist/Ascii.d.ts.map +1 -0
- package/dist/Ascii.js +610 -0
- package/dist/Ascii.js.map +1 -0
- package/dist/Binary.d.ts +153 -0
- package/dist/Binary.d.ts.map +1 -0
- package/dist/Binary.js +171 -0
- package/dist/Binary.js.map +1 -0
- package/dist/Bits.d.ts +60 -0
- package/dist/Bits.d.ts.map +1 -0
- package/dist/Bits.js +144 -0
- package/dist/Bits.js.map +1 -0
- package/dist/Encoding.d.ts +116 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +85 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Expression.d.ts +124 -0
- package/dist/Expression.d.ts.map +1 -0
- package/dist/Expression.js +139 -0
- package/dist/Expression.js.map +1 -0
- package/dist/Input.d.ts +301 -0
- package/dist/Input.d.ts.map +1 -0
- package/dist/Input.js +312 -0
- package/dist/Input.js.map +1 -0
- package/dist/Nom.d.ts +518 -0
- package/dist/Nom.d.ts.map +1 -0
- package/dist/Nom.js +519 -0
- package/dist/Nom.js.map +1 -0
- package/dist/ParseError.d.ts +120 -0
- package/dist/ParseError.d.ts.map +1 -0
- package/dist/ParseError.js +301 -0
- package/dist/ParseError.js.map +1 -0
- package/dist/Parser.d.ts +1312 -0
- package/dist/Parser.d.ts.map +1 -0
- package/dist/Parser.js +1936 -0
- package/dist/Parser.js.map +1 -0
- package/dist/ParserSchema.d.ts +31 -0
- package/dist/ParserSchema.d.ts.map +1 -0
- package/dist/ParserSchema.js +56 -0
- package/dist/ParserSchema.js.map +1 -0
- package/dist/ParserStream.d.ts +127 -0
- package/dist/ParserStream.d.ts.map +1 -0
- package/dist/ParserStream.js +270 -0
- package/dist/ParserStream.js.map +1 -0
- package/dist/Text.d.ts +330 -0
- package/dist/Text.d.ts.map +1 -0
- package/dist/Text.js +529 -0
- package/dist/Text.js.map +1 -0
- package/dist/Token.d.ts +225 -0
- package/dist/Token.d.ts.map +1 -0
- package/dist/Token.js +294 -0
- package/dist/Token.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/compiler/closure.d.ts +25 -0
- package/dist/internal/compiler/closure.d.ts.map +1 -0
- package/dist/internal/compiler/closure.js +1668 -0
- package/dist/internal/compiler/closure.js.map +1 -0
- package/dist/internal/compiler/entries.d.ts +19 -0
- package/dist/internal/compiler/entries.d.ts.map +1 -0
- package/dist/internal/compiler/entries.js +32 -0
- package/dist/internal/compiler/entries.js.map +1 -0
- package/dist/internal/compiler/first.d.ts +33 -0
- package/dist/internal/compiler/first.d.ts.map +1 -0
- package/dist/internal/compiler/first.js +235 -0
- package/dist/internal/compiler/first.js.map +1 -0
- package/dist/internal/compiler/jit.d.ts +20 -0
- package/dist/internal/compiler/jit.d.ts.map +1 -0
- package/dist/internal/compiler/jit.js +1030 -0
- package/dist/internal/compiler/jit.js.map +1 -0
- package/dist/internal/compiler/registry.d.ts +34 -0
- package/dist/internal/compiler/registry.d.ts.map +1 -0
- package/dist/internal/compiler/registry.js +46 -0
- package/dist/internal/compiler/registry.js.map +1 -0
- package/dist/internal/compiler/sets.d.ts +29 -0
- package/dist/internal/compiler/sets.d.ts.map +1 -0
- package/dist/internal/compiler/sets.js +85 -0
- package/dist/internal/compiler/sets.js.map +1 -0
- package/dist/internal/entries.d.ts +27 -0
- package/dist/internal/entries.d.ts.map +1 -0
- package/dist/internal/entries.js +42 -0
- package/dist/internal/entries.js.map +1 -0
- package/dist/internal/node.d.ts +251 -0
- package/dist/internal/node.d.ts.map +1 -0
- package/dist/internal/node.js +73 -0
- package/dist/internal/node.js.map +1 -0
- package/dist/internal/numbers.d.ts +41 -0
- package/dist/internal/numbers.d.ts.map +1 -0
- package/dist/internal/numbers.js +302 -0
- package/dist/internal/numbers.js.map +1 -0
- package/dist/internal/resume.d.ts +39 -0
- package/dist/internal/resume.d.ts.map +1 -0
- package/dist/internal/resume.js +37 -0
- package/dist/internal/resume.js.map +1 -0
- package/dist/internal/text.d.ts +72 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +391 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/tokens.d.ts +93 -0
- package/dist/internal/tokens.d.ts.map +1 -0
- package/dist/internal/tokens.js +400 -0
- package/dist/internal/tokens.js.map +1 -0
- package/package.json +115 -3
- package/src/Ascii.ts +741 -0
- package/src/Binary.ts +228 -0
- package/src/Bits.ts +192 -0
- package/src/Encoding.ts +128 -0
- package/src/Expression.ts +245 -0
- package/src/Input.ts +429 -0
- package/src/Nom.ts +642 -0
- package/src/ParseError.ts +378 -0
- package/src/Parser.ts +2763 -0
- package/src/ParserSchema.ts +87 -0
- package/src/ParserStream.ts +390 -0
- package/src/Text.ts +757 -0
- package/src/Token.ts +416 -0
- package/src/index.ts +16 -0
- package/src/internal/compiler/closure.ts +1583 -0
- package/src/internal/compiler/entries.ts +36 -0
- package/src/internal/compiler/first.ts +252 -0
- package/src/internal/compiler/jit.ts +1091 -0
- package/src/internal/compiler/registry.ts +79 -0
- package/src/internal/compiler/sets.ts +100 -0
- package/src/internal/entries.ts +51 -0
- package/src/internal/node.ts +207 -0
- package/src/internal/numbers.ts +291 -0
- package/src/internal/resume.ts +55 -0
- package/src/internal/text.ts +411 -0
- package/src/internal/tokens.ts +409 -0
package/dist/Binary.d.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parsers for binary formats: fixed-width integers and floats in either
|
|
3
|
+
* byte order, and length-prefixed data (winnow's `binary` module, nom's
|
|
4
|
+
* `number` and `multi::length_*` parsers).
|
|
5
|
+
*
|
|
6
|
+
* Integers up to 32 bits are returned as `number`, wider integers as
|
|
7
|
+
* `bigint`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { Binary, Parser } from "@thomasfosterau/effect-parse"
|
|
12
|
+
*
|
|
13
|
+
* // A length-prefixed (u16 big-endian) payload
|
|
14
|
+
* const frame = Binary.lengthTake(Binary.beU16)
|
|
15
|
+
* Parser.parse(frame, new Uint8Array([0, 2, 0xca, 0xfe])) // Uint8Array [0xca, 0xfe]
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @since 0.1.0
|
|
19
|
+
*/
|
|
20
|
+
import type { Input, Slice } from "./Input.js";
|
|
21
|
+
import type { Parser } from "./Parser.js";
|
|
22
|
+
export {
|
|
23
|
+
/**
|
|
24
|
+
* Runs a bit-level parser on byte input. See the `Bits` module.
|
|
25
|
+
*
|
|
26
|
+
* @since 0.1.0
|
|
27
|
+
* @category bits
|
|
28
|
+
*/
|
|
29
|
+
bits } from "./Bits.js";
|
|
30
|
+
/**
|
|
31
|
+
* A byte order. `"native"` is the byte order of the current platform.
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category models
|
|
35
|
+
*/
|
|
36
|
+
export type Endianness = "big" | "little" | "native";
|
|
37
|
+
/**
|
|
38
|
+
* An unsigned byte.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category integers
|
|
42
|
+
*/
|
|
43
|
+
export declare const u8: Parser<number, never, never, Uint8Array>;
|
|
44
|
+
/**
|
|
45
|
+
* A signed byte.
|
|
46
|
+
*
|
|
47
|
+
* @since 0.1.0
|
|
48
|
+
* @category integers
|
|
49
|
+
*/
|
|
50
|
+
export declare const i8: Parser<number, never, never, Uint8Array>;
|
|
51
|
+
/** @since 0.1.0 @category integers */
|
|
52
|
+
export declare const beU16: Parser<number, never, never, Uint8Array>;
|
|
53
|
+
/** @since 0.1.0 @category integers */
|
|
54
|
+
export declare const leU16: Parser<number, never, never, Uint8Array>;
|
|
55
|
+
/** @since 0.1.0 @category integers */
|
|
56
|
+
export declare const beI16: Parser<number, never, never, Uint8Array>;
|
|
57
|
+
/** @since 0.1.0 @category integers */
|
|
58
|
+
export declare const leI16: Parser<number, never, never, Uint8Array>;
|
|
59
|
+
/** @since 0.1.0 @category integers */
|
|
60
|
+
export declare const beU24: Parser<number, never, never, Uint8Array>;
|
|
61
|
+
/** @since 0.1.0 @category integers */
|
|
62
|
+
export declare const leU24: Parser<number, never, never, Uint8Array>;
|
|
63
|
+
/** @since 0.1.0 @category integers */
|
|
64
|
+
export declare const beI24: Parser<number, never, never, Uint8Array>;
|
|
65
|
+
/** @since 0.1.0 @category integers */
|
|
66
|
+
export declare const leI24: Parser<number, never, never, Uint8Array>;
|
|
67
|
+
/** @since 0.1.0 @category integers */
|
|
68
|
+
export declare const beU32: Parser<number, never, never, Uint8Array>;
|
|
69
|
+
/** @since 0.1.0 @category integers */
|
|
70
|
+
export declare const leU32: Parser<number, never, never, Uint8Array>;
|
|
71
|
+
/** @since 0.1.0 @category integers */
|
|
72
|
+
export declare const beI32: Parser<number, never, never, Uint8Array>;
|
|
73
|
+
/** @since 0.1.0 @category integers */
|
|
74
|
+
export declare const leI32: Parser<number, never, never, Uint8Array>;
|
|
75
|
+
/** @since 0.1.0 @category integers */
|
|
76
|
+
export declare const beU64: Parser<bigint, never, never, Uint8Array>;
|
|
77
|
+
/** @since 0.1.0 @category integers */
|
|
78
|
+
export declare const leU64: Parser<bigint, never, never, Uint8Array>;
|
|
79
|
+
/** @since 0.1.0 @category integers */
|
|
80
|
+
export declare const beI64: Parser<bigint, never, never, Uint8Array>;
|
|
81
|
+
/** @since 0.1.0 @category integers */
|
|
82
|
+
export declare const leI64: Parser<bigint, never, never, Uint8Array>;
|
|
83
|
+
/** @since 0.1.0 @category integers */
|
|
84
|
+
export declare const beU128: Parser<bigint, never, never, Uint8Array>;
|
|
85
|
+
/** @since 0.1.0 @category integers */
|
|
86
|
+
export declare const leU128: Parser<bigint, never, never, Uint8Array>;
|
|
87
|
+
/** @since 0.1.0 @category integers */
|
|
88
|
+
export declare const beI128: Parser<bigint, never, never, Uint8Array>;
|
|
89
|
+
/** @since 0.1.0 @category integers */
|
|
90
|
+
export declare const leI128: Parser<bigint, never, never, Uint8Array>;
|
|
91
|
+
/** @since 0.1.0 @category floats */
|
|
92
|
+
export declare const beF32: Parser<number, never, never, Uint8Array>;
|
|
93
|
+
/** @since 0.1.0 @category floats */
|
|
94
|
+
export declare const leF32: Parser<number, never, never, Uint8Array>;
|
|
95
|
+
/** @since 0.1.0 @category floats */
|
|
96
|
+
export declare const beF64: Parser<number, never, never, Uint8Array>;
|
|
97
|
+
/** @since 0.1.0 @category floats */
|
|
98
|
+
export declare const leF64: Parser<number, never, never, Uint8Array>;
|
|
99
|
+
/**
|
|
100
|
+
* An unsigned 16-bit integer in the given byte order (winnow's `u16`).
|
|
101
|
+
*
|
|
102
|
+
* @since 0.1.0
|
|
103
|
+
* @category integers
|
|
104
|
+
*/
|
|
105
|
+
export declare const u16: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
106
|
+
/** @since 0.1.0 @category integers */
|
|
107
|
+
export declare const i16: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
108
|
+
/** @since 0.1.0 @category integers */
|
|
109
|
+
export declare const u24: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
110
|
+
/** @since 0.1.0 @category integers */
|
|
111
|
+
export declare const i24: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
112
|
+
/** @since 0.1.0 @category integers */
|
|
113
|
+
export declare const u32: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
114
|
+
/** @since 0.1.0 @category integers */
|
|
115
|
+
export declare const i32: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
116
|
+
/** @since 0.1.0 @category integers */
|
|
117
|
+
export declare const u64: (endian: Endianness) => Parser<bigint, never, never, Uint8Array>;
|
|
118
|
+
/** @since 0.1.0 @category integers */
|
|
119
|
+
export declare const i64: (endian: Endianness) => Parser<bigint, never, never, Uint8Array>;
|
|
120
|
+
/** @since 0.1.0 @category integers */
|
|
121
|
+
export declare const u128: (endian: Endianness) => Parser<bigint, never, never, Uint8Array>;
|
|
122
|
+
/** @since 0.1.0 @category integers */
|
|
123
|
+
export declare const i128: (endian: Endianness) => Parser<bigint, never, never, Uint8Array>;
|
|
124
|
+
/** @since 0.1.0 @category floats */
|
|
125
|
+
export declare const f32: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
126
|
+
/** @since 0.1.0 @category floats */
|
|
127
|
+
export declare const f64: (endian: Endianness) => Parser<number, never, never, Uint8Array>;
|
|
128
|
+
/**
|
|
129
|
+
* Parses a length with `count`, then takes that many tokens (winnow's
|
|
130
|
+
* `length_take`, nom's `length_data`).
|
|
131
|
+
*
|
|
132
|
+
* @since 0.1.0
|
|
133
|
+
* @category length-prefixed
|
|
134
|
+
*/
|
|
135
|
+
export declare const lengthTake: <E, R, I extends Input = Uint8Array>(count: Parser<number | bigint, E, R, I>) => Parser<Slice<I>, E, R, I>;
|
|
136
|
+
/**
|
|
137
|
+
* Parses a length with `count`, then applies `parser` that many times
|
|
138
|
+
* (winnow's `length_repeat`, nom's `length_count`).
|
|
139
|
+
*
|
|
140
|
+
* @since 0.1.0
|
|
141
|
+
* @category length-prefixed
|
|
142
|
+
*/
|
|
143
|
+
export declare const lengthRepeat: <E, R, I extends Input, A, E2, R2, I2 extends Input>(count: Parser<number | bigint, E, R, I>, parser: Parser<A, E2, R2, I2>) => Parser<Array<A>, E | E2, R | R2, I & I2>;
|
|
144
|
+
/**
|
|
145
|
+
* Parses a length with `count`, takes that many tokens, and applies
|
|
146
|
+
* `parser` to them (winnow's `length_and_then`, nom's `length_value`).
|
|
147
|
+
* `parser` does not need to consume the whole slice.
|
|
148
|
+
*
|
|
149
|
+
* @since 0.1.0
|
|
150
|
+
* @category length-prefixed
|
|
151
|
+
*/
|
|
152
|
+
export declare const lengthAndThen: <E, R, I extends Input, A, E2, R2>(count: Parser<number | bigint, E, R, I>, parser: Parser<A, E2, R2, Slice<I> & Input>) => Parser<A, E | E2, R | R2, I>;
|
|
153
|
+
//# sourceMappingURL=Binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["../src/Binary.ts"],"names":[],"mappings":"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"}
|
package/dist/Binary.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { Fail } from "./Input.js";
|
|
2
|
+
import * as P from "./Parser.js";
|
|
3
|
+
import * as Token from "./Token.js";
|
|
4
|
+
export {
|
|
5
|
+
/**
|
|
6
|
+
* Runs a bit-level parser on byte input. See the `Bits` module.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.1.0
|
|
9
|
+
* @category bits
|
|
10
|
+
*/
|
|
11
|
+
bits } from "./Bits.js";
|
|
12
|
+
const nativeLittle = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
|
|
13
|
+
const fixed = (size, name, read) => {
|
|
14
|
+
const expected = [`${size} byte${size === 1 ? "" : "s"}`];
|
|
15
|
+
return P.make((state) => {
|
|
16
|
+
const pos = state.pos;
|
|
17
|
+
const avail = state.end - pos;
|
|
18
|
+
if (avail < size)
|
|
19
|
+
return state.eoi("Token", expected, size - avail);
|
|
20
|
+
const bytes = state.input;
|
|
21
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
22
|
+
state.pos = pos + size;
|
|
23
|
+
return read(view, pos);
|
|
24
|
+
}, name);
|
|
25
|
+
};
|
|
26
|
+
const readU24 = (little) => (v, o) => little
|
|
27
|
+
? v.getUint8(o) | (v.getUint8(o + 1) << 8) | (v.getUint8(o + 2) << 16)
|
|
28
|
+
: (v.getUint8(o) << 16) | (v.getUint8(o + 1) << 8) | v.getUint8(o + 2);
|
|
29
|
+
const readI24 = (little) => {
|
|
30
|
+
const u = readU24(little);
|
|
31
|
+
return (v, o) => {
|
|
32
|
+
const x = u(v, o);
|
|
33
|
+
return x & 0x800000 ? x - 0x1000000 : x;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const readU128 = (little) => (v, o) => {
|
|
37
|
+
const a = v.getBigUint64(o, little);
|
|
38
|
+
const b = v.getBigUint64(o + 8, little);
|
|
39
|
+
return little ? (b << 64n) | a : (a << 64n) | b;
|
|
40
|
+
};
|
|
41
|
+
const readI128 = (little) => {
|
|
42
|
+
const u = readU128(little);
|
|
43
|
+
return (v, o) => BigInt.asIntN(128, u(v, o));
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* An unsigned byte.
|
|
47
|
+
*
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
* @category integers
|
|
50
|
+
*/
|
|
51
|
+
export const u8 = fixed(1, "u8", (v, o) => v.getUint8(o));
|
|
52
|
+
/**
|
|
53
|
+
* A signed byte.
|
|
54
|
+
*
|
|
55
|
+
* @since 0.1.0
|
|
56
|
+
* @category integers
|
|
57
|
+
*/
|
|
58
|
+
export const i8 = fixed(1, "i8", (v, o) => v.getInt8(o));
|
|
59
|
+
/** @since 0.1.0 @category integers */
|
|
60
|
+
export const beU16 = fixed(2, "beU16", (v, o) => v.getUint16(o, false));
|
|
61
|
+
/** @since 0.1.0 @category integers */
|
|
62
|
+
export const leU16 = fixed(2, "leU16", (v, o) => v.getUint16(o, true));
|
|
63
|
+
/** @since 0.1.0 @category integers */
|
|
64
|
+
export const beI16 = fixed(2, "beI16", (v, o) => v.getInt16(o, false));
|
|
65
|
+
/** @since 0.1.0 @category integers */
|
|
66
|
+
export const leI16 = fixed(2, "leI16", (v, o) => v.getInt16(o, true));
|
|
67
|
+
/** @since 0.1.0 @category integers */
|
|
68
|
+
export const beU24 = fixed(3, "beU24", readU24(false));
|
|
69
|
+
/** @since 0.1.0 @category integers */
|
|
70
|
+
export const leU24 = fixed(3, "leU24", readU24(true));
|
|
71
|
+
/** @since 0.1.0 @category integers */
|
|
72
|
+
export const beI24 = fixed(3, "beI24", readI24(false));
|
|
73
|
+
/** @since 0.1.0 @category integers */
|
|
74
|
+
export const leI24 = fixed(3, "leI24", readI24(true));
|
|
75
|
+
/** @since 0.1.0 @category integers */
|
|
76
|
+
export const beU32 = fixed(4, "beU32", (v, o) => v.getUint32(o, false));
|
|
77
|
+
/** @since 0.1.0 @category integers */
|
|
78
|
+
export const leU32 = fixed(4, "leU32", (v, o) => v.getUint32(o, true));
|
|
79
|
+
/** @since 0.1.0 @category integers */
|
|
80
|
+
export const beI32 = fixed(4, "beI32", (v, o) => v.getInt32(o, false));
|
|
81
|
+
/** @since 0.1.0 @category integers */
|
|
82
|
+
export const leI32 = fixed(4, "leI32", (v, o) => v.getInt32(o, true));
|
|
83
|
+
/** @since 0.1.0 @category integers */
|
|
84
|
+
export const beU64 = fixed(8, "beU64", (v, o) => v.getBigUint64(o, false));
|
|
85
|
+
/** @since 0.1.0 @category integers */
|
|
86
|
+
export const leU64 = fixed(8, "leU64", (v, o) => v.getBigUint64(o, true));
|
|
87
|
+
/** @since 0.1.0 @category integers */
|
|
88
|
+
export const beI64 = fixed(8, "beI64", (v, o) => v.getBigInt64(o, false));
|
|
89
|
+
/** @since 0.1.0 @category integers */
|
|
90
|
+
export const leI64 = fixed(8, "leI64", (v, o) => v.getBigInt64(o, true));
|
|
91
|
+
/** @since 0.1.0 @category integers */
|
|
92
|
+
export const beU128 = fixed(16, "beU128", readU128(false));
|
|
93
|
+
/** @since 0.1.0 @category integers */
|
|
94
|
+
export const leU128 = fixed(16, "leU128", readU128(true));
|
|
95
|
+
/** @since 0.1.0 @category integers */
|
|
96
|
+
export const beI128 = fixed(16, "beI128", readI128(false));
|
|
97
|
+
/** @since 0.1.0 @category integers */
|
|
98
|
+
export const leI128 = fixed(16, "leI128", readI128(true));
|
|
99
|
+
/** @since 0.1.0 @category floats */
|
|
100
|
+
export const beF32 = fixed(4, "beF32", (v, o) => v.getFloat32(o, false));
|
|
101
|
+
/** @since 0.1.0 @category floats */
|
|
102
|
+
export const leF32 = fixed(4, "leF32", (v, o) => v.getFloat32(o, true));
|
|
103
|
+
/** @since 0.1.0 @category floats */
|
|
104
|
+
export const beF64 = fixed(8, "beF64", (v, o) => v.getFloat64(o, false));
|
|
105
|
+
/** @since 0.1.0 @category floats */
|
|
106
|
+
export const leF64 = fixed(8, "leF64", (v, o) => v.getFloat64(o, true));
|
|
107
|
+
const byEndian = (big, little) => (endian) => endian === "big" ? big : endian === "little" ? little : nativeLittle ? little : big;
|
|
108
|
+
/**
|
|
109
|
+
* An unsigned 16-bit integer in the given byte order (winnow's `u16`).
|
|
110
|
+
*
|
|
111
|
+
* @since 0.1.0
|
|
112
|
+
* @category integers
|
|
113
|
+
*/
|
|
114
|
+
export const u16 = byEndian(beU16, leU16);
|
|
115
|
+
/** @since 0.1.0 @category integers */
|
|
116
|
+
export const i16 = byEndian(beI16, leI16);
|
|
117
|
+
/** @since 0.1.0 @category integers */
|
|
118
|
+
export const u24 = byEndian(beU24, leU24);
|
|
119
|
+
/** @since 0.1.0 @category integers */
|
|
120
|
+
export const i24 = byEndian(beI24, leI24);
|
|
121
|
+
/** @since 0.1.0 @category integers */
|
|
122
|
+
export const u32 = byEndian(beU32, leU32);
|
|
123
|
+
/** @since 0.1.0 @category integers */
|
|
124
|
+
export const i32 = byEndian(beI32, leI32);
|
|
125
|
+
/** @since 0.1.0 @category integers */
|
|
126
|
+
export const u64 = byEndian(beU64, leU64);
|
|
127
|
+
/** @since 0.1.0 @category integers */
|
|
128
|
+
export const i64 = byEndian(beI64, leI64);
|
|
129
|
+
/** @since 0.1.0 @category integers */
|
|
130
|
+
export const u128 = byEndian(beU128, leU128);
|
|
131
|
+
/** @since 0.1.0 @category integers */
|
|
132
|
+
export const i128 = byEndian(beI128, leI128);
|
|
133
|
+
/** @since 0.1.0 @category floats */
|
|
134
|
+
export const f32 = byEndian(beF32, leF32);
|
|
135
|
+
/** @since 0.1.0 @category floats */
|
|
136
|
+
export const f64 = byEndian(beF64, leF64);
|
|
137
|
+
const toCount = (n) => typeof n === "bigint" ? Number(n) : n;
|
|
138
|
+
/**
|
|
139
|
+
* Parses a length with `count`, then takes that many tokens (winnow's
|
|
140
|
+
* `length_take`, nom's `length_data`).
|
|
141
|
+
*
|
|
142
|
+
* @since 0.1.0
|
|
143
|
+
* @category length-prefixed
|
|
144
|
+
*/
|
|
145
|
+
export const lengthTake = (count) => {
|
|
146
|
+
const countStep = count.step;
|
|
147
|
+
return P.make((state) => {
|
|
148
|
+
const n = countStep(state);
|
|
149
|
+
if (n === Fail)
|
|
150
|
+
return Fail;
|
|
151
|
+
return Token.take(toCount(n)).step(state);
|
|
152
|
+
}, "lengthTake");
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Parses a length with `count`, then applies `parser` that many times
|
|
156
|
+
* (winnow's `length_repeat`, nom's `length_count`).
|
|
157
|
+
*
|
|
158
|
+
* @since 0.1.0
|
|
159
|
+
* @category length-prefixed
|
|
160
|
+
*/
|
|
161
|
+
export const lengthRepeat = (count, parser) => P.flatMap(count, (n) => P.repeat(parser, toCount(n)));
|
|
162
|
+
/**
|
|
163
|
+
* Parses a length with `count`, takes that many tokens, and applies
|
|
164
|
+
* `parser` to them (winnow's `length_and_then`, nom's `length_value`).
|
|
165
|
+
* `parser` does not need to consume the whole slice.
|
|
166
|
+
*
|
|
167
|
+
* @since 0.1.0
|
|
168
|
+
* @category length-prefixed
|
|
169
|
+
*/
|
|
170
|
+
export const lengthAndThen = (count, parser) => P.mapParser(lengthTake(count), P.complete(parser));
|
|
171
|
+
//# sourceMappingURL=Binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Binary.js","sourceRoot":"","sources":["../src/Binary.ts"],"names":[],"mappings":"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"}
|
package/dist/Bits.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Parser } from "./Parser.js";
|
|
2
|
+
declare const BitInputBrand: unique symbol;
|
|
3
|
+
/**
|
|
4
|
+
* The input type of bit-level parsers. A `Parser<A, E, R, BitInput>` can
|
|
5
|
+
* only be run inside {@link bits}.
|
|
6
|
+
*
|
|
7
|
+
* @since 0.1.0
|
|
8
|
+
* @category models
|
|
9
|
+
*/
|
|
10
|
+
export interface BitInput extends ReadonlyArray<never> {
|
|
11
|
+
readonly [BitInputBrand]: true;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Runs a bit-level parser on byte input (winnow's and nom's `bits`). After
|
|
15
|
+
* success, the input advances to the next byte boundary.
|
|
16
|
+
*
|
|
17
|
+
* @since 0.1.0
|
|
18
|
+
* @category combinators
|
|
19
|
+
*/
|
|
20
|
+
export declare const bits: <A, E, R>(self: Parser<A, E, R, BitInput>) => Parser<A, E, R, Uint8Array>;
|
|
21
|
+
/**
|
|
22
|
+
* Runs a byte-level parser from within a bit-level parser (winnow's and
|
|
23
|
+
* nom's `bytes`). The partly consumed byte, if any, is skipped first.
|
|
24
|
+
*
|
|
25
|
+
* @since 0.1.0
|
|
26
|
+
* @category combinators
|
|
27
|
+
*/
|
|
28
|
+
export declare const bytes: <A, E, R>(self: Parser<A, E, R, Uint8Array>) => Parser<A, E, R, BitInput>;
|
|
29
|
+
/**
|
|
30
|
+
* Takes `count` bits (at most 53) as an unsigned number (winnow's and nom's
|
|
31
|
+
* bit-level `take`).
|
|
32
|
+
*
|
|
33
|
+
* @since 0.1.0
|
|
34
|
+
* @category parsers
|
|
35
|
+
*/
|
|
36
|
+
export declare const take: (count: number) => Parser<number, never, never, BitInput>;
|
|
37
|
+
/**
|
|
38
|
+
* Takes `count` bits as an unsigned `bigint`.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category parsers
|
|
42
|
+
*/
|
|
43
|
+
export declare const takeBig: (count: number) => Parser<bigint, never, never, BitInput>;
|
|
44
|
+
/**
|
|
45
|
+
* Matches `count` bits equal to `pattern` (winnow's `pattern`, nom's bit
|
|
46
|
+
* `tag`).
|
|
47
|
+
*
|
|
48
|
+
* @since 0.1.0
|
|
49
|
+
* @category parsers
|
|
50
|
+
*/
|
|
51
|
+
export declare const pattern: (pattern: number, count: number) => Parser<number, never, never, BitInput>;
|
|
52
|
+
/**
|
|
53
|
+
* Takes one bit as a boolean (winnow's and nom's `bool`).
|
|
54
|
+
*
|
|
55
|
+
* @since 0.1.0
|
|
56
|
+
* @category parsers
|
|
57
|
+
*/
|
|
58
|
+
export declare const bool: Parser<boolean, never, never, BitInput>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=Bits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bits.d.ts","sourceRoot":"","sources":["../src/Bits.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,QAAS,SAAQ,aAAa,CAAC,KAAK,CAAC;IACpD,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA;CAC/B;AA8CD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAGzF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAG1F,CAAA;AAeD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAQzE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAc5E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,YAAa,MAAM,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAa7F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAG/C,CAAA"}
|
package/dist/Bits.js
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Fail, Failure } from "./Input.js";
|
|
2
|
+
import { make } from "./Parser.js";
|
|
3
|
+
const scale = (f, factor) => new Failure(factor < 1 ? Math.floor(f.offset * factor) : f.offset * factor, f.kind, f.expected, f.context, f.hasCause, f.cause, f.message, factor < 1 ? Math.ceil(f.needed * factor) : f.needed * factor);
|
|
4
|
+
/**
|
|
5
|
+
* Runs `step` with offsets measured in different units (bits vs bytes),
|
|
6
|
+
* converting failure offsets back to the outer units afterwards.
|
|
7
|
+
*/
|
|
8
|
+
const inUnits = (state, factor, step) => {
|
|
9
|
+
const end = state.end;
|
|
10
|
+
const deepest = state.deepest;
|
|
11
|
+
state.deepest = undefined;
|
|
12
|
+
state.pos = factor > 1 ? state.pos * factor : Math.ceil(state.pos * factor);
|
|
13
|
+
state.end = end * factor;
|
|
14
|
+
const a = step(state);
|
|
15
|
+
state.end = end;
|
|
16
|
+
const inner = state.deepest;
|
|
17
|
+
state.deepest = deepest;
|
|
18
|
+
if (a === Fail) {
|
|
19
|
+
state.pos = factor > 1 ? Math.floor(state.pos / factor) : state.pos / factor;
|
|
20
|
+
const f = state.failure;
|
|
21
|
+
state.failure = scale(f, 1 / factor);
|
|
22
|
+
if (inner !== undefined) {
|
|
23
|
+
const d = inner === f ? state.failure : scale(inner, 1 / factor);
|
|
24
|
+
if (deepest === undefined || d.offset >= deepest.offset)
|
|
25
|
+
state.deepest = d;
|
|
26
|
+
}
|
|
27
|
+
return Fail;
|
|
28
|
+
}
|
|
29
|
+
state.pos = factor > 1 ? Math.ceil(state.pos / factor) : state.pos / factor;
|
|
30
|
+
if (inner !== undefined) {
|
|
31
|
+
const d = scale(inner, 1 / factor);
|
|
32
|
+
if (deepest === undefined || d.offset >= deepest.offset)
|
|
33
|
+
state.deepest = d;
|
|
34
|
+
}
|
|
35
|
+
return a;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Runs a bit-level parser on byte input (winnow's and nom's `bits`). After
|
|
39
|
+
* success, the input advances to the next byte boundary.
|
|
40
|
+
*
|
|
41
|
+
* @since 0.1.0
|
|
42
|
+
* @category combinators
|
|
43
|
+
*/
|
|
44
|
+
export const bits = (self) => {
|
|
45
|
+
const step = self.step;
|
|
46
|
+
return make((state) => inUnits(state, 8, step), "bits");
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Runs a byte-level parser from within a bit-level parser (winnow's and
|
|
50
|
+
* nom's `bytes`). The partly consumed byte, if any, is skipped first.
|
|
51
|
+
*
|
|
52
|
+
* @since 0.1.0
|
|
53
|
+
* @category combinators
|
|
54
|
+
*/
|
|
55
|
+
export const bytes = (self) => {
|
|
56
|
+
const step = self.step;
|
|
57
|
+
return make((state) => inUnits(state, 1 / 8, step), "bytes");
|
|
58
|
+
};
|
|
59
|
+
const readBits = (state, count) => {
|
|
60
|
+
const input = state.input;
|
|
61
|
+
let pos = state.pos;
|
|
62
|
+
let value = 0;
|
|
63
|
+
for (let i = 0; i < count; i++) {
|
|
64
|
+
const byte = input[pos >>> 3];
|
|
65
|
+
value = value * 2 + ((byte >>> (7 - (pos & 7))) & 1);
|
|
66
|
+
pos++;
|
|
67
|
+
}
|
|
68
|
+
state.pos = pos;
|
|
69
|
+
return value;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Takes `count` bits (at most 53) as an unsigned number (winnow's and nom's
|
|
73
|
+
* bit-level `take`).
|
|
74
|
+
*
|
|
75
|
+
* @since 0.1.0
|
|
76
|
+
* @category parsers
|
|
77
|
+
*/
|
|
78
|
+
export const take = (count) => {
|
|
79
|
+
if (count > 53)
|
|
80
|
+
throw new RangeError("Bits.take: use Bits.takeBig for more than 53 bits");
|
|
81
|
+
const expected = [`${count} bits`];
|
|
82
|
+
return make((state) => {
|
|
83
|
+
const avail = state.end - state.pos;
|
|
84
|
+
if (avail < count)
|
|
85
|
+
return state.eoi("Bits", expected, count - avail);
|
|
86
|
+
return readBits(state, count);
|
|
87
|
+
}, "take");
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Takes `count` bits as an unsigned `bigint`.
|
|
91
|
+
*
|
|
92
|
+
* @since 0.1.0
|
|
93
|
+
* @category parsers
|
|
94
|
+
*/
|
|
95
|
+
export const takeBig = (count) => {
|
|
96
|
+
const expected = [`${count} bits`];
|
|
97
|
+
return make((state) => {
|
|
98
|
+
const avail = state.end - state.pos;
|
|
99
|
+
if (avail < count)
|
|
100
|
+
return state.eoi("Bits", expected, count - avail);
|
|
101
|
+
let value = 0n;
|
|
102
|
+
let remaining = count;
|
|
103
|
+
while (remaining > 0) {
|
|
104
|
+
const n = Math.min(remaining, 32);
|
|
105
|
+
value = (value << BigInt(n)) | BigInt(readBits(state, n));
|
|
106
|
+
remaining -= n;
|
|
107
|
+
}
|
|
108
|
+
return value;
|
|
109
|
+
}, "takeBig");
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Matches `count` bits equal to `pattern` (winnow's `pattern`, nom's bit
|
|
113
|
+
* `tag`).
|
|
114
|
+
*
|
|
115
|
+
* @since 0.1.0
|
|
116
|
+
* @category parsers
|
|
117
|
+
*/
|
|
118
|
+
export const pattern = (pattern, count) => {
|
|
119
|
+
const expected = [`bit pattern ${pattern.toString(2).padStart(count, "0")}`];
|
|
120
|
+
return make((state) => {
|
|
121
|
+
const start = state.pos;
|
|
122
|
+
const avail = state.end - start;
|
|
123
|
+
if (avail < count)
|
|
124
|
+
return state.eoi("Bits", expected, count - avail);
|
|
125
|
+
const value = readBits(state, count);
|
|
126
|
+
if (value !== pattern) {
|
|
127
|
+
state.pos = start;
|
|
128
|
+
return state.backtrack("Bits", expected);
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
}, "pattern");
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Takes one bit as a boolean (winnow's and nom's `bool`).
|
|
135
|
+
*
|
|
136
|
+
* @since 0.1.0
|
|
137
|
+
* @category parsers
|
|
138
|
+
*/
|
|
139
|
+
export const bool = make((state) => {
|
|
140
|
+
if (state.pos >= state.end)
|
|
141
|
+
return state.eoi("Bits", ["1 bit"], 1);
|
|
142
|
+
return readBits(state, 1) === 1;
|
|
143
|
+
}, "bool");
|
|
144
|
+
//# sourceMappingURL=Bits.js.map
|
package/dist/Bits.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bits.js","sourceRoot":"","sources":["../src/Bits.ts"],"names":[],"mappings":"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"}
|