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.
- package/README.md +75 -136
- package/dist/ast.d.ts +115 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +253 -0
- package/dist/ast.js.map +1 -0
- package/dist/combinators.d.ts +66 -21
- package/dist/combinators.d.ts.map +1 -1
- package/dist/combinators.js +150 -47
- package/dist/combinators.js.map +1 -1
- package/dist/core.d.ts +111 -39
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +24 -20
- package/dist/core.js.map +1 -1
- package/dist/env.d.ts +20 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +63 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.d.ts +34 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +37 -4
- package/dist/errors.js.map +1 -1
- package/dist/gen.d.ts +7 -0
- package/dist/gen.d.ts.map +1 -0
- package/dist/gen.js +200 -0
- package/dist/gen.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +152 -114
- package/dist/parse.js.map +1 -1
- package/dist/pattern.d.ts +5 -0
- package/dist/pattern.d.ts.map +1 -0
- package/dist/pattern.js +46 -0
- package/dist/pattern.js.map +1 -0
- package/dist/print.d.ts +2 -1
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +201 -89
- package/dist/print.js.map +1 -1
- package/dist/recovery.d.ts +10 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +296 -0
- package/dist/recovery.js.map +1 -0
- package/dist/render.d.ts +4 -4
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +133 -42
- package/dist/render.js.map +1 -1
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +12 -5
- package/dist/schema.js.map +1 -1
- package/package.json +32 -16
package/dist/combinators.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
2
|
-
import { type
|
|
3
|
-
export {
|
|
1
|
+
import { Result, Schema } from "effect";
|
|
2
|
+
import { type Grammar, type GrammarInternal, type GrammarIssue, type MatchKey, type Ref, type Silent, type Type } from "./core.ts";
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
export declare function
|
|
10
|
-
export declare
|
|
11
|
-
export declare function
|
|
12
|
-
export declare
|
|
6
|
+
export declare const regex: (expression: RegExp, name: string) => Grammar<string>;
|
|
7
|
+
type PreserveGrammar<G extends GrammarInternal> = G extends Silent ? Silent : G extends Grammar<infer A> ? Grammar<A> : never;
|
|
8
|
+
type OptionalGrammar<G extends GrammarInternal> = G extends Silent ? Silent : G extends Grammar<infer A> ? Grammar<A | undefined> : never;
|
|
9
|
+
export declare function between(open: Silent | string, close: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
10
|
+
export declare function between(open: Silent | string, inner: Silent, close: Silent | string): Silent;
|
|
11
|
+
export declare function between<A>(open: Silent | string, inner: Grammar<A>, close: Silent | string): Grammar<A>;
|
|
12
|
+
export declare const wrap: typeof between;
|
|
13
|
+
export declare function prefix(open: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
13
14
|
export declare function prefix(open: Silent | string, inner: Silent): Silent;
|
|
14
15
|
export declare function prefix<A>(open: Silent | string, inner: Grammar<A>): Grammar<A>;
|
|
16
|
+
export declare function suffix(close: Silent | string): <G extends GrammarInternal>(inner: G) => PreserveGrammar<G>;
|
|
15
17
|
export declare function suffix(inner: Silent, close: Silent | string): Silent;
|
|
16
18
|
export declare function suffix<A>(inner: Grammar<A>, close: Silent | string): Grammar<A>;
|
|
17
|
-
export declare const choice: <const
|
|
19
|
+
export declare const choice: <const Grammars extends readonly [GrammarInternal, ...Array<GrammarInternal>]>(...options: Grammars) => Grammar<Type<Grammars[number]>>;
|
|
20
|
+
export declare function optional(): <G extends GrammarInternal>(inner: G) => OptionalGrammar<G>;
|
|
18
21
|
export declare function optional(inner: Silent): Silent;
|
|
19
22
|
export declare function optional<A>(inner: Grammar<A>): Grammar<A | undefined>;
|
|
20
23
|
export interface RepeatOptions {
|
|
@@ -22,12 +25,23 @@ export interface RepeatOptions {
|
|
|
22
25
|
readonly max?: number;
|
|
23
26
|
}
|
|
24
27
|
export declare const many: {
|
|
25
|
-
<A>(inner: Grammar<A>,
|
|
26
|
-
(
|
|
28
|
+
<A>(inner: Grammar<A>, options?: RepeatOptions): Grammar<ReadonlyArray<A>>;
|
|
29
|
+
(options?: RepeatOptions): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
27
30
|
};
|
|
28
31
|
export declare const sepBy: {
|
|
29
|
-
<A>(inner: Grammar<A>,
|
|
30
|
-
(
|
|
32
|
+
<A>(inner: Grammar<A>, separator: Silent | string, options?: RepeatOptions): Grammar<ReadonlyArray<A>>;
|
|
33
|
+
(separator: Silent | string, options?: RepeatOptions): <A>(inner: Grammar<A>) => Grammar<ReadonlyArray<A>>;
|
|
34
|
+
};
|
|
35
|
+
type FiniteString<K extends string> = string extends K ? never : K;
|
|
36
|
+
type CaseOutput<Cases> = Cases extends Readonly<Record<PropertyKey, GrammarInternal>> ? Type<Cases[keyof Cases]> : never;
|
|
37
|
+
export declare const match: <K extends string, const Cases extends Readonly<Record<K, GrammarInternal>>>(scrutinee: Ref<FiniteString<K>>, cases: Cases) => Grammar<CaseOutput<Cases>>;
|
|
38
|
+
type EntryOutput<Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>> = Type<Entries[number][1]>;
|
|
39
|
+
type CompleteEntries<K extends MatchKey, Entries extends ReadonlyArray<readonly [MatchKey, GrammarInternal]>> = Exclude<K, Entries[number][0]> extends never ? Entries : never;
|
|
40
|
+
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>;
|
|
42
|
+
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>>;
|
|
31
45
|
};
|
|
32
46
|
export interface TransformOptions<A, B> {
|
|
33
47
|
readonly decode: (a: A) => B;
|
|
@@ -36,18 +50,28 @@ export interface TransformOptions<A, B> {
|
|
|
36
50
|
readonly name?: string;
|
|
37
51
|
}
|
|
38
52
|
export declare const transform: {
|
|
39
|
-
<A, B>(
|
|
40
|
-
<A, B>(inner: Grammar<A>,
|
|
53
|
+
<A, B>(options: TransformOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
54
|
+
<A, B>(inner: Grammar<A>, options: TransformOptions<A, B>): Grammar<B>;
|
|
55
|
+
};
|
|
56
|
+
export interface TransformOrFailOptions<A, B> {
|
|
57
|
+
readonly decode: (a: A) => Result.Result<B, GrammarIssue>;
|
|
58
|
+
readonly encode: (b: B) => Result.Result<A, GrammarIssue>;
|
|
59
|
+
readonly is?: (value: B) => boolean;
|
|
60
|
+
readonly name?: string;
|
|
61
|
+
}
|
|
62
|
+
export declare const transformOrFail: {
|
|
63
|
+
<A, B>(options: TransformOrFailOptions<A, B>): (inner: Grammar<A>) => Grammar<B>;
|
|
64
|
+
<A, B>(inner: Grammar<A>, options: TransformOrFailOptions<A, B>): Grammar<B>;
|
|
41
65
|
};
|
|
42
66
|
export interface DecodeToOptions<A, T> extends Omit<TransformOptions<A, T>, "is"> {
|
|
43
67
|
readonly is?: ((value: T) => boolean) | undefined;
|
|
44
68
|
}
|
|
45
|
-
export declare const decodeTo: <T>(schema: Schema.Codec<T, unknown, unknown, unknown>) => <A>(
|
|
69
|
+
export declare const decodeTo: <T>(schema: Schema.Codec<T, unknown, unknown, unknown>) => <A>(options: DecodeToOptions<A, T>) => (inner: Grammar<A>) => Grammar<T>;
|
|
46
70
|
export declare const as: {
|
|
47
71
|
<const V>(value: V): (inner: Silent) => Grammar<V>;
|
|
48
72
|
<const V>(inner: Silent, value: V): Grammar<V>;
|
|
49
73
|
};
|
|
50
|
-
export declare const flag: (
|
|
74
|
+
export declare const flag: (value: Silent | string) => Grammar<boolean>;
|
|
51
75
|
export declare const skip: {
|
|
52
76
|
<A>(printAs: A): (inner: Grammar<A>) => Silent;
|
|
53
77
|
<A>(inner: Grammar<A>, printAs: A): Silent;
|
|
@@ -57,9 +81,30 @@ export declare const label: {
|
|
|
57
81
|
<A>(inner: Grammar<A>, name: string): Grammar<A>;
|
|
58
82
|
};
|
|
59
83
|
export declare const suspend: <A>(thunk: () => Grammar<A>, name?: string) => Grammar<A>;
|
|
60
|
-
export declare const
|
|
84
|
+
export declare const defaulted: {
|
|
85
|
+
<A>(value: A): (inner: Grammar<A | undefined>) => Grammar<A>;
|
|
86
|
+
<A>(inner: Grammar<A | undefined>, value: A): Grammar<A>;
|
|
87
|
+
};
|
|
88
|
+
type StructFields = Readonly<Record<string, GrammarInternal>>;
|
|
89
|
+
type StructValue<Fields extends StructFields> = {
|
|
90
|
+
readonly [K in keyof Fields]: Type<Fields[K]>;
|
|
91
|
+
};
|
|
92
|
+
export declare const struct: <const Fields extends StructFields>(fields: Fields) => Grammar<StructValue<Fields>>;
|
|
93
|
+
type TupleValue<Elements extends ReadonlyArray<GrammarInternal>> = {
|
|
94
|
+
readonly [K in keyof Elements]: Type<Elements[K]>;
|
|
95
|
+
};
|
|
96
|
+
export declare const tuple: <const Elements extends ReadonlyArray<GrammarInternal>>(...elements: Elements) => Grammar<TupleValue<Elements>>;
|
|
97
|
+
type TaggedValue<Tag extends string, Cases extends Readonly<Record<string, GrammarInternal>>> = {
|
|
98
|
+
readonly [K in keyof Cases & string]: Readonly<Record<Tag, K>> & {
|
|
99
|
+
readonly value: Type<Cases[K]>;
|
|
100
|
+
};
|
|
101
|
+
}[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>>;
|
|
103
|
+
export declare const trivia: Silent;
|
|
104
|
+
export declare const space: Silent;
|
|
105
|
+
export declare const spaces: Silent;
|
|
61
106
|
export declare function lexeme(inner: Silent): Silent;
|
|
62
107
|
export declare function lexeme<A>(inner: Grammar<A>): Grammar<A>;
|
|
63
|
-
export declare const symbol: (
|
|
108
|
+
export declare const symbol: (value: string) => Silent;
|
|
64
109
|
export declare const integer: Grammar<number>;
|
|
65
110
|
//# sourceMappingURL=combinators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
package/dist/combinators.js
CHANGED
|
@@ -1,77 +1,180 @@
|
|
|
1
|
-
import { Equal, Function as F, Schema } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { Equal, Function as F, Predicate, Result, Schema } from "effect";
|
|
2
|
+
import { isGrammar, isSilent, make, silent, } from "./core.js";
|
|
3
|
+
import { isCount } from "./env.js";
|
|
4
|
+
import { exceptionMessage, preview } from "./errors.js";
|
|
5
|
+
import { assertInScope } from "./gen.js";
|
|
6
|
+
export { gen, get, seq } from "./gen.js";
|
|
5
7
|
export const literal = (value) => silent({ _tag: "Literal", value });
|
|
6
8
|
export const empty = literal("");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return make({
|
|
11
|
-
_tag: "Regex",
|
|
12
|
-
re: new RegExp(re.source, `${flags}y`),
|
|
13
|
-
whole: new RegExp(`^(?:${re.source})$`, flags),
|
|
14
|
-
name,
|
|
15
|
-
});
|
|
9
|
+
export const regex = (expression, name) => {
|
|
10
|
+
const flags = expression.flags.replace(/[gy]/g, "");
|
|
11
|
+
return make({ _tag: "Regex", re: new RegExp(expression.source, `${flags}y`), name });
|
|
16
12
|
};
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export function
|
|
24
|
-
|
|
13
|
+
const toSilent = (value) => Predicate.isString(value) ? literal(value) : value;
|
|
14
|
+
const preserveSilence = (inner, node) => {
|
|
15
|
+
if (isSilent(inner))
|
|
16
|
+
return silent(node);
|
|
17
|
+
return make(node);
|
|
18
|
+
};
|
|
19
|
+
export function between(open, innerOrClose, close) {
|
|
20
|
+
if (close === undefined) {
|
|
21
|
+
// SAFETY: the two-argument overload accepts only a Silent or string here.
|
|
22
|
+
const closing = toSilent(innerOrClose);
|
|
23
|
+
return (inner) => between(open, inner, closing);
|
|
24
|
+
}
|
|
25
|
+
// SAFETY: the three-argument overload requires a Grammar as its second argument.
|
|
26
|
+
const inner = innerOrClose;
|
|
27
|
+
return preserveSilence(inner, {
|
|
25
28
|
_tag: "Wrap",
|
|
26
|
-
open:
|
|
29
|
+
open: toSilent(open),
|
|
27
30
|
inner,
|
|
28
|
-
close:
|
|
31
|
+
close: toSilent(close),
|
|
29
32
|
});
|
|
30
33
|
}
|
|
34
|
+
export const wrap = between;
|
|
31
35
|
export function prefix(open, inner) {
|
|
32
|
-
return
|
|
36
|
+
return inner === undefined
|
|
37
|
+
? (value) => between(open, value, empty)
|
|
38
|
+
: between(open, inner, empty);
|
|
33
39
|
}
|
|
34
|
-
export function suffix(
|
|
35
|
-
|
|
40
|
+
export function suffix(innerOrClose, close) {
|
|
41
|
+
if (close === undefined) {
|
|
42
|
+
// SAFETY: the one-argument overload accepts only a Silent or string here.
|
|
43
|
+
return (inner) => between(empty, inner, innerOrClose);
|
|
44
|
+
}
|
|
45
|
+
// SAFETY: the two-argument overload requires a Grammar as its first argument.
|
|
46
|
+
return between(empty, innerOrClose, close);
|
|
36
47
|
}
|
|
37
48
|
export const choice = (...options) => make({ _tag: "Choice", options });
|
|
38
49
|
export function optional(inner) {
|
|
39
|
-
|
|
50
|
+
if (inner === undefined)
|
|
51
|
+
return (value) => optional(value);
|
|
52
|
+
return preserveSilence(inner, { _tag: "Optional", inner });
|
|
40
53
|
}
|
|
41
|
-
const bounds = (name,
|
|
42
|
-
const min =
|
|
43
|
-
const max =
|
|
44
|
-
if (!
|
|
54
|
+
const bounds = (name, options) => {
|
|
55
|
+
const min = options?.min ?? 0;
|
|
56
|
+
const max = options?.max ?? Number.POSITIVE_INFINITY;
|
|
57
|
+
if (!isCount(min))
|
|
45
58
|
throw new RangeError(`${name}: min must be a non-negative safe integer`);
|
|
46
|
-
|
|
47
|
-
if (max !== Number.POSITIVE_INFINITY && !(Number.isSafeInteger(max) && max >= min)) {
|
|
59
|
+
if (max !== Number.POSITIVE_INFINITY && (!isCount(max) || max < min)) {
|
|
48
60
|
throw new RangeError(`${name}: max must be a safe integer >= min`);
|
|
49
61
|
}
|
|
50
62
|
return { min, max };
|
|
51
63
|
};
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
export const
|
|
55
|
-
export const
|
|
56
|
-
export const
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
const dataFirst = (args) => isGrammar(args[0]);
|
|
65
|
+
const repeatNode = (name, inner, separator, options) => make({ _tag: "Many", inner, sep: separator, ...bounds(name, options) });
|
|
66
|
+
export const many = F.dual(dataFirst, (inner, options) => repeatNode("many", inner, empty, options));
|
|
67
|
+
export const sepBy = F.dual(dataFirst, (inner, separator, options) => repeatNode("sepBy", inner, toSilent(separator), options));
|
|
68
|
+
export const match = (scrutinee, cases) => make({
|
|
69
|
+
_tag: "Match",
|
|
70
|
+
scrutinee: assertInScope(scrutinee, "match"),
|
|
71
|
+
// SAFETY: Object.keys returns only keys from the closed Cases record.
|
|
72
|
+
cases: Object.keys(cases).map((key) => ({ key, grammar: cases[key] })),
|
|
73
|
+
});
|
|
74
|
+
export const matchValue = (scrutinee, entries) => make({
|
|
75
|
+
_tag: "Match",
|
|
76
|
+
scrutinee: assertInScope(scrutinee, "matchValue"),
|
|
77
|
+
cases: entries.map(([key, grammar]) => ({ key, grammar })),
|
|
78
|
+
});
|
|
79
|
+
export const take = (count) => make({ _tag: "Take", count: assertInScope(count, "take") });
|
|
80
|
+
export const repeat = F.dual(dataFirst, (inner, count) => make({ _tag: "RepeatExact", count: assertInScope(count, "repeat"), inner }));
|
|
81
|
+
const attempt = (decode) => (a) => {
|
|
82
|
+
try {
|
|
83
|
+
return Result.succeed(decode(a));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return Result.fail({ message: exceptionMessage(error) });
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export const transform = F.dual(2, (inner, options) => make({
|
|
90
|
+
_tag: "Transform",
|
|
91
|
+
inner,
|
|
92
|
+
decode: attempt(options.decode),
|
|
93
|
+
encode: attempt(options.encode),
|
|
94
|
+
is: options.is,
|
|
95
|
+
name: options.name,
|
|
96
|
+
}));
|
|
97
|
+
export const transformOrFail = F.dual(2, (inner, options) => make({ _tag: "Transform", inner, ...options }));
|
|
98
|
+
export const decodeTo = (schema) => (options) => (inner) => {
|
|
99
|
+
let guard;
|
|
100
|
+
return transform(inner, {
|
|
101
|
+
...options,
|
|
102
|
+
is: options.is ?? ((value) => (guard ??= Schema.is(schema))(value)),
|
|
103
|
+
});
|
|
59
104
|
};
|
|
60
105
|
export const as = F.dual(2, (inner, value) => transform(inner, {
|
|
61
106
|
decode: () => value,
|
|
62
107
|
encode: () => undefined,
|
|
63
|
-
is: (
|
|
108
|
+
is: (input) => Equal.equals(input, value),
|
|
64
109
|
name: preview(value),
|
|
65
110
|
}));
|
|
66
|
-
export const flag = (
|
|
111
|
+
export const flag = (value) => choice(as(toSilent(value), true), as(empty, false));
|
|
67
112
|
export const skip = F.dual(2, (inner, printAs) => silent({ _tag: "Skip", inner, printAs, show: true }));
|
|
68
113
|
export const label = F.dual(2, (inner, name) => make({ _tag: "Label", inner, name }));
|
|
69
114
|
export const suspend = (thunk, name) => make({ _tag: "Suspend", thunk, name });
|
|
70
|
-
const
|
|
71
|
-
|
|
115
|
+
export const defaulted = F.dual(dataFirst, (inner, value) => transform(inner, {
|
|
116
|
+
decode: (input) => input ?? value,
|
|
117
|
+
encode: (input) => (Equal.equals(input, value) ? undefined : input),
|
|
118
|
+
}));
|
|
119
|
+
export const struct = (fields) => {
|
|
120
|
+
const scope = { _tag: "ScopeId" };
|
|
121
|
+
const entries = Object.entries(fields);
|
|
122
|
+
return make({
|
|
123
|
+
_tag: "Gen",
|
|
124
|
+
scope,
|
|
125
|
+
slotCount: entries.length,
|
|
126
|
+
steps: entries.map(([, grammar], slot) => ({ _tag: "Bind", slot, grammar })),
|
|
127
|
+
result: {
|
|
128
|
+
_tag: "Object",
|
|
129
|
+
fields: entries.map(([key], slot) => [key, { _tag: "Ref", scope, slot }]),
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
export const tuple = (...elements) => {
|
|
134
|
+
const scope = { _tag: "ScopeId" };
|
|
135
|
+
return make({
|
|
136
|
+
_tag: "Gen",
|
|
137
|
+
scope,
|
|
138
|
+
slotCount: elements.length,
|
|
139
|
+
steps: elements.map((grammar, slot) => ({ _tag: "Bind", slot, grammar })),
|
|
140
|
+
result: {
|
|
141
|
+
_tag: "Array",
|
|
142
|
+
items: elements.map((_, slot) => ({ _tag: "Ref", scope, slot })),
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
export const taggedChoice = (tag, cases) => {
|
|
147
|
+
const branches = Object.entries(cases).map(([key, grammar]) => make({
|
|
148
|
+
_tag: "Transform",
|
|
149
|
+
inner: grammar,
|
|
150
|
+
decode: (value) => Result.succeed({ [tag]: key, value }),
|
|
151
|
+
encode: (value) => Result.succeed(Object(value).value),
|
|
152
|
+
is: (value) => {
|
|
153
|
+
if (!Predicate.isObject(value) || !Object.hasOwn(value, tag))
|
|
154
|
+
return false;
|
|
155
|
+
return Object.is(value[tag], key) && Object.hasOwn(value, "value");
|
|
156
|
+
},
|
|
157
|
+
name: `${tag}=${preview(key)}`,
|
|
158
|
+
}));
|
|
159
|
+
if (branches.length === 0)
|
|
160
|
+
throw new RangeError("taggedChoice: at least one case is required");
|
|
161
|
+
return make({ _tag: "Choice", options: branches });
|
|
162
|
+
};
|
|
163
|
+
const hiddenWhitespace = (expression, name, printAs) => silent({ _tag: "Skip", inner: regex(expression, name), printAs, show: false });
|
|
164
|
+
export const trivia = hiddenWhitespace(/\s*/, "trivia", "");
|
|
165
|
+
export const space = literal(" ");
|
|
166
|
+
export const spaces = hiddenWhitespace(/\s+/, "whitespace", " ");
|
|
72
167
|
export function lexeme(inner) {
|
|
73
|
-
return suffix(inner,
|
|
168
|
+
return suffix(inner, trivia);
|
|
74
169
|
}
|
|
75
|
-
export const symbol = (
|
|
76
|
-
export const integer = regex(/-?\d+/, "integer").pipe(transform({
|
|
170
|
+
export const symbol = (value) => lexeme(literal(value));
|
|
171
|
+
export const integer = regex(/-?\d+/, "integer").pipe(transform({
|
|
172
|
+
decode: (text) => {
|
|
173
|
+
const value = Number(text);
|
|
174
|
+
return Object.is(value, -0) ? 0 : value;
|
|
175
|
+
},
|
|
176
|
+
encode: String,
|
|
177
|
+
is: Number.isSafeInteger,
|
|
178
|
+
name: "integer",
|
|
179
|
+
}));
|
|
77
180
|
//# sourceMappingURL=combinators.js.map
|
package/dist/combinators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../src/combinators.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -1,85 +1,157 @@
|
|
|
1
|
-
import { Pipeable, type Types } from "effect";
|
|
2
|
-
|
|
1
|
+
import { Pipeable, Result, type Types } from "effect";
|
|
2
|
+
declare const GrammarTypeId: unique symbol;
|
|
3
|
+
declare const SilentTypeId: unique symbol;
|
|
4
|
+
declare const NodeTypeId: unique symbol;
|
|
5
|
+
export declare const RefTypeId: unique symbol;
|
|
6
|
+
/** Every JavaScript value; `{}` is TypeScript's non-nullish top type. */
|
|
7
|
+
export type Value = {} | null | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Bridges an erased node callback with the runtime value produced for that
|
|
10
|
+
* node. Node callbacks are stored as `never`-argument functions so the
|
|
11
|
+
* public combinator types stay precise; this is the single choke point where
|
|
12
|
+
* the runtime value is passed to them.
|
|
13
|
+
*/
|
|
14
|
+
export declare const unsafeToNever: (value: Value) => never;
|
|
15
|
+
export interface ScopeId {
|
|
16
|
+
readonly _tag: "ScopeId";
|
|
17
|
+
}
|
|
3
18
|
export interface Bounds {
|
|
4
19
|
readonly min: number;
|
|
5
20
|
readonly max: number;
|
|
6
21
|
}
|
|
22
|
+
export interface RefExpr {
|
|
23
|
+
readonly _tag: "Ref";
|
|
24
|
+
readonly scope: ScopeId;
|
|
25
|
+
readonly slot: number;
|
|
26
|
+
}
|
|
27
|
+
export type Expr = RefExpr | {
|
|
28
|
+
readonly _tag: "Prop";
|
|
29
|
+
readonly object: Expr;
|
|
30
|
+
readonly key: PropertyKey;
|
|
31
|
+
};
|
|
32
|
+
export type Pattern = RefExpr | {
|
|
33
|
+
readonly _tag: "Const";
|
|
34
|
+
readonly value: Value;
|
|
35
|
+
} | {
|
|
36
|
+
readonly _tag: "Object";
|
|
37
|
+
readonly fields: ReadonlyArray<readonly [string, Pattern]>;
|
|
38
|
+
} | {
|
|
39
|
+
readonly _tag: "Array";
|
|
40
|
+
readonly items: ReadonlyArray<Pattern>;
|
|
41
|
+
};
|
|
42
|
+
export type MatchKey = string | number | boolean;
|
|
43
|
+
export interface GrammarIssue {
|
|
44
|
+
readonly message: string;
|
|
45
|
+
}
|
|
46
|
+
export interface GrammarInternal extends Pipeable.Pipeable {
|
|
47
|
+
readonly [NodeTypeId]: Node;
|
|
48
|
+
}
|
|
49
|
+
export interface Case {
|
|
50
|
+
readonly key: MatchKey;
|
|
51
|
+
readonly grammar: GrammarInternal;
|
|
52
|
+
}
|
|
53
|
+
export type Step = {
|
|
54
|
+
readonly _tag: "Silent";
|
|
55
|
+
readonly grammar: Silent;
|
|
56
|
+
} | {
|
|
57
|
+
readonly _tag: "Bind";
|
|
58
|
+
readonly slot: number;
|
|
59
|
+
readonly grammar: GrammarInternal;
|
|
60
|
+
};
|
|
7
61
|
export type Node = {
|
|
8
62
|
readonly _tag: "Literal";
|
|
9
63
|
readonly value: string;
|
|
10
64
|
} | {
|
|
11
65
|
readonly _tag: "Regex";
|
|
12
66
|
readonly re: RegExp;
|
|
13
|
-
readonly whole: RegExp;
|
|
14
67
|
readonly name: string;
|
|
15
|
-
} | {
|
|
16
|
-
readonly _tag: "Seq";
|
|
17
|
-
readonly parts: ReadonlyArray<Part>;
|
|
18
68
|
} | {
|
|
19
69
|
readonly _tag: "Gen";
|
|
20
|
-
readonly
|
|
70
|
+
readonly scope: ScopeId;
|
|
71
|
+
readonly slotCount: number;
|
|
72
|
+
readonly steps: ReadonlyArray<Step>;
|
|
73
|
+
readonly result: Pattern;
|
|
21
74
|
} | {
|
|
22
75
|
readonly _tag: "Wrap";
|
|
23
76
|
readonly open: Silent;
|
|
24
|
-
readonly inner:
|
|
77
|
+
readonly inner: GrammarInternal;
|
|
25
78
|
readonly close: Silent;
|
|
26
79
|
} | {
|
|
27
80
|
readonly _tag: "Choice";
|
|
28
|
-
readonly options: ReadonlyArray<
|
|
81
|
+
readonly options: ReadonlyArray<GrammarInternal>;
|
|
29
82
|
} | ({
|
|
30
83
|
readonly _tag: "Many";
|
|
31
|
-
readonly inner:
|
|
84
|
+
readonly inner: GrammarInternal;
|
|
32
85
|
readonly sep: Silent;
|
|
33
86
|
} & Bounds) | {
|
|
34
87
|
readonly _tag: "Optional";
|
|
35
|
-
readonly inner:
|
|
88
|
+
readonly inner: GrammarInternal;
|
|
36
89
|
} | {
|
|
37
90
|
readonly _tag: "Transform";
|
|
38
|
-
readonly inner:
|
|
39
|
-
readonly decode: (a:
|
|
40
|
-
readonly encode: (b:
|
|
41
|
-
readonly is?: ((value:
|
|
91
|
+
readonly inner: GrammarInternal;
|
|
92
|
+
readonly decode: (a: never) => Result.Result<Value, GrammarIssue>;
|
|
93
|
+
readonly encode: (b: never) => Result.Result<Value, GrammarIssue>;
|
|
94
|
+
readonly is?: ((value: never) => boolean) | undefined;
|
|
42
95
|
readonly name?: string | undefined;
|
|
43
96
|
} | {
|
|
44
97
|
readonly _tag: "Skip";
|
|
45
|
-
readonly inner:
|
|
46
|
-
readonly printAs:
|
|
98
|
+
readonly inner: GrammarInternal;
|
|
99
|
+
readonly printAs: Value;
|
|
47
100
|
readonly show: boolean;
|
|
48
101
|
} | {
|
|
49
102
|
readonly _tag: "Label";
|
|
50
|
-
readonly inner:
|
|
103
|
+
readonly inner: GrammarInternal;
|
|
51
104
|
readonly name: string;
|
|
52
105
|
} | {
|
|
53
106
|
readonly _tag: "Suspend";
|
|
54
|
-
readonly thunk: () =>
|
|
107
|
+
readonly thunk: () => GrammarInternal;
|
|
55
108
|
readonly name?: string | undefined;
|
|
56
|
-
resolved?:
|
|
109
|
+
resolved?: GrammarInternal | undefined;
|
|
110
|
+
} | {
|
|
111
|
+
readonly _tag: "Match";
|
|
112
|
+
readonly scrutinee: Expr;
|
|
113
|
+
readonly cases: ReadonlyArray<Case>;
|
|
114
|
+
} | {
|
|
115
|
+
readonly _tag: "Take";
|
|
116
|
+
readonly count: Expr;
|
|
117
|
+
} | {
|
|
118
|
+
readonly _tag: "RepeatExact";
|
|
119
|
+
readonly count: Expr;
|
|
120
|
+
readonly inner: GrammarInternal;
|
|
57
121
|
};
|
|
58
|
-
export
|
|
59
|
-
|
|
60
|
-
|
|
122
|
+
export type Bound<A> = [A] extends [void] ? void : Ref<A>;
|
|
123
|
+
export interface GrammarIterator<A> {
|
|
124
|
+
next(...args: ReadonlyArray<unknown>): IteratorResult<Grammar<A>, Bound<A>>;
|
|
125
|
+
}
|
|
126
|
+
export interface Grammar<in out A> extends GrammarInternal {
|
|
127
|
+
readonly [GrammarTypeId]: Types.Invariant<A>;
|
|
128
|
+
[Symbol.iterator](): GrammarIterator<A>;
|
|
61
129
|
}
|
|
62
130
|
export interface Silent extends Grammar<void> {
|
|
63
|
-
[
|
|
131
|
+
readonly [SilentTypeId]: true;
|
|
64
132
|
}
|
|
65
|
-
export interface
|
|
66
|
-
readonly
|
|
67
|
-
readonly grammar: Grammar<A>;
|
|
68
|
-
[Symbol.iterator](): Iterator<Field<K, A>, A>;
|
|
133
|
+
export interface RefBase<out A> {
|
|
134
|
+
readonly [RefTypeId]: Types.Covariant<A>;
|
|
69
135
|
}
|
|
136
|
+
type RefProps<A> = [A] extends [ReadonlyArray<unknown>] ? {
|
|
137
|
+
readonly length: Ref<number>;
|
|
138
|
+
} : [A] extends [object] ? {
|
|
139
|
+
readonly [K in keyof A & string]-?: Ref<A[K]>;
|
|
140
|
+
} : {};
|
|
141
|
+
export type Ref<A> = RefBase<A> & RefProps<A>;
|
|
142
|
+
export type Denote<T> = T extends RefBase<infer A> ? A : T extends ReadonlyArray<unknown> ? {
|
|
143
|
+
-readonly [K in keyof T]: Denote<T[K]>;
|
|
144
|
+
} : T extends object ? {
|
|
145
|
+
-readonly [K in keyof T]: Denote<T[K]>;
|
|
146
|
+
} : T;
|
|
147
|
+
export type Type<G> = G extends Grammar<infer A> ? A : never;
|
|
148
|
+
export declare const nodeOf: (grammar: GrammarInternal) => Node;
|
|
70
149
|
export declare const make: <A>(node: Node) => Grammar<A>;
|
|
71
150
|
export declare const silent: (node: Node) => Silent;
|
|
72
|
-
export declare const
|
|
73
|
-
export declare const
|
|
74
|
-
export declare const
|
|
75
|
-
export declare const isField: (p: Part) => p is Field<string, any>;
|
|
76
|
-
export declare const resolve: (n: Extract<Node, {
|
|
151
|
+
export declare const isGrammar: <T>(value: T) => value is T & GrammarInternal;
|
|
152
|
+
export declare const isSilent: (grammar: GrammarInternal) => grammar is Silent;
|
|
153
|
+
export declare const resolve: (node: Extract<Node, {
|
|
77
154
|
_tag: "Suspend";
|
|
78
|
-
}>) =>
|
|
79
|
-
export type Type<G> = G extends Grammar<infer A> ? A : never;
|
|
80
|
-
type Names<Y> = Y extends Field<infer K, any> ? K : never;
|
|
81
|
-
export type Fields<Y> = {
|
|
82
|
-
[K in Names<Y>]: Y extends Field<K, infer A> ? A : never;
|
|
83
|
-
};
|
|
155
|
+
}>) => GrammarInternal;
|
|
84
156
|
export {};
|
|
85
157
|
//# sourceMappingURL=core.d.ts.map
|