effect-grammar 0.3.0 → 0.5.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/README.md +168 -229
- package/dist/binary.d.ts +64 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +246 -0
- package/dist/binary.js.map +1 -0
- package/dist/codec.d.ts +17 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +14 -0
- package/dist/codec.js.map +1 -0
- package/dist/combinators.d.ts +112 -6
- package/dist/combinators.d.ts.map +1 -1
- package/dist/combinators.js +218 -28
- package/dist/combinators.js.map +1 -1
- package/dist/compile.d.ts +36 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +228 -0
- package/dist/compile.js.map +1 -0
- package/dist/core.d.ts +34 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +51 -1
- package/dist/core.js.map +1 -1
- package/dist/env.d.ts +5 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +20 -1
- package/dist/env.js.map +1 -1
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +40 -4
- package/dist/errors.js.map +1 -1
- package/dist/gen.d.ts.map +1 -1
- package/dist/gen.js +5 -7
- package/dist/gen.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts +10 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +81 -19
- package/dist/parse.js.map +1 -1
- package/dist/pattern.d.ts +2 -1
- package/dist/pattern.d.ts.map +1 -1
- package/dist/pattern.js +46 -2
- package/dist/pattern.js.map +1 -1
- package/dist/print.d.ts +8 -0
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +136 -18
- package/dist/print.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +33 -6
- package/dist/render.js.map +1 -1
- package/dist/schema.d.ts +8 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -13
- package/dist/schema.js.map +1 -1
- package/dist/testing.d.ts +18 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +72 -0
- package/dist/testing.js.map +1 -0
- package/package.json +9 -3
- package/dist/grammar.d.ts +0 -8
- package/dist/grammar.d.ts.map +0 -1
- package/dist/grammar.js +0 -8
- package/dist/grammar.js.map +0 -1
- package/dist/recovery.d.ts +0 -10
- package/dist/recovery.d.ts.map +0 -1
- package/dist/recovery.js +0 -296
- package/dist/recovery.js.map +0 -1
package/dist/binary.js
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { Function as F, Predicate, Result, Schema } from "effect";
|
|
2
|
+
import { codecFrom } from "./codec.js";
|
|
3
|
+
import { iso, partialIso, prefixedBy, regex, takeBytes, withKeys } from "./combinators.js";
|
|
4
|
+
import { silent, } from "./core.js";
|
|
5
|
+
import { isCount, nonByte, toBytes } from "./env.js";
|
|
6
|
+
import { describeExpected, hex, PrintError } from "./errors.js";
|
|
7
|
+
import { parse as parseText } from "./parse.js";
|
|
8
|
+
import { printCheckedUnknown, printUnknown } from "./print.js";
|
|
9
|
+
export { hex } from "./errors.js";
|
|
10
|
+
const isWidth = (size) => Number.isInteger(size) && size >= 1 && size <= 53;
|
|
11
|
+
const assertWidth = (name, size) => {
|
|
12
|
+
if (!isWidth(size)) {
|
|
13
|
+
throw new RangeError(`${name}: expected a width of 1 to 53 bits, got ${size}`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const Bit = Schema.Literals([0, 1]);
|
|
17
|
+
export const Uint = (size) => {
|
|
18
|
+
assertWidth("Uint", size);
|
|
19
|
+
return Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 2 ** size - 1 }));
|
|
20
|
+
};
|
|
21
|
+
export const Int = (size) => {
|
|
22
|
+
assertWidth("Int", size);
|
|
23
|
+
return Schema.Int.check(Schema.isBetween({ minimum: -(2 ** (size - 1)), maximum: 2 ** (size - 1) - 1 }));
|
|
24
|
+
};
|
|
25
|
+
export const Uint8 = Uint(8);
|
|
26
|
+
export const Uint16 = Uint(16);
|
|
27
|
+
export const Uint32 = Uint(32);
|
|
28
|
+
export const Int8 = Int(8);
|
|
29
|
+
export const Int16 = Int(16);
|
|
30
|
+
export const Int32 = Int(32);
|
|
31
|
+
export const Uint64 = Schema.BigInt.check(Schema.isBetweenBigInt({ minimum: 0n, maximum: 2n ** 64n - 1n }));
|
|
32
|
+
export const Int64 = Schema.BigInt.check(Schema.isBetweenBigInt({ minimum: -(2n ** 63n), maximum: 2n ** 63n - 1n }));
|
|
33
|
+
export class ParseError extends Schema.TaggedError()("BinaryParseError", {
|
|
34
|
+
offset: Schema.Finite,
|
|
35
|
+
expected: Schema.Array(Schema.String),
|
|
36
|
+
found: Schema.UndefinedOr(Schema.Finite),
|
|
37
|
+
}) {
|
|
38
|
+
get message() {
|
|
39
|
+
const found = this.found === undefined ? "end of input" : `0x${hex(Uint8Array.of(this.found))}`;
|
|
40
|
+
return `byte ${this.offset}: expected ${describeExpected(this.expected)}, found ${found}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const toText = (bytes) => {
|
|
44
|
+
let binary = "";
|
|
45
|
+
for (const byte of bytes)
|
|
46
|
+
binary += String.fromCharCode(byte);
|
|
47
|
+
return binary;
|
|
48
|
+
};
|
|
49
|
+
const word = (size, name, littleEndian = false) => takeBytes(size, name).pipe(iso({
|
|
50
|
+
decode: (binary) => {
|
|
51
|
+
const bytes = littleEndian ? toBytes(binary).reverse() : toBytes(binary);
|
|
52
|
+
return bytes.reduce((value, byte) => (value << 8n) | BigInt(byte), 0n);
|
|
53
|
+
},
|
|
54
|
+
// A negative value is written as its two's complement.
|
|
55
|
+
encode: (value) => {
|
|
56
|
+
const bytes = Uint8Array.from({ length: size }, (_, index) => Number(BigInt.asUintN(8, value >> BigInt(8 * (size - 1 - index)))));
|
|
57
|
+
return toText(littleEndian ? bytes.reverse() : bytes);
|
|
58
|
+
},
|
|
59
|
+
}));
|
|
60
|
+
const integer = (size, name, schema, decode, littleEndian) => word(size, name, littleEndian).pipe(iso({ name, decode, encode: BigInt, is: Schema.is(schema) }));
|
|
61
|
+
const uint = (size, name, littleEndian = false) => integer(size, name, Uint(8 * size), Number, littleEndian);
|
|
62
|
+
const int = (size, name, littleEndian = false) => integer(size, name, Int(8 * size), (value) => Number(BigInt.asIntN(8 * size, value)), littleEndian);
|
|
63
|
+
const uint64Of = (name, littleEndian = false) => integer(8, name, Uint64, F.identity, littleEndian);
|
|
64
|
+
const int64Of = (name, littleEndian = false) => integer(8, name, Int64, (value) => BigInt.asIntN(64, value), littleEndian);
|
|
65
|
+
// Floats are read and written through one shared view, so a value costs no allocation.
|
|
66
|
+
const scratch = new DataView(new ArrayBuffer(8));
|
|
67
|
+
/**
|
|
68
|
+
* Every NaN prints as the quiet NaN the engine writes, so a payload or a
|
|
69
|
+
* signalling NaN in the input does not survive parsing and printing again.
|
|
70
|
+
*/
|
|
71
|
+
const float = (size, name, littleEndian = false) => takeBytes(size, name).pipe(iso({
|
|
72
|
+
name,
|
|
73
|
+
// A float32 holds only the numbers that survive rounding to single precision.
|
|
74
|
+
is: (value) => Predicate.isNumber(value) && (size === 8 || Object.is(Math.fround(value), value)),
|
|
75
|
+
decode: (binary) => {
|
|
76
|
+
for (let index = 0; index < size; index++)
|
|
77
|
+
scratch.setUint8(index, binary.charCodeAt(index));
|
|
78
|
+
return size === 4
|
|
79
|
+
? scratch.getFloat32(0, littleEndian)
|
|
80
|
+
: scratch.getFloat64(0, littleEndian);
|
|
81
|
+
},
|
|
82
|
+
encode: (value) => {
|
|
83
|
+
if (size === 4)
|
|
84
|
+
scratch.setFloat32(0, value, littleEndian);
|
|
85
|
+
else
|
|
86
|
+
scratch.setFloat64(0, value, littleEndian);
|
|
87
|
+
let binary = "";
|
|
88
|
+
for (let index = 0; index < size; index++) {
|
|
89
|
+
binary += String.fromCharCode(scratch.getUint8(index));
|
|
90
|
+
}
|
|
91
|
+
return binary;
|
|
92
|
+
},
|
|
93
|
+
}));
|
|
94
|
+
export const uint8 = uint(1, "uint8");
|
|
95
|
+
export const uint16 = uint(2, "uint16");
|
|
96
|
+
export const uint32 = uint(4, "uint32");
|
|
97
|
+
export const uint64 = uint64Of("uint64");
|
|
98
|
+
export const uint16le = uint(2, "uint16le", true);
|
|
99
|
+
export const uint32le = uint(4, "uint32le", true);
|
|
100
|
+
export const uint64le = uint64Of("uint64le", true);
|
|
101
|
+
export const int8 = int(1, "int8");
|
|
102
|
+
export const int16 = int(2, "int16");
|
|
103
|
+
export const int32 = int(4, "int32");
|
|
104
|
+
export const int64 = int64Of("int64");
|
|
105
|
+
export const int16le = int(2, "int16le", true);
|
|
106
|
+
export const int32le = int(4, "int32le", true);
|
|
107
|
+
export const int64le = int64Of("int64le", true);
|
|
108
|
+
export const float32 = float(4, "float32");
|
|
109
|
+
export const float64 = float(8, "float64");
|
|
110
|
+
export const float32le = float(4, "float32le", true);
|
|
111
|
+
export const float64le = float(8, "float64le", true);
|
|
112
|
+
// No length cap: a value too wide for a number is left for decoding to reject by range.
|
|
113
|
+
const leb128 = (name) => regex(/[\x80-\xff]*[\0-\x7f]/, name);
|
|
114
|
+
/** The encoded number, or a value outside the safe integer range when it is too large to hold. */
|
|
115
|
+
const fromLeb128 = (binary) => {
|
|
116
|
+
let value = 0;
|
|
117
|
+
for (let index = binary.length - 1; index >= 0; index--) {
|
|
118
|
+
value = value * 128 + (binary.charCodeAt(index) & 0x7f);
|
|
119
|
+
}
|
|
120
|
+
return value;
|
|
121
|
+
};
|
|
122
|
+
const toLeb128 = (value) => {
|
|
123
|
+
let binary = "";
|
|
124
|
+
let rest = value;
|
|
125
|
+
while (rest >= 128) {
|
|
126
|
+
binary += String.fromCharCode((rest % 128) | 0x80);
|
|
127
|
+
rest = Math.floor(rest / 128);
|
|
128
|
+
}
|
|
129
|
+
return binary + String.fromCharCode(rest);
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Unsigned LEB128 within the safe integer range. Parsing accepts padded
|
|
133
|
+
* encodings of any length; printing writes the shortest one.
|
|
134
|
+
*/
|
|
135
|
+
export const varuint = leb128("varuint").pipe(partialIso({
|
|
136
|
+
name: "varuint",
|
|
137
|
+
decode: (binary) => {
|
|
138
|
+
const value = fromLeb128(binary);
|
|
139
|
+
return Number.isSafeInteger(value)
|
|
140
|
+
? Result.succeed(value)
|
|
141
|
+
: Result.fail({ message: "a varuint within the safe integer range" });
|
|
142
|
+
},
|
|
143
|
+
encode: (value) => isCount(value)
|
|
144
|
+
? Result.succeed(toLeb128(value))
|
|
145
|
+
: Result.fail({ message: "expected a non-negative safe integer" }),
|
|
146
|
+
}));
|
|
147
|
+
/** Zigzag-encoded LEB128, as in protobuf `sint64`, for integers from -(2 ** 52) to 2 ** 52 - 1. */
|
|
148
|
+
export const varint = leb128("varint").pipe(partialIso({
|
|
149
|
+
name: "varint",
|
|
150
|
+
decode: (binary) => {
|
|
151
|
+
const value = fromLeb128(binary);
|
|
152
|
+
return Number.isSafeInteger(value)
|
|
153
|
+
? Result.succeed(value % 2 === 0 ? value / 2 : -(value + 1) / 2)
|
|
154
|
+
: Result.fail({ message: "a varint from -(2 ** 52) to 2 ** 52 - 1" });
|
|
155
|
+
},
|
|
156
|
+
encode: (value) => Number.isSafeInteger(value) && value >= -(2 ** 52) && value < 2 ** 52
|
|
157
|
+
? Result.succeed(toLeb128(value < 0 ? -2 * value - 1 : 2 * value))
|
|
158
|
+
: Result.fail({ message: "expected an integer from -(2 ** 52) to 2 ** 52 - 1" }),
|
|
159
|
+
}));
|
|
160
|
+
export const bits = (layout) => {
|
|
161
|
+
const fields = Object.entries(layout);
|
|
162
|
+
const name = fields.map(([key, size]) => `${key}:${size}`).join(" ");
|
|
163
|
+
const width = fields.reduce((total, [, size]) => total + size, 0);
|
|
164
|
+
if (width % 8 !== 0 || fields.some(([key, size]) => /^\d+$/.test(key) || !isWidth(size))) {
|
|
165
|
+
throw new RangeError(`bits: expected non-integer field names, widths of 1 to 53 bits, and a whole number of bytes, got ${name}`);
|
|
166
|
+
}
|
|
167
|
+
let shift = BigInt(width);
|
|
168
|
+
const slots = fields.map(([key, size]) => ({
|
|
169
|
+
key,
|
|
170
|
+
size,
|
|
171
|
+
shift: (shift -= BigInt(size)),
|
|
172
|
+
fits: Schema.is(Uint(size)),
|
|
173
|
+
}));
|
|
174
|
+
const grammar = word(width / 8, name).pipe(iso({
|
|
175
|
+
name,
|
|
176
|
+
decode: (value) =>
|
|
177
|
+
// SAFETY: slots holds every key of the layout, each within its declared width.
|
|
178
|
+
Object.fromEntries(slots.map(({ key, size, shift }) => [key, Number(BigInt.asUintN(size, value >> shift))])),
|
|
179
|
+
encode: (value) => {
|
|
180
|
+
const extra = Reflect.ownKeys(value).find((key) => !Object.hasOwn(layout, key));
|
|
181
|
+
if (extra !== undefined)
|
|
182
|
+
throw new RangeError(`unexpected field ${String(extra)}`);
|
|
183
|
+
return slots.reduce((result, { key, size, shift, fits }) => {
|
|
184
|
+
const field = value[key];
|
|
185
|
+
if (!fits(field)) {
|
|
186
|
+
throw new RangeError(`${key} must be an integer from 0 to ${2 ** size - 1}`);
|
|
187
|
+
}
|
|
188
|
+
return result | (BigInt(field) << shift);
|
|
189
|
+
}, 0n);
|
|
190
|
+
},
|
|
191
|
+
}));
|
|
192
|
+
return withKeys(grammar, Object.keys(layout));
|
|
193
|
+
};
|
|
194
|
+
const asBytes = iso({
|
|
195
|
+
name: "bytes",
|
|
196
|
+
is: Predicate.isUint8Array,
|
|
197
|
+
decode: toBytes,
|
|
198
|
+
encode: toText,
|
|
199
|
+
});
|
|
200
|
+
export const bytes = (count) => takeBytes(count).pipe(asBytes);
|
|
201
|
+
export const lengthPrefixed = (length) => prefixedBy(length, takeBytes).pipe(asBytes);
|
|
202
|
+
export const literal = (...values) => {
|
|
203
|
+
if (values.some((value) => !Schema.is(Uint8)(value))) {
|
|
204
|
+
throw new RangeError(`literal: expected bytes, got ${values.join(", ")}`);
|
|
205
|
+
}
|
|
206
|
+
return silent({
|
|
207
|
+
_tag: "Literal",
|
|
208
|
+
value: toText(Uint8Array.from(values)),
|
|
209
|
+
name: values.map((value) => `0x${hex(Uint8Array.of(value))}`).join(" "),
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
export const ascii = iso({
|
|
213
|
+
name: "ascii",
|
|
214
|
+
is: (value) => Predicate.isString(value) && /^[\0-\x7f]*$/.test(value),
|
|
215
|
+
decode: toText,
|
|
216
|
+
encode: toBytes,
|
|
217
|
+
});
|
|
218
|
+
export const utf8 = partialIso({
|
|
219
|
+
name: "utf8",
|
|
220
|
+
decode: (value) => {
|
|
221
|
+
try {
|
|
222
|
+
return Result.succeed(new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(value));
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return Result.fail({ message: "valid UTF-8" });
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
encode: (value) => value.isWellFormed()
|
|
229
|
+
? Result.succeed(new TextEncoder().encode(value))
|
|
230
|
+
: Result.fail({ message: "expected a string without lone surrogates" }),
|
|
231
|
+
});
|
|
232
|
+
export const parse = (grammar, input) => Result.mapError(parseText(grammar, toText(input)), ({ pos, expected, found }) => new ParseError({ offset: pos, expected, found: found?.charCodeAt(0) }));
|
|
233
|
+
const printBytes = (printer) => (grammar, value) => Result.flatMap(printer(grammar, value), (binary) => nonByte.test(binary)
|
|
234
|
+
? Result.fail(new PrintError({
|
|
235
|
+
issue: { _tag: "InvalidValue", expected: "only bytes to be printed", actual: value },
|
|
236
|
+
}))
|
|
237
|
+
: Result.succeed(toBytes(binary)));
|
|
238
|
+
const printUnchecked = printBytes(printUnknown);
|
|
239
|
+
const printVerified = printBytes(printCheckedUnknown);
|
|
240
|
+
export const print = printUnchecked;
|
|
241
|
+
export const printChecked = printVerified;
|
|
242
|
+
export const codec = (grammar, target, options) => {
|
|
243
|
+
const printer = options?.roundTrip === "off" ? printUnchecked : printVerified;
|
|
244
|
+
return codecFrom(Schema.Uint8Array, target, grammar, options?.identifier, (input) => parse(grammar, input), (value) => printer(grammar, value));
|
|
245
|
+
};
|
|
246
|
+
//# 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/codec.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Result, Schema } from "effect";
|
|
2
|
+
import type { GrammarInternal } from "./core.ts";
|
|
3
|
+
import { PrintError } from "./errors.ts";
|
|
4
|
+
export interface CodecOptions {
|
|
5
|
+
readonly identifier?: string;
|
|
6
|
+
/**
|
|
7
|
+
* - `verify` (default): encoding prints, then parses the output back and
|
|
8
|
+
* fails if it decodes to a different value, so a codec never encodes a
|
|
9
|
+
* valid value into text that decodes as another. Reparses on every encode.
|
|
10
|
+
* - `off`: encoding prints without the check.
|
|
11
|
+
*/
|
|
12
|
+
readonly roundTrip?: "verify" | "off";
|
|
13
|
+
}
|
|
14
|
+
export declare const codecFrom: <I, S extends Schema.Top>(source: Schema.Codec<I>, target: S, grammar: GrammarInternal, identifier: string | undefined, parse: (input: I) => Result.Result<S["Encoded"], {
|
|
15
|
+
readonly message: string;
|
|
16
|
+
}>, print: (value: S["Encoded"]) => Result.Result<I, PrintError>) => Schema.decodeTo<S, Schema.Codec<I, I, never, never>, never, never>;
|
|
17
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,EAAqC,MAAM,QAAQ,CAAA;AAEvF,OAAO,KAAK,EAAE,eAAe,EAAS,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAUxC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACtC;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,UACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UACf,CAAC,WACA,eAAe,cACZ,MAAM,GAAG,SAAS,SACvB,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,SACvE,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,uEAiB3D,CAAA"}
|
package/dist/codec.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Effect, Schema, SchemaIssue, SchemaTransformation } from "effect";
|
|
2
|
+
import { PrintError } from "./errors.js";
|
|
3
|
+
import { render } from "./render.js";
|
|
4
|
+
const printIssueToSchema = (actual, issue) => {
|
|
5
|
+
if (issue._tag === "AtPath") {
|
|
6
|
+
return new SchemaIssue.Pointer([issue.path], printIssueToSchema(actual, issue.issue));
|
|
7
|
+
}
|
|
8
|
+
return new SchemaIssue.InvalidValue({ message: PrintError.format(issue) }, actual);
|
|
9
|
+
};
|
|
10
|
+
export const codecFrom = (source, target, grammar, identifier, parse, print) => source.pipe(Schema.decodeTo(target, SchemaTransformation.transformOrFail({
|
|
11
|
+
decode: (input) => Effect.fromResult(parse(input)).pipe(Effect.mapError(({ message }) => new SchemaIssue.InvalidValue({ message }, input))),
|
|
12
|
+
encode: (value) => Effect.fromResult(print(value)).pipe(Effect.mapError((error) => printIssueToSchema(value, error.issue))),
|
|
13
|
+
})), Schema.annotate({ identifier, description: render(grammar) }));
|
|
14
|
+
//# sourceMappingURL=codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAIvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,kBAAkB,GAAG,CAAC,MAAa,EAAE,KAAiB,EAAqB,EAAE;IACjF,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACvF,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;AACpF,CAAC,CAAA;AAaD,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAAuB,EACvB,MAAS,EACT,OAAwB,EACxB,UAA8B,EAC9B,KAA8E,EAC9E,KAA4D,EAC5D,EAAE,CACF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CACb,MAAM,EACN,oBAAoB,CAAC,eAAe,CAAkB;IACpD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CACnF;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CACnE;CACJ,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAC9D,CAAA"}
|
package/dist/combinators.d.ts
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
|
-
import { Result, Schema } from "effect";
|
|
1
|
+
import { Result, Schema, type Types } from "effect";
|
|
2
2
|
import { type Grammar, type GrammarInternal, type GrammarIssue, type MatchKey, type Ref, type Silent, type Type } from "./core.ts";
|
|
3
3
|
export { gen, type GenGrammar, get, seq } from "./gen.ts";
|
|
4
4
|
export declare const literal: (value: string) => Silent;
|
|
5
5
|
export declare const empty: Silent;
|
|
6
|
+
/**
|
|
7
|
+
* Match at the parser's current cursor using JavaScript `RegExp` semantics.
|
|
8
|
+
* Parsing uses a fresh sticky matcher against the original full input; printing
|
|
9
|
+
* requires the supplied string to match in full. `g`, `y`, and the caller's
|
|
10
|
+
* `lastIndex` are ignored, and the caller's expression is never mutated.
|
|
11
|
+
*/
|
|
6
12
|
export declare const regex: (expression: RegExp, name: string) => Grammar<string>;
|
|
7
13
|
type PreserveGrammar<G extends GrammarInternal> = G extends Silent ? Silent : G extends Grammar<infer A> ? Grammar<A> : never;
|
|
8
14
|
type OptionalGrammar<G extends GrammarInternal> = G extends Silent ? Silent : G extends Grammar<infer A> ? Grammar<A | undefined> : never;
|
|
9
15
|
export declare function between(open: Silent | string, close: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
10
16
|
export declare function between(open: Silent | string, inner: Silent, close: Silent | string): Silent;
|
|
11
17
|
export declare function between<A>(open: Silent | string, inner: Grammar<A>, close: Silent | string): Grammar<A>;
|
|
12
|
-
export declare const wrap: typeof between;
|
|
13
18
|
export declare function prefix(open: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
14
19
|
export declare function prefix(open: Silent | string, inner: Silent): Silent;
|
|
15
20
|
export declare function prefix<A>(open: Silent | string, inner: Grammar<A>): Grammar<A>;
|
|
16
21
|
export declare function suffix(close: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
17
22
|
export declare function suffix(inner: Silent, close: Silent | string): Silent;
|
|
18
23
|
export declare function suffix<A>(inner: Grammar<A>, close: Silent | string): Grammar<A>;
|
|
24
|
+
/**
|
|
25
|
+
* Ordered alternatives. Parsing tries each branch in order and keeps the
|
|
26
|
+
* first that matches. Printing keeps the first branch whose printer accepts
|
|
27
|
+
* the value; use `checkedChoice` to keep the first branch whose text also
|
|
28
|
+
* parses back.
|
|
29
|
+
*/
|
|
19
30
|
export declare const choice: <const Grammars extends readonly [GrammarInternal, ...Array<GrammarInternal>]>(...options: Grammars) => Grammar<Type<Grammars[number]>>;
|
|
31
|
+
/**
|
|
32
|
+
* {@link choice} whose printer selects the first branch that reads back to an
|
|
33
|
+
* equal value. Each checked choice reparses its candidate output; nesting can
|
|
34
|
+
* multiply that work, so keep it off hot paths.
|
|
35
|
+
*/
|
|
36
|
+
export declare const checkedChoice: <const Grammars extends readonly [GrammarInternal, ...Array<GrammarInternal>]>(...options: Grammars) => Grammar<Type<Grammars[number]>>;
|
|
20
37
|
export declare function optional(): <G extends GrammarInternal>(inner: G) => OptionalGrammar<G>;
|
|
21
38
|
export declare function optional(inner: Silent): Silent;
|
|
22
39
|
export declare function optional<A>(inner: Grammar<A>): Grammar<A | undefined>;
|
|
@@ -24,10 +41,12 @@ export interface RepeatOptions {
|
|
|
24
41
|
readonly min?: number;
|
|
25
42
|
readonly max?: number;
|
|
26
43
|
}
|
|
44
|
+
/** Repeat an item within bounds. Each successful parse must consume input. */
|
|
27
45
|
export declare const many: {
|
|
28
46
|
<A>(inner: Grammar<A>, options?: RepeatOptions): Grammar<ReadonlyArray<A>>;
|
|
29
47
|
(options?: RepeatOptions): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
30
48
|
};
|
|
49
|
+
/** Repeat an item with a silent separator. Each successful item parse must consume input. */
|
|
31
50
|
export declare const sepBy: {
|
|
32
51
|
<A>(inner: Grammar<A>, separator: Silent | string, options?: RepeatOptions): Grammar<ReadonlyArray<A>>;
|
|
33
52
|
(separator: Silent | string, options?: RepeatOptions): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
@@ -38,10 +57,12 @@ export declare const match: <K extends string, const Cases extends Readonly<Reco
|
|
|
38
57
|
type EntryOutput<Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>> = Type<Entries[number][1]>;
|
|
39
58
|
type CompleteEntries<K extends MatchKey, Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>> = Exclude<K, Entries[number][0]> extends never ? Entries : never;
|
|
40
59
|
export declare const matchValue: <K extends MatchKey, const Entries extends ReadonlyArray<readonly [K, GrammarInternal]>>(scrutinee: Ref<K>, entries: CompleteEntries<K, Entries>) => Grammar<EntryOutput<Entries>>;
|
|
41
|
-
export declare const take: (count: Ref<number>) => Grammar<string>;
|
|
60
|
+
export declare const take: (count: Ref<number> | number) => Grammar<string>;
|
|
61
|
+
export declare const takeBytes: (count: Ref<number> | number, name?: string) => Grammar<string>;
|
|
62
|
+
/** Repeat an item a constant or bound number of times. Each successful parse must consume input. */
|
|
42
63
|
export declare const repeat: {
|
|
43
|
-
<A>(inner: Grammar<A>, count: Ref<number>): Grammar<ReadonlyArray<A>>;
|
|
44
|
-
(count: Ref<number>): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
64
|
+
<A>(inner: Grammar<A>, count: Ref<number> | number): Grammar<ReadonlyArray<A>>;
|
|
65
|
+
(count: Ref<number> | number): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
45
66
|
};
|
|
46
67
|
export interface TransformOptions<A, B> {
|
|
47
68
|
readonly decode: (a: A) => B;
|
|
@@ -49,6 +70,11 @@ export interface TransformOptions<A, B> {
|
|
|
49
70
|
readonly is?: (value: B) => boolean;
|
|
50
71
|
readonly name?: string;
|
|
51
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Map a grammar's value with a pair of functions. No law is claimed: the
|
|
75
|
+
* two directions need not be inverse, so a value may print as text that
|
|
76
|
+
* parses back to something else. Use `iso` when you mean to claim inverses.
|
|
77
|
+
*/
|
|
52
78
|
export declare const transform: {
|
|
53
79
|
<A, B>(options: TransformOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
54
80
|
<A, B>(inner: Grammar<A>, options: TransformOptions<A, B>): Grammar<B>;
|
|
@@ -59,10 +85,31 @@ export interface TransformOrFailOptions<A, B> {
|
|
|
59
85
|
readonly is?: (value: B) => boolean;
|
|
60
86
|
readonly name?: string;
|
|
61
87
|
}
|
|
88
|
+
/** {@link transform} with directions that return a `Result`. No law is claimed. */
|
|
62
89
|
export declare const transformOrFail: {
|
|
63
90
|
<A, B>(options: TransformOrFailOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
64
91
|
<A, B>(inner: Grammar<A>, options: TransformOrFailOptions<A, B>): Grammar<B>;
|
|
65
92
|
};
|
|
93
|
+
/**
|
|
94
|
+
* Like {@link transform}, but the author claims the two directions are
|
|
95
|
+
* inverse. The claim is recorded, not proved; `Grammar.auditFidelity` reports
|
|
96
|
+
* only the transforms that make no such claim.
|
|
97
|
+
*/
|
|
98
|
+
export declare const iso: {
|
|
99
|
+
<A, B>(options: TransformOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
100
|
+
<A, B>(inner: Grammar<A>, options: TransformOptions<A, B>): Grammar<B>;
|
|
101
|
+
};
|
|
102
|
+
/** An {@link iso} whose two directions may each fail; they must agree where both succeed. */
|
|
103
|
+
export declare const partialIso: {
|
|
104
|
+
<A, B>(options: TransformOrFailOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
105
|
+
<A, B>(inner: Grammar<A>, options: TransformOrFailOptions<A, B>): Grammar<B>;
|
|
106
|
+
};
|
|
107
|
+
export declare const filter: {
|
|
108
|
+
<A, B extends A>(refinement: (value: A) => value is B, name: string): (inner: Grammar<A>) => Grammar<B>;
|
|
109
|
+
<A>(predicate: (value: A) => boolean, name: string): (inner: Grammar<A>) => Grammar<A>;
|
|
110
|
+
<A, B extends A>(inner: Grammar<A>, refinement: (value: A) => value is B, name: string): Grammar<B>;
|
|
111
|
+
<A>(inner: Grammar<A>, predicate: (value: A) => boolean, name: string): Grammar<A>;
|
|
112
|
+
};
|
|
66
113
|
export interface DecodeToOptions<A, T> extends Omit<TransformOptions<A, T>, "is"> {
|
|
67
114
|
readonly is?: ((value: T) => boolean) | undefined;
|
|
68
115
|
}
|
|
@@ -71,6 +118,12 @@ export declare const as: {
|
|
|
71
118
|
<const V>(value: V): (inner: Silent) => Grammar<V>;
|
|
72
119
|
<const V>(inner: Silent, value: V): Grammar<V>;
|
|
73
120
|
};
|
|
121
|
+
/**
|
|
122
|
+
* String alternatives whose value is the matched string. Longer strings are
|
|
123
|
+
* tried first whatever order they are listed in, so a string is never shadowed
|
|
124
|
+
* by one of its own prefixes; strings of equal length keep their listed order.
|
|
125
|
+
*/
|
|
126
|
+
export declare const literals: <const Values extends readonly [string, ...Array<string>]>(...values: Values) => Grammar<Values[number]>;
|
|
74
127
|
export declare const flag: (value: Silent | string) => Grammar<boolean>;
|
|
75
128
|
export declare const skip: {
|
|
76
129
|
<A>(printAs: A): (inner: Grammar<A>) => Silent;
|
|
@@ -80,7 +133,18 @@ export declare const label: {
|
|
|
80
133
|
(name: string): <A>(inner: Grammar<A>) => Grammar<A>;
|
|
81
134
|
<A>(inner: Grammar<A>, name: string): Grammar<A>;
|
|
82
135
|
};
|
|
136
|
+
/**
|
|
137
|
+
* Defer a grammar for recursive definitions. The thunk runs on first resolution
|
|
138
|
+
* and its result is cached. Parsing rejects recursion at the same input position;
|
|
139
|
+
* printing rejects recursion that reaches the same suspension without consuming
|
|
140
|
+
* a value, so recursive definitions must be productive.
|
|
141
|
+
*/
|
|
83
142
|
export declare const suspend: <A>(thunk: () => Grammar<A>, name?: string) => Grammar<A>;
|
|
143
|
+
/**
|
|
144
|
+
* Replace an absent (`undefined`) inner value when parsing, and omit a value
|
|
145
|
+
* equal to the default when printing. Parsing leaves every other value,
|
|
146
|
+
* including `null`, unchanged.
|
|
147
|
+
*/
|
|
84
148
|
export declare const defaulted: {
|
|
85
149
|
<A>(value: A): (inner: Grammar<A | undefined>) => Grammar<A>;
|
|
86
150
|
<A>(inner: Grammar<A | undefined>, value: A): Grammar<A>;
|
|
@@ -89,17 +153,59 @@ type StructFields = Readonly<Record<string, GrammarInternal>>;
|
|
|
89
153
|
type StructValue<Fields extends StructFields> = {
|
|
90
154
|
readonly [K in keyof Fields]: Type<Fields[K]>;
|
|
91
155
|
};
|
|
156
|
+
/**
|
|
157
|
+
* Sequence fields and return an object. Printing requires exactly these own
|
|
158
|
+
* keys: missing, extra, and symbol keys are rejected.
|
|
159
|
+
*/
|
|
92
160
|
export declare const struct: <const Fields extends StructFields>(fields: Fields) => Grammar<StructValue<Fields>>;
|
|
161
|
+
export declare const withKeys: <A>(grammar: Grammar<A>, keys: ReadonlyArray<string> | undefined) => Grammar<A>;
|
|
162
|
+
type MergeValue<Parts extends ReadonlyArray<GrammarInternal>> = Types.UnionToIntersection<{
|
|
163
|
+
[K in keyof Parts]: {
|
|
164
|
+
readonly value: Type<Parts[K]>;
|
|
165
|
+
};
|
|
166
|
+
}[number]> extends {
|
|
167
|
+
readonly value: infer Value;
|
|
168
|
+
} ? Types.Simplify<Value> : never;
|
|
169
|
+
export declare const merge: <const Parts extends readonly [GrammarInternal, ...Array<GrammarInternal>]>(...grammars: Parts) => Grammar<MergeValue<Parts>>;
|
|
170
|
+
export declare const prefixedBy: (length: Grammar<number>, take: (length: Ref<number>) => Grammar<string>) => Grammar<string>;
|
|
171
|
+
export declare const lengthPrefixed: (length: Grammar<number>) => Grammar<string>;
|
|
172
|
+
export declare const countPrefixed: {
|
|
173
|
+
<A>(item: Grammar<A>, count: Grammar<number>): Grammar<ReadonlyArray<A>>;
|
|
174
|
+
(count: Grammar<number>): <A>(item: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
175
|
+
};
|
|
93
176
|
type TupleValue<Elements extends ReadonlyArray<GrammarInternal>> = {
|
|
94
177
|
readonly [K in keyof Elements]: Type<Elements[K]>;
|
|
95
178
|
};
|
|
96
179
|
export declare const tuple: <const Elements extends ReadonlyArray<GrammarInternal>>(...elements: Elements) => Grammar<TupleValue<Elements>>;
|
|
180
|
+
type OnCases<Tag extends string, Cases extends Readonly<Record<string, GrammarInternal>>> = {
|
|
181
|
+
readonly [K in keyof Cases & string]: Type<Cases[K]> extends Readonly<Record<Tag, K>> ? Cases[K] : Grammar<Readonly<Record<Tag, K>>>;
|
|
182
|
+
};
|
|
183
|
+
type OnEntries<Tag extends string, Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>> = {
|
|
184
|
+
readonly [I in keyof Entries]: Entries[I] extends readonly [infer K extends MatchKey, unknown] ? Type<Entries[I][1]> extends Readonly<Record<Tag, K>> ? Entries[I] : readonly [K, Grammar<Readonly<Record<Tag, K>>>] : never;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Alternatives dispatched by a discriminant field. Parsing tries the branches
|
|
188
|
+
* in order; printing reads `value[tag]` and prints with the branch of that key,
|
|
189
|
+
* so it never picks the wrong printer. It does not remove parse ambiguity: two
|
|
190
|
+
* branches may still parse the same text.
|
|
191
|
+
*
|
|
192
|
+
* The cases are an object keyed by the tag's string values. Integer-like keys
|
|
193
|
+
* are rejected, since JavaScript reorders them; use `choiceOnEntries` for
|
|
194
|
+
* those, and for number or boolean discriminants.
|
|
195
|
+
*/
|
|
196
|
+
export declare const choiceOn: <const Tag extends string, const Cases extends Readonly<Record<string, GrammarInternal>>>(tag: Tag, cases: Cases & OnCases<Tag, Cases>) => Grammar<Type<Cases[keyof Cases]>>;
|
|
197
|
+
/**
|
|
198
|
+
* `choiceOn` with the cases as an array of `[key, grammar]` entries: the parse
|
|
199
|
+
* order is the array order, and keys may be numbers or booleans as well as
|
|
200
|
+
* strings.
|
|
201
|
+
*/
|
|
202
|
+
export declare const choiceOnEntries: <const Tag extends string, const Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>>(tag: Tag, entries: Entries & OnEntries<Tag, Entries>) => Grammar<Type<Entries[number][1]>>;
|
|
97
203
|
type TaggedValue<Tag extends string, Cases extends Readonly<Record<string, GrammarInternal>>> = {
|
|
98
204
|
readonly [K in keyof Cases & string]: Readonly<Record<Tag, K>> & {
|
|
99
205
|
readonly value: Type<Cases[K]>;
|
|
100
206
|
};
|
|
101
207
|
}[keyof Cases & string];
|
|
102
|
-
export declare const taggedChoice: <const Tag extends string, const Cases extends Readonly<Record<string, GrammarInternal>>>(tag: Tag, cases: Cases) => Grammar<TaggedValue<Tag, Cases>>;
|
|
208
|
+
export declare const taggedChoice: <const Tag extends string, const Cases extends Readonly<Record<string, GrammarInternal>>>(tag: Tag extends "value" ? never : Tag, cases: Cases) => Grammar<TaggedValue<Tag, Cases>>;
|
|
103
209
|
export declare const trivia: Silent;
|
|
104
210
|
export declare const space: Silent;
|
|
105
211
|
export declare const spaces: Silent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAExE,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAIjB,KAAK,QAAQ,EAEb,KAAK,GAAG,EAER,KAAK,MAAM,EAEX,KAAK,IAAI,EACV,MAAM,WAAW,CAAA;AAKlB,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAEzD,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,MAA4C,CAAA;AAEpF,eAAO,MAAM,KAAK,QAAc,CAAA;AAEhC,eAAO,MAAM,KAAK,eAAgB,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAGtE,CAAA;AAUD,KAAK,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS,MAAM,GAC9D,MAAM,GACN,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,GACV,KAAK,CAAA;AAEX,KAAK,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS,MAAM,GAC9D,MAAM,GACN,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GACtB,KAAK,CAAA;AAEX,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAA;AAC9D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAC7F,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,CAAC,CAAC,CAAA;AAqBb,eAAO,MAAM,IAAI,gBAAU,CAAA;AAE3B,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,GAAG,MAAM,GACpB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAA;AAC9D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;AACpE,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAO/E,wBAAgB,MAAM,CACpB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAA;AAC9D,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AACrE,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAUhF,eAAO,MAAM,MAAM,GACjB,KAAK,CAAC,QAAQ,SAAS,SAAS,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,cAEhE,QAAQ,KACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAsC,CAAA;AAEvE,wBAAgB,QAAQ,IAAI,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAAA;AACvF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;AAC/C,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;AAMtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAsBD,eAAO,MAAM,IAAI,EAAE;IACjB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;CAG/E,CAAA;AAED,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,CAAC,EACA,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5B,CACE,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;CAGvD,CAAA;AAED,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;AAElE,KAAK,UAAU,CAAC,KAAK,IACnB,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,KAAK,CAAA;AAEjG,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,aACnF,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SACxB,KAAK,KACX,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAMxB,CAAA;AAEJ,KAAK,WAAW,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IAAI,IAAI,CAC1F,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACnB,CAAA;AAED,KAAK,eAAe,CAClB,CAAC,SAAS,QAAQ,EAClB,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IACjE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,CAAA;AAElE,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,QAAQ,EAClB,KAAK,CAAC,OAAO,SAAS,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,aAEvD,GAAG,CAAC,CAAC,CAAC,WACR,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAK3B,CAAA;AAEJ,eAAO,MAAM,IAAI,UAAW,GAAG,CAAC,MAAM,CAAC,KAAG,OAAO,CAAC,MAAM,CACK,CAAA;AAE7D,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;CAG1E,CAAA;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAYD,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAUvE,CAAA;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACzD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IACzD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,eAAe,EAAE;IAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAChF,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAG7E,CAAA;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;IAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;CAClD;AAED,eAAO,MAAM,QAAQ,GAClB,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MACrD,CAAC,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,aAC1B,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAM7B,CAAA;AAEH,eAAO,MAAM,EAAE,EAAE;IACf,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAQ/C,CAAA;AAED,eAAO,MAAM,IAAI,UAAW,MAAM,GAAG,MAAM,KAAG,OAAO,CAAC,OAAO,CACR,CAAA;AAErD,eAAO,MAAM,IAAI,EAAE;IACjB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAA;CAG3C,CAAA;AAED,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACyC,CAAA;AAE3F,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,KAAG,OAAO,CAAC,CAAC,CACrC,CAAA;AAExC,eAAO,MAAM,SAAS,EAAE;IACtB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAMzD,CAAA;AAED,KAAK,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;AAE7D,KAAK,WAAW,CAAC,MAAM,SAAS,YAAY,IAAI;IAC9C,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,MAAM,SAAS,YAAY,UAC9C,MAAM,KACb,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAa7B,CAAA;AAED,KAAK,UAAU,CAAC,QAAQ,SAAS,aAAa,CAAC,eAAe,CAAC,IAAI;IACjE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAClD,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,QAAQ,SAAS,aAAa,CAAC,eAAe,CAAC,eAC5D,QAAQ,KACpB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAY9B,CAAA;AAED,KAAK,WAAW,CAAC,GAAG,SAAS,MAAM,EAAE,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI;IAC9F,QAAQ,EAAE,CAAC,IAAI,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;QAC/D,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KAC/B;CACF,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAA;AAEvB,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,GAAG,SAAS,MAAM,EACxB,KAAK,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,OAExD,GAAG,SACD,KAAK,KACX,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAgBjC,CAAA;AAKD,eAAO,MAAM,MAAM,QAAwC,CAAA;AAC3D,eAAO,MAAM,KAAK,QAAe,CAAA;AACjC,eAAO,MAAM,MAAM,QAA6C,CAAA;AAEhE,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;AAC7C,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAKxD,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,MAAgC,CAAA;AAEvE,eAAO,MAAM,OAAO,iBAUnB,CAAA"}
|
|
1
|
+
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|