effect-grammar 0.2.0 → 0.4.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.
Files changed (53) hide show
  1. package/README.md +75 -136
  2. package/dist/ast.d.ts +115 -0
  3. package/dist/ast.d.ts.map +1 -0
  4. package/dist/ast.js +253 -0
  5. package/dist/ast.js.map +1 -0
  6. package/dist/combinators.d.ts +66 -21
  7. package/dist/combinators.d.ts.map +1 -1
  8. package/dist/combinators.js +150 -47
  9. package/dist/combinators.js.map +1 -1
  10. package/dist/core.d.ts +111 -39
  11. package/dist/core.d.ts.map +1 -1
  12. package/dist/core.js +24 -20
  13. package/dist/core.js.map +1 -1
  14. package/dist/env.d.ts +20 -0
  15. package/dist/env.d.ts.map +1 -0
  16. package/dist/env.js +63 -0
  17. package/dist/env.js.map +1 -0
  18. package/dist/errors.d.ts +34 -1
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +37 -4
  21. package/dist/errors.js.map +1 -1
  22. package/dist/gen.d.ts +7 -0
  23. package/dist/gen.d.ts.map +1 -0
  24. package/dist/gen.js +200 -0
  25. package/dist/gen.js.map +1 -0
  26. package/dist/index.d.ts +5 -5
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/parse.d.ts.map +1 -1
  31. package/dist/parse.js +152 -114
  32. package/dist/parse.js.map +1 -1
  33. package/dist/pattern.d.ts +5 -0
  34. package/dist/pattern.d.ts.map +1 -0
  35. package/dist/pattern.js +46 -0
  36. package/dist/pattern.js.map +1 -0
  37. package/dist/print.d.ts +2 -1
  38. package/dist/print.d.ts.map +1 -1
  39. package/dist/print.js +201 -89
  40. package/dist/print.js.map +1 -1
  41. package/dist/recovery.d.ts +10 -0
  42. package/dist/recovery.d.ts.map +1 -0
  43. package/dist/recovery.js +296 -0
  44. package/dist/recovery.js.map +1 -0
  45. package/dist/render.d.ts +4 -4
  46. package/dist/render.d.ts.map +1 -1
  47. package/dist/render.js +133 -42
  48. package/dist/render.js.map +1 -1
  49. package/dist/schema.d.ts +1 -1
  50. package/dist/schema.d.ts.map +1 -1
  51. package/dist/schema.js +12 -5
  52. package/dist/schema.js.map +1 -1
  53. package/package.json +32 -16
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -1,34 +1,38 @@
1
- import { Pipeable, Utils } from "effect";
1
+ import { Pipeable, Predicate, Result, Utils } from "effect";
2
+ const GrammarTypeId = Symbol.for("effect-grammar/Grammar");
3
+ const SilentTypeId = Symbol.for("effect-grammar/Silent");
4
+ const NodeTypeId = Symbol("effect-grammar/Node");
5
+ export const RefTypeId = Symbol.for("effect-grammar/Ref");
6
+ /**
7
+ * Bridges an erased node callback with the runtime value produced for that
8
+ * node. Node callbacks are stored as `never`-argument functions so the
9
+ * public combinator types stay precise; this is the single choke point where
10
+ * the runtime value is passed to them.
11
+ */
12
+ export const unsafeToNever = (value) => {
13
+ // SAFETY: erased Node callbacks accept the runtime value produced for that node.
14
+ return value;
15
+ };
2
16
  class GrammarImpl {
3
- node;
17
+ [NodeTypeId];
4
18
  constructor(node) {
5
- this.node = node;
19
+ this[NodeTypeId] = node;
6
20
  }
7
21
  pipe() {
8
22
  return Pipeable.pipeArguments(this, arguments);
9
23
  }
10
- }
11
- class SilentImpl extends GrammarImpl {
12
24
  [Symbol.iterator]() {
13
25
  return new Utils.SingleShotGen(this);
14
26
  }
15
27
  }
16
- class FieldImpl {
17
- name;
18
- grammar;
19
- constructor(name, grammar) {
20
- this.name = name;
21
- this.grammar = grammar;
22
- }
23
- [Symbol.iterator]() {
24
- return new Utils.SingleShotGen(this);
25
- }
28
+ Object.defineProperty(GrammarImpl.prototype, GrammarTypeId, { value: GrammarTypeId });
29
+ class SilentImpl extends GrammarImpl {
26
30
  }
31
+ Object.defineProperty(SilentImpl.prototype, SilentTypeId, { value: true });
32
+ export const nodeOf = (grammar) => grammar[NodeTypeId];
27
33
  export const make = (node) => new GrammarImpl(node);
28
34
  export const silent = (node) => new SilentImpl(node);
29
- export const field = (name, grammar) => new FieldImpl(name, grammar);
30
- export const isGrammar = (value) => value instanceof GrammarImpl;
31
- export const isSilent = (g) => g instanceof SilentImpl;
32
- export const isField = (p) => p instanceof FieldImpl;
33
- export const resolve = (n) => (n.resolved ??= n.thunk());
35
+ export const isGrammar = (value) => Predicate.hasProperty(value, GrammarTypeId);
36
+ export const isSilent = (grammar) => Predicate.hasProperty(grammar, SilentTypeId);
37
+ export const resolve = (node) => (node.resolved ??= node.thunk());
34
38
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,KAAK,EAAE,MAAM,QAAQ,CAAA;AAoEpD,MAAM,WAAW;IAEN,IAAI,CAAM;IACnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,IAAI;QACF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;CACF;AAED,MAAM,UAAW,SAAQ,WAAiB;IACxC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAe,IAAI,CAAC,CAAA;IACpD,CAAC;CACF;AAED,MAAM,SAAS;IACJ,IAAI,CAAG;IACP,OAAO,CAAY;IAC5B,YAAY,IAAO,EAAE,OAAmB;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IACD,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAiB,IAAI,CAAC,CAAA;IACtD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,IAAU,EAAc,EAAE,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,CAAA;AAC3E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAO,EACP,OAAU,EACS,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAU,EAAyB,EAAE,CAAC,KAAK,YAAY,WAAW,CAAA;AAC5F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAe,EAAE,CAAC,CAAC,YAAY,UAAU,CAAA;AACjF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAO,EAA2B,EAAE,CAAC,CAAC,YAAY,SAAS,CAAA;AAEnF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAqC,EAAgB,EAAE,CAC7E,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAc,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEvE,MAAM,aAAa,GAAkB,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACzE,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACvE,MAAM,UAAU,GAAkB,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAKxE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAS,EAAE;IACnD,iFAAiF;IACjF,OAAO,KAAc,CAAA;AACvB,CAAC,CAAA;AAgID,MAAM,WAAW;IAEN,CAAC,UAAU,CAAC,CAAM;IAE3B,YAAY,IAAU;QACpB,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,KAAK,CAAC,aAAa,CAAuB,IAAI,CAAC,CAAA;IAC5D,CAAC;CACF;AAED,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;AAErF,MAAM,UAAW,SAAQ,WAAiB;CAEzC;AAED,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAwB,EAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,IAAU,EAAc,EAAE,CAAC,IAAI,WAAW,CAAI,IAAI,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAgC,EAAE,CACrE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAwB,EAAqB,EAAE,CACtE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAwC,EAAmB,EAAE,CACnF,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Case, Expr, Pattern, RefExpr, ScopeId, Value } from "./core.ts";
2
+ /**
3
+ * Sentinel for "no value has been bound here". Distinguished from `undefined`
4
+ * because slots can legitimately hold `undefined` (e.g. `optional`).
5
+ */
6
+ export declare const Unbound: unique symbol;
7
+ export type BoundValue = Value | typeof Unbound;
8
+ export interface Frame {
9
+ readonly scope: ScopeId;
10
+ readonly parent: Frame | undefined;
11
+ readonly values: Array<Value>;
12
+ }
13
+ export declare const frame: (scope: ScopeId, slotCount: number, parent: Frame | undefined) => Frame;
14
+ export declare const bind: (target: Frame, slot: number, value: Value) => void;
15
+ export declare const lookup: (env: Frame | undefined, ref: RefExpr) => BoundValue;
16
+ export declare const evaluate: (expr: Expr, env: Frame | undefined) => BoundValue;
17
+ export declare const materialize: (pattern: Pattern, env: Frame) => BoundValue;
18
+ export declare const caseFor: (cases: ReadonlyArray<Case>, value: Value) => Case | undefined;
19
+ export declare const isCount: (value: Value) => value is number;
20
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAE7E;;;GAGG;AACH,eAAO,MAAM,OAAO,eAAmC,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,OAAO,CAAA;AAE/C,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAC9B;AAED,eAAO,MAAM,KAAK,UAAW,OAAO,aAAa,MAAM,UAAU,KAAK,GAAG,SAAS,KAAG,KAKpF,CAAA;AAED,eAAO,MAAM,IAAI,WAAY,KAAK,QAAQ,MAAM,SAAS,KAAK,KAAG,IAEhE,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,KAAK,GAAG,SAAS,OAAO,OAAO,KAAG,UAM7D,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,IAAI,OAAO,KAAK,GAAG,SAAS,KAAG,UAM7D,CAAA;AAED,eAAO,MAAM,WAAW,YAAa,OAAO,OAAO,KAAK,KAAG,UAyB1D,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,aAAa,CAAC,IAAI,CAAC,SAAS,KAAK,qBACJ,CAAA;AAE5D,eAAO,MAAM,OAAO,UAAW,KAAK,KAAG,KAAK,IAAI,MACwB,CAAA"}
package/dist/env.js ADDED
@@ -0,0 +1,63 @@
1
+ import { Predicate } from "effect";
2
+ /**
3
+ * Sentinel for "no value has been bound here". Distinguished from `undefined`
4
+ * because slots can legitimately hold `undefined` (e.g. `optional`).
5
+ */
6
+ export const Unbound = Symbol("effect-grammar/Unbound");
7
+ export const frame = (scope, slotCount, parent) => {
8
+ // Push (not `Array.from({ length }).fill()`): the slots array must stay packed.
9
+ const values = [];
10
+ for (let slot = 0; slot < slotCount; slot++)
11
+ values.push(Unbound);
12
+ return { scope, parent, values };
13
+ };
14
+ export const bind = (target, slot, value) => {
15
+ target.values[slot] = value;
16
+ };
17
+ export const lookup = (env, ref) => {
18
+ for (let current = env; current !== undefined; current = current.parent) {
19
+ if (current.scope !== ref.scope)
20
+ continue;
21
+ return current.values[ref.slot];
22
+ }
23
+ return Unbound;
24
+ };
25
+ export const evaluate = (expr, env) => {
26
+ if (expr._tag === "Ref")
27
+ return lookup(env, expr);
28
+ const object = evaluate(expr.object, env);
29
+ if (object === Unbound || !Predicate.isObject(object))
30
+ return Unbound;
31
+ return Object.hasOwn(object, expr.key) ? object[expr.key] : Unbound;
32
+ };
33
+ export const materialize = (pattern, env) => {
34
+ switch (pattern._tag) {
35
+ case "Ref":
36
+ return lookup(env, pattern);
37
+ case "Const":
38
+ return pattern.value;
39
+ case "Object": {
40
+ const object = {};
41
+ for (const [key, field] of pattern.fields) {
42
+ const value = materialize(field, env);
43
+ if (value === Unbound)
44
+ return Unbound;
45
+ object[key] = value;
46
+ }
47
+ return object;
48
+ }
49
+ case "Array": {
50
+ const items = [];
51
+ for (const item of pattern.items) {
52
+ const value = materialize(item, env);
53
+ if (value === Unbound)
54
+ return Unbound;
55
+ items.push(value);
56
+ }
57
+ return items;
58
+ }
59
+ }
60
+ };
61
+ export const caseFor = (cases, value) => cases.find((matchCase) => Object.is(matchCase.key, value));
62
+ export const isCount = (value) => Predicate.isNumber(value) && Number.isSafeInteger(value) && value >= 0;
63
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Schema } from "effect";
2
+ import type { Value } from "./core.ts";
2
3
  declare const ParseError_base: Schema.Class<ParseError, Schema.TaggedStruct<"ParseError", {
3
4
  readonly pos: Schema.Finite;
4
5
  readonly line: Schema.Finite;
@@ -9,11 +10,43 @@ declare const ParseError_base: Schema.Class<ParseError, Schema.TaggedStruct<"Par
9
10
  export declare class ParseError extends ParseError_base {
10
11
  get message(): string;
11
12
  }
13
+ export type PrintIssue = {
14
+ readonly _tag: "TypeMismatch";
15
+ readonly expected: string;
16
+ readonly actual: Value;
17
+ } | {
18
+ readonly _tag: "ConstantMismatch";
19
+ readonly expected: Value;
20
+ readonly actual: Value;
21
+ } | {
22
+ readonly _tag: "MissingField";
23
+ readonly field: string;
24
+ } | {
25
+ readonly _tag: "MissingBinding";
26
+ readonly binding: string;
27
+ } | {
28
+ readonly _tag: "InvalidValue";
29
+ readonly expected: string;
30
+ readonly actual: Value;
31
+ readonly detail?: string | undefined;
32
+ } | {
33
+ readonly _tag: "NoAlternative";
34
+ readonly actual: Value;
35
+ readonly issues: ReadonlyArray<PrintIssue>;
36
+ } | {
37
+ readonly _tag: "AtPath";
38
+ readonly path: string | number;
39
+ readonly issue: PrintIssue;
40
+ };
12
41
  declare const PrintError_base: Schema.Class<PrintError, Schema.TaggedStruct<"PrintError", {
13
- readonly message: Schema.String;
42
+ readonly issue: Schema.Unknown;
14
43
  }>, import("effect/Cause").YieldableError>;
15
44
  export declare class PrintError extends PrintError_base {
45
+ readonly issue: PrintIssue;
46
+ get message(): string;
47
+ static format(error: PrintError | PrintIssue): string;
16
48
  }
17
49
  export declare const preview: <T>(value: T) => string;
50
+ export declare const exceptionMessage: (error: Value) => string;
18
51
  export {};
19
52
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;;;;;;;;AAE/B,qBAAa,UAAW,SAAQ,eAM9B;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED,qBAAa,UAAW,SAAQ,eAE9B;CAAG;AAEL,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,CAAC,KAAG,MAMrC,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,qBAAa,UAAW,SAAQ,eAM9B;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;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,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC3B,CAAA;;;;AA+BL,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,OAAO,GAAI,CAAC,SAAS,CAAC,KAAG,MAMrC,CAAA;AAED,eAAO,MAAM,gBAAgB,UAAW,KAAK,KAAG,MACW,CAAA"}
package/dist/errors.js CHANGED
@@ -1,5 +1,5 @@
1
- import { Schema } from "effect";
2
- export class ParseError extends Schema.TaggedErrorClass()("ParseError", {
1
+ import { Predicate, Schema } from "effect";
2
+ export class ParseError extends Schema.TaggedError()("ParseError", {
3
3
  pos: Schema.Finite,
4
4
  line: Schema.Finite,
5
5
  column: Schema.Finite,
@@ -12,9 +12,41 @@ export class ParseError extends Schema.TaggedErrorClass()("ParseError", {
12
12
  return `line ${this.line}, column ${this.column}: expected ${expected}, found ${found}`;
13
13
  }
14
14
  }
15
- export class PrintError extends Schema.TaggedErrorClass()("PrintError", {
16
- message: Schema.String,
15
+ const pathText = (path) => path.map((part) => (Predicate.isNumber(part) ? `[${part}]` : `.${part}`)).join("");
16
+ const formatAt = (issue, path) => {
17
+ if (issue._tag === "AtPath")
18
+ return formatAt(issue.issue, [...path, issue.path]);
19
+ const prefix = path.length === 0 ? "" : `${pathText(path)}: `;
20
+ switch (issue._tag) {
21
+ case "TypeMismatch":
22
+ return `${prefix}expected ${issue.expected}, got ${preview(issue.actual)}`;
23
+ case "ConstantMismatch":
24
+ return `${prefix}expected ${preview(issue.expected)}, got ${preview(issue.actual)}`;
25
+ case "MissingField":
26
+ return path.length === 0
27
+ ? `.${issue.field}: missing field`
28
+ : `${pathText(path)}: missing field`;
29
+ case "MissingBinding":
30
+ return `${prefix}${issue.binding} is not in the value`;
31
+ case "InvalidValue":
32
+ return issue.detail === undefined
33
+ ? `${prefix}expected ${issue.expected}, got ${preview(issue.actual)}`
34
+ : `${prefix}${issue.expected}: ${issue.detail}`;
35
+ case "NoAlternative":
36
+ return `${prefix}no choice branch accepts ${preview(issue.actual)}:\n ${issue.issues
37
+ .map((child) => formatAt(child, []))
38
+ .join("\n ")}`;
39
+ }
40
+ };
41
+ export class PrintError extends Schema.TaggedError()("PrintError", {
42
+ issue: Schema.Unknown,
17
43
  }) {
44
+ get message() {
45
+ return PrintError.format(this);
46
+ }
47
+ static format(error) {
48
+ return formatAt(error._tag === "PrintError" ? error.issue : error, []);
49
+ }
18
50
  }
19
51
  export const preview = (value) => {
20
52
  try {
@@ -24,4 +56,5 @@ export const preview = (value) => {
24
56
  return String(value);
25
57
  }
26
58
  };
59
+ export const exceptionMessage = (error) => Predicate.isError(error) ? error.message : preview(error);
27
60
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,gBAAgB,EAAc,CAAC,YAAY,EAAE;IAClF,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,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACtF,OAAO,QAAQ,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,cAAc,QAAQ,WAAW,KAAK,EAAE,CAAA;IACzF,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,gBAAgB,EAAc,CAAC,YAAY,EAAE;IAClF,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,KAAQ,EAAU,EAAE;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/gen.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { type Denote, type Expr, type Grammar, type GrammarInternal, type Ref, type RefBase, type Silent } from "./core.ts";
2
+ export type GenGrammar<R> = [R] extends [void] ? Silent : Grammar<Denote<R>>;
3
+ export declare const assertInScope: (ref: RefBase<unknown>, where: string) => Expr;
4
+ export declare const get: <A, K extends keyof A>(ref: Ref<A>, key: K) => Ref<A[K]>;
5
+ export declare const gen: <R>(run: () => Generator<GrammarInternal, R, unknown>) => GenGrammar<R>;
6
+ export declare const seq: (...parts: ReadonlyArray<Silent>) => Silent;
7
+ //# sourceMappingURL=gen.d.ts.map
@@ -0,0 +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;AAuD5E,eAAO,MAAM,aAAa,QAAS,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,KAAG,IAQpE,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAQvE,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 ADDED
@@ -0,0 +1,200 @@
1
+ import { Predicate } from "effect";
2
+ import { isGrammar, isSilent, make, RefTypeId, silent, } from "./core.js";
3
+ import { describeStep } from "./render.js";
4
+ class RefImpl {
5
+ }
6
+ Object.defineProperty(RefImpl.prototype, RefTypeId, { value: RefTypeId });
7
+ const refs = new WeakMap();
8
+ const escaped = () => {
9
+ throw new TypeError("a Grammar.Ref has no value until parse or print time, so it cannot be compared, " +
10
+ "added, or interpolated here; branch on it with Grammar.match instead");
11
+ };
12
+ const entryOf = (ref) => {
13
+ const entry = refs.get(ref);
14
+ if (entry === undefined)
15
+ throw new TypeError("expected a Grammar.Ref");
16
+ return entry;
17
+ };
18
+ const refHandler = {
19
+ get(_target, key, receiver) {
20
+ if (key === RefTypeId)
21
+ return RefTypeId;
22
+ if (key === Symbol.toPrimitive)
23
+ return escaped;
24
+ if (key === "then" || key === "toJSON")
25
+ return undefined;
26
+ if (key === "valueOf" || key === "toString")
27
+ return escaped;
28
+ if (!Predicate.isString(key))
29
+ return undefined;
30
+ const entry = entryOf(receiver);
31
+ return refFor({ _tag: "Prop", object: entry.expr, key }, entry.scope);
32
+ },
33
+ };
34
+ const refFor = (expr, scope) => {
35
+ const ref = new Proxy(new RefImpl(), refHandler);
36
+ refs.set(ref, { expr, scope });
37
+ // SAFETY: refFor creates a proxy that implements the Ref interface for A.
38
+ return ref;
39
+ };
40
+ const isRef = (value) => Predicate.isObject(value) && refs.has(value);
41
+ export const assertInScope = (ref, where) => {
42
+ const entry = entryOf(ref);
43
+ if (!entry.scope.open) {
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
+ }
46
+ return entry.expr;
47
+ };
48
+ export const get = (ref, key) => {
49
+ const entry = entryOf(ref);
50
+ if (!entry.scope.open) {
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);
54
+ };
55
+ const isPlainObject = (value) => {
56
+ const proto = Object.getPrototypeOf(value);
57
+ return proto === Object.prototype || proto === null;
58
+ };
59
+ const toPattern = (value, active) => {
60
+ if (isRef(value)) {
61
+ const { expr } = entryOf(value);
62
+ if (expr._tag !== "Ref") {
63
+ throw new Error("gen: the return holds a property of a ref; printing cannot rebuild a value from one property, so return the whole ref");
64
+ }
65
+ return expr;
66
+ }
67
+ if (isGrammar(value)) {
68
+ throw new Error("gen: the return holds a grammar; yield* it to bind its value, then return the ref");
69
+ }
70
+ if (value === null ||
71
+ value === undefined ||
72
+ Predicate.isString(value) ||
73
+ Predicate.isNumber(value) ||
74
+ Predicate.isBoolean(value) ||
75
+ Predicate.isBigInt(value)) {
76
+ return { _tag: "Const", value };
77
+ }
78
+ if (!Predicate.isObjectOrArray(value)) {
79
+ throw new TypeError("gen: the return pattern contains an unsupported constant");
80
+ }
81
+ if (active.has(value))
82
+ throw new TypeError("gen: the return pattern is cyclic");
83
+ if (Object.getOwnPropertySymbols(value).length !== 0) {
84
+ throw new TypeError("gen: the return pattern contains symbol fields");
85
+ }
86
+ active.add(value);
87
+ try {
88
+ if (Array.isArray(value)) {
89
+ const names = Object.getOwnPropertyNames(value);
90
+ if (names.length !== value.length + 1) {
91
+ throw new TypeError("gen: return arrays must be dense tuples without extra fields");
92
+ }
93
+ const items = [];
94
+ for (let index = 0; index < value.length; index++) {
95
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
96
+ if (descriptor?.enumerable !== true) {
97
+ throw new TypeError("gen: return arrays must be dense tuples without extra fields");
98
+ }
99
+ items.push(toPattern(value[index], active));
100
+ }
101
+ return { _tag: "Array", items };
102
+ }
103
+ if (!isPlainObject(value)) {
104
+ throw new TypeError("gen: return objects must have Object.prototype or a null prototype");
105
+ }
106
+ const fields = [];
107
+ for (const key of Object.getOwnPropertyNames(value)) {
108
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
109
+ if (descriptor?.enumerable !== true) {
110
+ throw new TypeError("gen: return object fields must be enumerable");
111
+ }
112
+ fields.push([key, toPattern(value[key], active)]);
113
+ }
114
+ return { _tag: "Object", fields };
115
+ }
116
+ finally {
117
+ active.delete(value);
118
+ }
119
+ };
120
+ const validate = (scope, steps, result) => {
121
+ const binds = new Map();
122
+ steps.forEach((step, index) => {
123
+ if (step._tag === "Bind")
124
+ binds.set(step.slot, () => describeStep(step, index));
125
+ });
126
+ const returned = new Set();
127
+ const collect = (pattern) => {
128
+ switch (pattern._tag) {
129
+ case "Ref": {
130
+ if (pattern.scope !== scope || !binds.has(pattern.slot)) {
131
+ throw new Error("gen: the return holds a ref bound by another gen; return it from the gen that bound it");
132
+ }
133
+ if (returned.has(pattern.slot)) {
134
+ const where = binds.get(pattern.slot);
135
+ throw new Error(`gen: ${where?.() ?? "a binding"} is returned twice, so printing could not tell which copy to read`);
136
+ }
137
+ returned.add(pattern.slot);
138
+ return;
139
+ }
140
+ case "Const":
141
+ return;
142
+ case "Object":
143
+ for (const [, field] of pattern.fields)
144
+ collect(field);
145
+ return;
146
+ case "Array":
147
+ for (const item of pattern.items)
148
+ collect(item);
149
+ }
150
+ };
151
+ collect(result);
152
+ for (const [slot, where] of binds) {
153
+ if (!returned.has(slot)) {
154
+ throw new Error(`gen: ${where()} is parsed but not returned, so printing has nothing to print it from; return it, or discard it with skip`);
155
+ }
156
+ }
157
+ };
158
+ export const gen = (run) => {
159
+ const iterator = run();
160
+ const steps = [];
161
+ const scope = { id: { _tag: "ScopeId" }, open: true };
162
+ let slotCount = 0;
163
+ try {
164
+ let result = iterator.next();
165
+ while (!result.done) {
166
+ const grammar = result.value;
167
+ if (!isGrammar(grammar))
168
+ throw new TypeError("gen: only a grammar can be yielded");
169
+ if (isSilent(grammar)) {
170
+ steps.push({ _tag: "Silent", grammar });
171
+ result = iterator.next();
172
+ }
173
+ else {
174
+ const slot = slotCount++;
175
+ steps.push({ _tag: "Bind", slot, grammar });
176
+ result = iterator.next(refFor({ _tag: "Ref", scope: scope.id, slot }, scope));
177
+ }
178
+ }
179
+ const pattern = toPattern(result.value, new WeakSet());
180
+ validate(scope.id, steps, pattern);
181
+ const node = {
182
+ _tag: "Gen",
183
+ scope: scope.id,
184
+ slotCount,
185
+ steps,
186
+ result: pattern,
187
+ };
188
+ const bare = pattern._tag === "Const" && pattern.value === undefined;
189
+ // SAFETY: bare is derived from the Const pattern, and make/silent return the matching GenGrammar shape.
190
+ return (bare ? silent(node) : make(node));
191
+ }
192
+ finally {
193
+ scope.open = false;
194
+ }
195
+ };
196
+ export const seq = (...parts) => gen(function* () {
197
+ for (const part of parts)
198
+ yield* part;
199
+ });
200
+ //# sourceMappingURL=gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen.js","sourceRoot":"","sources":["../src/gen.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { ParseError, PrintError } from "./errors.ts";
2
- export type { Field, Fields, Grammar, Node, Part, Silent, Type } from "./core.ts";
3
- export { as, choice, decodeTo, type DecodeToOptions, empty, field, flag, gen, integer, label, lexeme, literal, many, optional, prefix, regex, type RepeatOptions, sepBy, seq, skip, suffix, suspend, symbol, transform, type TransformOptions, whitespace, wrap, } from "./combinators.ts";
1
+ export { ParseError, PrintError, type PrintIssue } from "./errors.ts";
2
+ export type { Grammar, GrammarIssue, Ref, Silent, Type } from "./core.ts";
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
4
  export { parse } from "./parse.ts";
5
5
  export { print } from "./print.ts";
6
- export { render } from "./render.ts";
7
- export { toSchema } from "./schema.ts";
6
+ export { describe, render } from "./render.ts";
7
+ export { codec } from "./schema.ts";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACjF,OAAO,EACL,EAAE,EACF,MAAM,EACN,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,EACH,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,gBAAgB,EACrB,UAAU,EACV,IAAI,GACL,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EACL,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EACR,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,EACL,IAAI,EACJ,GAAG,EACH,KAAK,UAAU,EACf,GAAG,EACH,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,QAAQ,EACR,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,EACL,IAAI,GACL,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { ParseError, PrintError } from "./errors.js";
2
- export { as, choice, decodeTo, empty, field, flag, gen, integer, label, lexeme, literal, many, optional, prefix, regex, sepBy, seq, skip, suffix, suspend, symbol, transform, whitespace, wrap, } from "./combinators.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, wrap, } from "./combinators.js";
3
3
  export { parse } from "./parse.js";
4
4
  export { print } from "./print.js";
5
- export { render } from "./render.js";
6
- export { toSchema } from "./schema.js";
5
+ export { describe, render } from "./render.js";
6
+ export { codec } from "./schema.js";
7
7
  //# 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,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EACL,EAAE,EACF,MAAM,EACN,QAAQ,EAER,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,EACH,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,EAEL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EAET,UAAU,EACV,IAAI,GACL,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAA;AAErE,OAAO,EACL,EAAE,EACF,OAAO,EACP,MAAM,EACN,QAAQ,EAER,SAAS,EACT,KAAK,EACL,IAAI,EACJ,GAAG,EAEH,GAAG,EACH,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,EACJ,KAAK,EACL,UAAU,EACV,QAAQ,EACR,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,EACL,IAAI,GACL,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAgJxC,eAAO,MAAM,KAAK,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CASxF,CAAA"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EACL,KAAK,OAAO,EAMb,MAAM,WAAW,CAAA;AAElB,OAAO,EAAoB,UAAU,EAAW,MAAM,aAAa,CAAA;AA8KnE,eAAO,MAAM,KAAK,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CASxF,CAAA"}