effect-grammar 0.4.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 +175 -87
- 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 +3 -2
- 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/ast.d.ts +0 -115
- package/dist/ast.d.ts.map +0 -1
- package/dist/ast.js +0 -253
- package/dist/ast.js.map +0 -1
- 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/errors.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
import type { Value } from "./core.ts";
|
|
3
|
+
export declare const describeExpected: (expected: ReadonlyArray<string>) => string;
|
|
3
4
|
declare const ParseError_base: Schema.Class<ParseError, Schema.TaggedStruct<"ParseError", {
|
|
4
5
|
readonly pos: Schema.Finite;
|
|
5
6
|
readonly line: Schema.Finite;
|
|
@@ -33,11 +34,21 @@ export type PrintIssue = {
|
|
|
33
34
|
readonly _tag: "NoAlternative";
|
|
34
35
|
readonly actual: Value;
|
|
35
36
|
readonly issues: ReadonlyArray<PrintIssue>;
|
|
37
|
+
} | {
|
|
38
|
+
readonly _tag: "RoundTrip";
|
|
39
|
+
readonly value: Value;
|
|
40
|
+
readonly printed: string;
|
|
41
|
+
readonly parsed?: Value | undefined;
|
|
42
|
+
readonly error?: string | undefined;
|
|
36
43
|
} | {
|
|
37
44
|
readonly _tag: "AtPath";
|
|
38
45
|
readonly path: string | number;
|
|
39
46
|
readonly issue: PrintIssue;
|
|
40
47
|
};
|
|
48
|
+
/** The tail of a round-trip message: what the value printed as and how that read back. */
|
|
49
|
+
export declare const describeRoundTrip: (issue: Extract<PrintIssue, {
|
|
50
|
+
_tag: "RoundTrip";
|
|
51
|
+
}>) => string;
|
|
41
52
|
declare const PrintError_base: Schema.Class<PrintError, Schema.TaggedStruct<"PrintError", {
|
|
42
53
|
readonly issue: Schema.Unknown;
|
|
43
54
|
}>, import("effect/Cause").YieldableError>;
|
|
@@ -46,6 +57,7 @@ export declare class PrintError extends PrintError_base {
|
|
|
46
57
|
get message(): string;
|
|
47
58
|
static format(error: PrintError | PrintIssue): string;
|
|
48
59
|
}
|
|
60
|
+
export declare const hex: (bytes: Uint8Array) => string;
|
|
49
61
|
export declare const preview: <T>(value: T) => string;
|
|
50
62
|
export declare const exceptionMessage: (error: Value) => string;
|
|
51
63
|
export {};
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEtC,eAAO,MAAM,gBAAgB,aAAc,aAAa,CAAC,MAAM,CAAC,KAAG,MACK,CAAA;;;;;;;;AAExE,qBAAa,UAAW,SAAQ,eAM9B;IACA,IAAa,OAAO,IAAI,MAAM,CAG7B;CACF;AAED,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACpC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC3B,CAAA;AAiCL,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,UAAW,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,KAAG,MAGO,CAAA;;;;AAE7F,qBAAa,UAAW,SAAQ,eAE9B;IACA,SAAiB,KAAK,EAAE,UAAU,CAAA;IAElC,IAAa,OAAO,IAAI,MAAM,CAE7B;IAED,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAEpD;CACF;AAED,eAAO,MAAM,GAAG,UAAW,UAAU,KAAG,MACmC,CAAA;AAwB3E,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,CAAC,KAAG,MAUrC,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,KAAK,KAAG,MACW,CAAA"}
|
package/dist/errors.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Predicate, Schema } from "effect";
|
|
2
|
+
export const describeExpected = (expected) => expected.length === 1 ? expected[0] : `one of ${expected.join(", ")}`;
|
|
2
3
|
export class ParseError extends Schema.TaggedError()("ParseError", {
|
|
3
4
|
pos: Schema.Finite,
|
|
4
5
|
line: Schema.Finite,
|
|
@@ -8,8 +9,7 @@ export class ParseError extends Schema.TaggedError()("ParseError", {
|
|
|
8
9
|
}) {
|
|
9
10
|
get message() {
|
|
10
11
|
const found = this.found === undefined ? "end of input" : JSON.stringify(this.found);
|
|
11
|
-
|
|
12
|
-
return `line ${this.line}, column ${this.column}: expected ${expected}, found ${found}`;
|
|
12
|
+
return `line ${this.line}, column ${this.column}: expected ${describeExpected(this.expected)}, found ${found}`;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
const pathText = (path) => path.map((part) => (Predicate.isNumber(part) ? `[${part}]` : `.${part}`)).join("");
|
|
@@ -36,8 +36,14 @@ const formatAt = (issue, path) => {
|
|
|
36
36
|
return `${prefix}no choice branch accepts ${preview(issue.actual)}:\n ${issue.issues
|
|
37
37
|
.map((child) => formatAt(child, []))
|
|
38
38
|
.join("\n ")}`;
|
|
39
|
+
case "RoundTrip":
|
|
40
|
+
return `${prefix}${preview(issue.value)} ${describeRoundTrip(issue)}`;
|
|
39
41
|
}
|
|
40
42
|
};
|
|
43
|
+
/** The tail of a round-trip message: what the value printed as and how that read back. */
|
|
44
|
+
export const describeRoundTrip = (issue) => issue.error === undefined
|
|
45
|
+
? `prints as ${JSON.stringify(issue.printed)}, which reads back as ${preview(issue.parsed)}`
|
|
46
|
+
: `prints as ${JSON.stringify(issue.printed)}, which does not parse back: ${issue.error}`;
|
|
41
47
|
export class PrintError extends Schema.TaggedError()("PrintError", {
|
|
42
48
|
issue: Schema.Unknown,
|
|
43
49
|
}) {
|
|
@@ -48,12 +54,42 @@ export class PrintError extends Schema.TaggedError()("PrintError", {
|
|
|
48
54
|
return formatAt(error._tag === "PrintError" ? error.issue : error, []);
|
|
49
55
|
}
|
|
50
56
|
}
|
|
57
|
+
export const hex = (bytes) => Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(" ");
|
|
58
|
+
/**
|
|
59
|
+
* `JSON.stringify`, except that bytes show as `<07 ab>` and a bigint as `5n`,
|
|
60
|
+
* unquoted so neither reads as a string. A replacer cannot do this: its result
|
|
61
|
+
* is quoted, and `toJSON` turns a `Buffer` into an object before it runs.
|
|
62
|
+
*/
|
|
63
|
+
const show = (value, seen) => {
|
|
64
|
+
if (Predicate.isBigInt(value))
|
|
65
|
+
return `${value}n`;
|
|
66
|
+
if (Predicate.isUint8Array(value))
|
|
67
|
+
return `<${hex(value)}>`;
|
|
68
|
+
if (seen.includes(value))
|
|
69
|
+
throw new TypeError("circular value");
|
|
70
|
+
if (Array.isArray(value)) {
|
|
71
|
+
return `[${Array.from(value, (item) => show(item, [...seen, value]) ?? "null").join(",")}]`;
|
|
72
|
+
}
|
|
73
|
+
if (!Predicate.isObject(value) || Predicate.isFunction(value["toJSON"])) {
|
|
74
|
+
return JSON.stringify(value);
|
|
75
|
+
}
|
|
76
|
+
const fields = Object.entries(value).flatMap(([key, field]) => {
|
|
77
|
+
const text = show(field, [...seen, value]);
|
|
78
|
+
return text === undefined ? [] : [`${JSON.stringify(key)}:${text}`];
|
|
79
|
+
});
|
|
80
|
+
return `{${fields.join(",")}}`;
|
|
81
|
+
};
|
|
51
82
|
export const preview = (value) => {
|
|
52
83
|
try {
|
|
53
|
-
return
|
|
84
|
+
return show(value, []) ?? String(value);
|
|
54
85
|
}
|
|
55
86
|
catch {
|
|
56
|
-
|
|
87
|
+
try {
|
|
88
|
+
return String(value);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return "<unprintable value>";
|
|
92
|
+
}
|
|
57
93
|
}
|
|
58
94
|
};
|
|
59
95
|
export const exceptionMessage = (error) => Predicate.isError(error) ? error.message : preview(error);
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI1C,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,WAAW,EAAc,CAAC,YAAY,EAAE;IAC7E,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC;IACA,IAAa,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpF,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/gen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen.d.ts","sourceRoot":"","sources":["../src/gen.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,eAAe,EAMpB,KAAK,GAAG,EACR,KAAK,OAAO,EAGZ,KAAK,MAAM,EAGZ,MAAM,WAAW,CAAA;AAGlB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"gen.d.ts","sourceRoot":"","sources":["../src/gen.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,eAAe,EAMpB,KAAK,GAAG,EACR,KAAK,OAAO,EAGZ,KAAK,MAAM,EAGZ,MAAM,WAAW,CAAA;AAGlB,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAiE5E,eAAO,MAAM,aAAa,QAAS,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,KAAG,IACzC,CAAA;AAE5B,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAGvE,CAAA;AAuHD,eAAO,MAAM,GAAG,GAAI,CAAC,OAAO,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,CAAC,CAoCtF,CAAA;AAED,eAAO,MAAM,GAAG,aAAc,aAAa,CAAC,MAAM,CAAC,KAAG,MAGlD,CAAA"}
|
package/dist/gen.js
CHANGED
|
@@ -38,19 +38,17 @@ const refFor = (expr, scope) => {
|
|
|
38
38
|
return ref;
|
|
39
39
|
};
|
|
40
40
|
const isRef = (value) => Predicate.isObject(value) && refs.has(value);
|
|
41
|
-
|
|
41
|
+
const openEntry = (ref, where) => {
|
|
42
42
|
const entry = entryOf(ref);
|
|
43
43
|
if (!entry.scope.open) {
|
|
44
44
|
throw new Error(`${where}: this ref is out of scope; a ref can only be used inside the gen that bound it, while that gen is being built`);
|
|
45
45
|
}
|
|
46
|
-
return entry
|
|
46
|
+
return entry;
|
|
47
47
|
};
|
|
48
|
+
export const assertInScope = (ref, where) => openEntry(ref, where).expr;
|
|
48
49
|
export const get = (ref, key) => {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
throw new Error("get: this ref is out of scope; a ref can only be used inside the gen that bound it, while that gen is being built");
|
|
52
|
-
}
|
|
53
|
-
return refFor({ _tag: "Prop", object: entry.expr, key }, entry.scope);
|
|
50
|
+
const { expr, scope } = openEntry(ref, "get");
|
|
51
|
+
return refFor({ _tag: "Prop", object: expr, key }, scope);
|
|
54
52
|
};
|
|
55
53
|
const isPlainObject = (value) => {
|
|
56
54
|
const proto = Object.getPrototypeOf(value);
|
package/dist/gen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen.js","sourceRoot":"","sources":["../src/gen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,QAAQ,CAAA;AAE9C,OAAO,EAML,SAAS,EACT,QAAQ,EACR,IAAI,EAKJ,SAAS,EAGT,MAAM,GAEP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAc1C,MAAM,OAAO;CAEZ;AAED,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AAEzE,MAAM,IAAI,GAAG,IAAI,OAAO,EAAoB,CAAA;AAE5C,MAAM,OAAO,GAAG,GAAU,EAAE;IAC1B,MAAM,IAAI,SAAS,CACjB,kFAAkF;QAChF,sEAAsE,CACzE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,GAAqB,EAAY,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAA;IACtE,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,UAAU,GAAmC;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ;QACxB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACvC,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW;YAAE,OAAO,OAAO,CAAA;QAC9C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU;YAAE,OAAO,OAAO,CAAA;QAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC/B,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;CACF,CAAA;AAED,MAAM,MAAM,GAAG,CAAI,IAAU,EAAE,KAAY,EAAU,EAAE;IACrD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,OAAO,EAAK,EAAE,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9B,0EAA0E;IAC1E,OAAO,GAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,KAAY,EAA6B,EAAE,CACxD,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAE9C,MAAM,
|
|
1
|
+
{"version":3,"file":"gen.js","sourceRoot":"","sources":["../src/gen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,QAAQ,CAAA;AAE9C,OAAO,EAML,SAAS,EACT,QAAQ,EACR,IAAI,EAKJ,SAAS,EAGT,MAAM,GAEP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAc1C,MAAM,OAAO;CAEZ;AAED,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AAEzE,MAAM,IAAI,GAAG,IAAI,OAAO,EAAoB,CAAA;AAE5C,MAAM,OAAO,GAAG,GAAU,EAAE;IAC1B,MAAM,IAAI,SAAS,CACjB,kFAAkF;QAChF,sEAAsE,CACzE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,GAAqB,EAAY,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAA;IACtE,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,UAAU,GAAmC;IACjD,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ;QACxB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QACvC,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW;YAAE,OAAO,OAAO,CAAA;QAC9C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU;YAAE,OAAO,OAAO,CAAA;QAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC/B,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC;CACF,CAAA;AAED,MAAM,MAAM,GAAG,CAAI,IAAU,EAAE,KAAY,EAAU,EAAE;IACrD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,OAAO,EAAK,EAAE,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9B,0EAA0E;IAC1E,OAAO,GAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,KAAY,EAA6B,EAAE,CACxD,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAE9C,MAAM,SAAS,GAAG,CAAC,GAAqB,EAAE,KAAa,EAAY,EAAE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,gHAAgH,CACzH,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAqB,EAAE,KAAa,EAAQ,EAAE,CAC1E,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAA;AAE5B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAuB,GAAW,EAAE,GAAM,EAAa,EAAE;IAC1E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7C,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAmB,KAAQ,EAAW,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC1C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,MAAuB,EAAW,EAAE;IACnE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAA;IACH,CAAC;IACD,IACE,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;QAC1B,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EACzB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;IAC/E,IAAI,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;YAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAA;YACrF,CAAC;YACD,MAAM,KAAK,GAAmB,EAAE,CAAA;YAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBACxE,IAAI,UAAU,EAAE,UAAU,KAAK,IAAI,EAAE,CAAC;oBACpC,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAA;gBACrF,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;YAC7C,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACjC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,oEAAoE,CAAC,CAAA;QAC3F,CAAC;QACD,MAAM,MAAM,GAAsC,EAAE,CAAA;QACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC9D,IAAI,UAAU,EAAE,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA;YACrE,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IACnC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,KAA0B,EAAE,MAAe,EAAQ,EAAE;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC7C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAQ,EAAE;QACzC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,KAAK,EAAE,CAAC;gBACX,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxD,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAA;gBACH,CAAC;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBACrC,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,EAAE,EAAE,IAAI,WAAW,mEAAmE,CACpG,CAAA;gBACH,CAAC;gBACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC1B,OAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,OAAM;YACR,KAAK,QAAQ;gBACX,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM;oBAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACtD,OAAM;YACR,KAAK,OAAO;gBACV,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,CAAC;IACH,CAAC,CAAA;IACD,OAAO,CAAC,MAAM,CAAC,CAAA;IAEf,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,EAAE,2GAA2G,CAC3H,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,GAAiD,EAAiB,EAAE;IACzF,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAA;IACtB,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,MAAM,KAAK,GAAU,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC5D,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAA;YAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAA;YAClF,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;gBACvC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,SAAS,EAAE,CAAA;gBACxB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC3C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,CAAA;QACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAClC,MAAM,IAAI,GAAS;YACjB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,SAAS;YACT,KAAK;YACL,MAAM,EAAE,OAAO;SAChB,CAAA;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAA;QACpE,wGAAwG;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAkB,CAAA;IAC5D,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,IAAI,GAAG,KAAK,CAAA;IACpB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,KAA4B,EAAU,EAAE,CAC7D,GAAG,CAAC,QAAQ,CAAC;IACX,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,CAAC,IAAI,CAAA;AACvC,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
export { auditFidelity, prepare, type Prepared, type FidelityEntry, validate } from "./compile.ts";
|
|
2
|
+
export type { Fidelity, Grammar, GrammarIssue, Ref, Silent, Type } from "./core.ts";
|
|
1
3
|
export { ParseError, PrintError, type PrintIssue } from "./errors.ts";
|
|
2
|
-
export type
|
|
3
|
-
export { as, between, choice, decodeTo, type DecodeToOptions, defaulted, empty, flag, gen, type GenGrammar, get, integer, label, lexeme, literal, many, match, matchValue, optional, prefix, regex, repeat, type RepeatOptions, sepBy, seq, skip, space, spaces, struct, suffix, suspend, symbol, taggedChoice, take, transform, transformOrFail, type TransformOptions, type TransformOrFailOptions, trivia, tuple, wrap, } from "./combinators.ts";
|
|
4
|
+
export { as, between, checkedChoice, choice, choiceOn, choiceOnEntries, countPrefixed, decodeTo, type DecodeToOptions, defaulted, empty, filter, flag, gen, type GenGrammar, get, integer, iso, label, lengthPrefixed, lexeme, literal, literals, many, match, matchValue, merge, optional, partialIso, prefix, regex, repeat, type RepeatOptions, sepBy, seq, skip, space, spaces, struct, suffix, suspend, symbol, taggedChoice, take, transform, transformOrFail, type TransformOptions, type TransformOrFailOptions, trivia, tuple, } from "./combinators.ts";
|
|
4
5
|
export { parse } from "./parse.ts";
|
|
5
|
-
export { print } from "./print.ts";
|
|
6
|
+
export { print, printChecked } from "./print.ts";
|
|
6
7
|
export { describe, render } from "./render.ts";
|
|
7
|
-
export { codec } from "./schema.ts";
|
|
8
|
+
export { type CodecOptions, codec } from "./schema.ts";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAClG,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EACL,EAAE,EACF,OAAO,EACP,aAAa,EACb,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,EACH,KAAK,UAAU,EACf,GAAG,EACH,OAAO,EACP,GAAG,EACH,KAAK,EACL,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,MAAM,EACN,KAAK,GACN,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export { auditFidelity, prepare, validate } from "./compile.js";
|
|
1
2
|
export { ParseError, PrintError } from "./errors.js";
|
|
2
|
-
export { as, between, choice, decodeTo, defaulted, empty, flag, gen, get, integer, label, lexeme, literal, many, match, matchValue, optional, prefix, regex, repeat, sepBy, seq, skip, space, spaces, struct, suffix, suspend, symbol, taggedChoice, take, transform, transformOrFail, trivia, tuple,
|
|
3
|
+
export { as, between, checkedChoice, choice, choiceOn, choiceOnEntries, countPrefixed, decodeTo, defaulted, empty, filter, flag, gen, get, integer, iso, label, lengthPrefixed, lexeme, literal, literals, many, match, matchValue, merge, optional, partialIso, prefix, regex, repeat, sepBy, seq, skip, space, spaces, struct, suffix, suspend, symbol, taggedChoice, take, transform, transformOrFail, trivia, tuple, } from "./combinators.js";
|
|
3
4
|
export { parse } from "./parse.js";
|
|
4
|
-
export { print } from "./print.js";
|
|
5
|
+
export { print, printChecked } from "./print.js";
|
|
5
6
|
export { describe, render } from "./render.js";
|
|
6
7
|
export { codec } from "./schema.js";
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAqC,QAAQ,EAAE,MAAM,cAAc,CAAA;AAElG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAA;AACrE,OAAO,EACL,EAAE,EACF,OAAO,EACP,aAAa,EACb,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EAER,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,EAEH,GAAG,EACH,OAAO,EACP,GAAG,EACH,KAAK,EACL,cAAc,EACd,MAAM,EACN,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EAEN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,eAAe,EAGf,MAAM,EACN,KAAK,GACN,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAqB,KAAK,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/parse.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { Result } from "effect";
|
|
2
|
-
import { type Grammar } from "./core.ts";
|
|
2
|
+
import { type Grammar, type GrammarInternal, type Value } from "./core.ts";
|
|
3
|
+
import { type Frame } from "./env.ts";
|
|
3
4
|
import { ParseError } from "./errors.ts";
|
|
5
|
+
export declare const reparse: (grammar: GrammarInternal, text: string, env: Frame | undefined) => {
|
|
6
|
+
readonly ok: true;
|
|
7
|
+
readonly value: Value;
|
|
8
|
+
} | {
|
|
9
|
+
readonly ok: false;
|
|
10
|
+
readonly error: ParseError;
|
|
11
|
+
};
|
|
12
|
+
/** Interpret a grammar from cursor zero and require the whole input to be consumed. */
|
|
4
13
|
export declare const parse: <A>(grammar: Grammar<A>, input: string) => Result.Result<A, ParseError>;
|
|
5
14
|
//# sourceMappingURL=parse.d.ts.map
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE1C,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EAKpB,KAAK,KAAK,EACX,MAAM,WAAW,CAAA;AAClB,OAAO,EAKL,KAAK,KAAK,EAMX,MAAM,UAAU,CAAA;AACjB,OAAO,EAAoB,UAAU,EAAW,MAAM,aAAa,CAAA;AA+NnE,eAAO,MAAM,OAAO,YACT,eAAe,QAClB,MAAM,OACP,KAAK,GAAG,SAAS,KAEpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAYnD,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,KAAK,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CASxF,CAAA"}
|
package/dist/parse.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { Result } from "effect";
|
|
1
|
+
import { Predicate, Result } from "effect";
|
|
2
2
|
import { nodeOf, resolve, unsafeToNever, } from "./core.js";
|
|
3
|
-
import { bind, caseFor, evaluate, frame, isCount, materialize, Unbound } from "./env.js";
|
|
3
|
+
import { bind, caseFor, copyFields, evaluate, frame, isCount, materialize, nonByte, Unbound, } from "./env.js";
|
|
4
4
|
import { exceptionMessage, ParseError, preview } from "./errors.js";
|
|
5
5
|
import { describe } from "./render.js";
|
|
6
6
|
const Fail = Symbol("effect-grammar/ParseFail");
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
9
|
-
state.furthest =
|
|
7
|
+
const failAtPosition = (state, position, expected) => {
|
|
8
|
+
if (position > state.furthest) {
|
|
9
|
+
state.furthest = position;
|
|
10
10
|
state.expected = new Set([expected]);
|
|
11
11
|
}
|
|
12
|
-
else if (
|
|
12
|
+
else if (position === state.furthest) {
|
|
13
13
|
state.expected.add(expected);
|
|
14
14
|
}
|
|
15
15
|
return Fail;
|
|
16
16
|
};
|
|
17
|
+
const failAt = (state, expected) => failAtPosition(state, state.pos, expected);
|
|
17
18
|
const go = (grammar, state, env) => {
|
|
18
19
|
const node = nodeOf(grammar);
|
|
19
20
|
switch (node._tag) {
|
|
@@ -28,12 +29,13 @@ const go = (grammar, state, env) => {
|
|
|
28
29
|
while (current < end && state.input[current] === node.value[current - state.pos])
|
|
29
30
|
current++;
|
|
30
31
|
state.pos = current;
|
|
31
|
-
return failAt(state, JSON.stringify(node.value));
|
|
32
|
+
return failAt(state, node.name ?? JSON.stringify(node.value));
|
|
32
33
|
}
|
|
33
34
|
case "Regex": {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const expression = new RegExp(node.source, `${node.flags}y`);
|
|
36
|
+
expression.lastIndex = state.pos;
|
|
37
|
+
const match = expression.exec(state.input);
|
|
38
|
+
if (match === null || match.index !== state.pos)
|
|
37
39
|
return failAt(state, node.name);
|
|
38
40
|
state.pos += match[0].length;
|
|
39
41
|
return match[0];
|
|
@@ -98,21 +100,22 @@ const go = (grammar, state, env) => {
|
|
|
98
100
|
const value = go(node.inner, state, env);
|
|
99
101
|
if (value === Fail)
|
|
100
102
|
return Fail;
|
|
103
|
+
const consumed = state.pos;
|
|
101
104
|
try {
|
|
102
105
|
const decoded = node.decode(unsafeToNever(value));
|
|
103
106
|
if (Result.isFailure(decoded)) {
|
|
104
107
|
state.pos = start;
|
|
105
|
-
return
|
|
108
|
+
return failAtPosition(state, consumed, decoded.failure.message);
|
|
106
109
|
}
|
|
107
110
|
if (node.is?.(unsafeToNever(decoded.success)) === false) {
|
|
108
111
|
state.pos = start;
|
|
109
|
-
return
|
|
112
|
+
return failAtPosition(state, consumed, node.name ?? describe(node.inner));
|
|
110
113
|
}
|
|
111
114
|
return decoded.success;
|
|
112
115
|
}
|
|
113
116
|
catch (error) {
|
|
114
117
|
state.pos = start;
|
|
115
|
-
return
|
|
118
|
+
return failAtPosition(state, consumed, `${node.name ?? describe(node.inner)}: ${exceptionMessage(error)}`);
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
case "Skip":
|
|
@@ -126,8 +129,29 @@ const go = (grammar, state, env) => {
|
|
|
126
129
|
}
|
|
127
130
|
return value;
|
|
128
131
|
}
|
|
129
|
-
case "Suspend":
|
|
130
|
-
|
|
132
|
+
case "Suspend": {
|
|
133
|
+
const positions = state.suspended.get(node) ?? new Set();
|
|
134
|
+
if (positions.has(state.pos))
|
|
135
|
+
return failAt(state, "a non-left-recursive grammar");
|
|
136
|
+
state.suspended.set(node, positions);
|
|
137
|
+
const position = state.pos;
|
|
138
|
+
positions.add(position);
|
|
139
|
+
let target;
|
|
140
|
+
try {
|
|
141
|
+
target = resolve(node);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
return failAt(state, exceptionMessage(error));
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
return go(target, state, env);
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
positions.delete(position);
|
|
151
|
+
if (positions.size === 0)
|
|
152
|
+
state.suspended.delete(node);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
131
155
|
case "Match": {
|
|
132
156
|
const key = evaluate(node.scrutinee, env);
|
|
133
157
|
if (key === Unbound)
|
|
@@ -142,11 +166,20 @@ const go = (grammar, state, env) => {
|
|
|
142
166
|
if (count === Unbound)
|
|
143
167
|
return failAt(state, "a bound take count");
|
|
144
168
|
if (!isCount(count))
|
|
145
|
-
return failAt(state,
|
|
146
|
-
|
|
147
|
-
|
|
169
|
+
return failAt(state, `<${node.unit}>{${preview(count)}}`);
|
|
170
|
+
const available = state.input.length - state.pos;
|
|
171
|
+
if (available < count) {
|
|
172
|
+
if (node.unit === "char")
|
|
173
|
+
return failAt(state, `${count} chars`);
|
|
174
|
+
const expected = `${count} bytes but only ${available} remain`;
|
|
175
|
+
return failAtPosition(state, state.input.length, node.name === undefined ? expected : `${node.name}: ${expected}`);
|
|
148
176
|
}
|
|
149
177
|
const value = state.input.slice(state.pos, state.pos + count);
|
|
178
|
+
if (node.unit === "byte") {
|
|
179
|
+
const index = value.search(nonByte);
|
|
180
|
+
if (index !== -1)
|
|
181
|
+
return failAtPosition(state, state.pos + index, "a byte");
|
|
182
|
+
}
|
|
150
183
|
state.pos += count;
|
|
151
184
|
return value;
|
|
152
185
|
}
|
|
@@ -168,6 +201,19 @@ const go = (grammar, state, env) => {
|
|
|
168
201
|
}
|
|
169
202
|
return values;
|
|
170
203
|
}
|
|
204
|
+
case "Merge": {
|
|
205
|
+
const merged = {};
|
|
206
|
+
for (const part of node.parts) {
|
|
207
|
+
const start = state.pos;
|
|
208
|
+
const value = go(part.grammar, state, env);
|
|
209
|
+
if (value === Fail)
|
|
210
|
+
return Fail;
|
|
211
|
+
if (!Predicate.isObject(value))
|
|
212
|
+
return failAtPosition(state, start, "an object to merge");
|
|
213
|
+
copyFields(merged, value, part.keys);
|
|
214
|
+
}
|
|
215
|
+
return merged;
|
|
216
|
+
}
|
|
171
217
|
}
|
|
172
218
|
};
|
|
173
219
|
const toError = (state) => {
|
|
@@ -181,8 +227,24 @@ const toError = (state) => {
|
|
|
181
227
|
found: code === undefined ? undefined : String.fromCodePoint(code),
|
|
182
228
|
});
|
|
183
229
|
};
|
|
230
|
+
export const reparse = (grammar, text, env) => {
|
|
231
|
+
const state = {
|
|
232
|
+
input: text,
|
|
233
|
+
pos: 0,
|
|
234
|
+
furthest: 0,
|
|
235
|
+
expected: new Set(),
|
|
236
|
+
suspended: new Map(),
|
|
237
|
+
};
|
|
238
|
+
const value = go(grammar, state, env);
|
|
239
|
+
if (value !== Fail && state.pos === text.length)
|
|
240
|
+
return { ok: true, value };
|
|
241
|
+
if (value !== Fail)
|
|
242
|
+
failAt(state, "end of input");
|
|
243
|
+
return { ok: false, error: toError(state) };
|
|
244
|
+
};
|
|
245
|
+
/** Interpret a grammar from cursor zero and require the whole input to be consumed. */
|
|
184
246
|
export const parse = (grammar, input) => {
|
|
185
|
-
const state = { input, pos: 0, furthest: 0, expected: new Set() };
|
|
247
|
+
const state = { input, pos: 0, furthest: 0, expected: new Set(), suspended: new Map() };
|
|
186
248
|
const value = go(grammar, state, undefined);
|
|
187
249
|
if (value !== Fail && state.pos === input.length) {
|
|
188
250
|
// SAFETY: interpreting Grammar<A> preserves its output type across every node.
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/pattern.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Pattern, Value } from "./core.ts";
|
|
2
2
|
import { type Frame } from "./env.ts";
|
|
3
|
-
import type
|
|
3
|
+
import { type PrintIssue } from "./errors.ts";
|
|
4
|
+
export declare const ownKeys: (value: Readonly<Record<string, Value>>, fields: ReadonlyArray<string>) => Array<string | symbol> | PrintIssue;
|
|
4
5
|
export declare const unifyPattern: (pattern: Pattern, value: Value, values: Frame) => PrintIssue | undefined;
|
|
5
6
|
//# sourceMappingURL=pattern.d.ts.map
|
package/dist/pattern.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAQ,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAQ,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D,eAAO,MAAM,OAAO,UACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,UAC9B,aAAa,CAAC,MAAM,CAAC,KAC5B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,UAqB3B,CAAA;AAED,eAAO,MAAM,YAAY,YACd,OAAO,SACT,KAAK,UACJ,KAAK,KACZ,UAAU,GAAG,SA4Df,CAAA"}
|
package/dist/pattern.js
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import { Equal, Predicate } from "effect";
|
|
2
2
|
import { bind } from "./env.js";
|
|
3
|
+
import { exceptionMessage } from "./errors.js";
|
|
4
|
+
export const ownKeys = (value, fields) => {
|
|
5
|
+
let keys;
|
|
6
|
+
try {
|
|
7
|
+
keys = Reflect.ownKeys(value);
|
|
8
|
+
for (const key of keys)
|
|
9
|
+
Object.getOwnPropertyDescriptor(value, key);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return {
|
|
13
|
+
_tag: "InvalidValue",
|
|
14
|
+
expected: `an inspectable object with exactly the fields ${fields.join(", ")}`,
|
|
15
|
+
actual: value,
|
|
16
|
+
detail: `could not inspect own fields: ${exceptionMessage(error)}`,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return keys.every((key) => Predicate.isString(key) && fields.includes(key))
|
|
20
|
+
? keys
|
|
21
|
+
: {
|
|
22
|
+
_tag: "InvalidValue",
|
|
23
|
+
expected: `exactly the fields ${fields.join(", ")}`,
|
|
24
|
+
actual: value,
|
|
25
|
+
detail: "unexpected own field",
|
|
26
|
+
};
|
|
27
|
+
};
|
|
3
28
|
export const unifyPattern = (pattern, value, values) => {
|
|
4
29
|
switch (pattern._tag) {
|
|
5
30
|
case "Ref":
|
|
@@ -13,11 +38,30 @@ export const unifyPattern = (pattern, value, values) => {
|
|
|
13
38
|
if (!Predicate.isObject(value) || Array.isArray(value)) {
|
|
14
39
|
return { _tag: "TypeMismatch", expected: "an object", actual: value };
|
|
15
40
|
}
|
|
41
|
+
const keys = ownKeys(value, pattern.fields.map(([key]) => key));
|
|
42
|
+
if (!Array.isArray(keys))
|
|
43
|
+
return keys;
|
|
16
44
|
for (const [key, field] of pattern.fields) {
|
|
17
|
-
if (!
|
|
45
|
+
if (!keys.includes(key)) {
|
|
18
46
|
return { _tag: "AtPath", path: key, issue: { _tag: "MissingField", field: key } };
|
|
19
47
|
}
|
|
20
|
-
|
|
48
|
+
let fieldValue;
|
|
49
|
+
try {
|
|
50
|
+
fieldValue = value[key];
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
_tag: "AtPath",
|
|
55
|
+
path: key,
|
|
56
|
+
issue: {
|
|
57
|
+
_tag: "InvalidValue",
|
|
58
|
+
expected: "a readable field",
|
|
59
|
+
actual: value,
|
|
60
|
+
detail: exceptionMessage(error),
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const issue = unifyPattern(field, fieldValue, values);
|
|
21
65
|
if (issue !== undefined)
|
|
22
66
|
return { _tag: "AtPath", path: key, issue };
|
|
23
67
|
}
|
package/dist/pattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGzC,OAAO,EAAE,IAAI,EAAc,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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"}
|
package/dist/print.d.ts
CHANGED
|
@@ -2,5 +2,13 @@ import { Result } from "effect";
|
|
|
2
2
|
import { type Grammar, type GrammarInternal, type Value } from "./core.ts";
|
|
3
3
|
import { PrintError } from "./errors.ts";
|
|
4
4
|
export declare const printUnknown: (grammar: GrammarInternal, value: Value) => Result.Result<string, PrintError>;
|
|
5
|
+
/** Print a value using the grammar's selected branches and configured spellings. This does not verify a round trip; see {@link printCheckedUnknown}. */
|
|
5
6
|
export declare const print: <A>(grammar: Grammar<A>, value: A) => Result.Result<string, PrintError>;
|
|
7
|
+
export declare const printCheckedUnknown: (grammar: GrammarInternal, value: Value) => Result.Result<string, PrintError>;
|
|
8
|
+
/**
|
|
9
|
+
* Print a value, then parse the whole output back and confirm it equals the
|
|
10
|
+
* original. Fails if the text would decode to a different value, so a checked
|
|
11
|
+
* print never hides a broken round trip.
|
|
12
|
+
*/
|
|
13
|
+
export declare const printChecked: <A>(grammar: Grammar<A>, value: A) => Result.Result<string, PrintError>;
|
|
6
14
|
//# sourceMappingURL=print.d.ts.map
|
package/dist/print.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,eAAe,EAOpB,KAAK,KAAK,EACX,MAAM,WAAW,CAAA;AAYlB,OAAO,EAIL,UAAU,EAEX,MAAM,aAAa,CAAA;AA+VpB,eAAO,MAAM,YAAY,YACd,eAAe,SACjB,KAAK,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAKlC,CAAA;AAED,wJAAwJ;AACxJ,eAAO,MAAM,KAAK,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAC3D,CAAA;AAE9B,eAAO,MAAM,mBAAmB,YACrB,eAAe,SACjB,KAAK,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAKlC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAC3D,CAAA"}
|