@thomasfosterau/effect-parse 0.0.0 → 0.2.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 +247 -230
- package/dist/Ascii.d.ts +32 -53
- package/dist/Ascii.d.ts.map +1 -1
- package/dist/Ascii.js +576 -571
- package/dist/Ascii.js.map +1 -1
- package/dist/Binary.d.ts +6 -29
- package/dist/Binary.d.ts.map +1 -1
- package/dist/Binary.js +129 -116
- package/dist/Binary.js.map +1 -1
- package/dist/Bits.d.ts +4 -2
- package/dist/Bits.d.ts.map +1 -1
- package/dist/Bits.js +121 -123
- package/dist/Bits.js.map +1 -1
- package/dist/Compiler.d.ts +39 -0
- package/dist/Compiler.d.ts.map +1 -0
- package/dist/Compiler.js +48 -0
- package/dist/Compiler.js.map +1 -0
- package/dist/Encoding.d.ts +29 -46
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +76 -75
- package/dist/Encoding.js.map +1 -1
- package/dist/Expression.d.ts +15 -49
- package/dist/Expression.d.ts.map +1 -1
- package/dist/Expression.js +143 -131
- package/dist/Expression.js.map +1 -1
- package/dist/Input.d.ts +206 -177
- package/dist/Input.d.ts.map +1 -1
- package/dist/Input.js +317 -299
- package/dist/Input.js.map +1 -1
- package/dist/Nom.d.ts +44 -84
- package/dist/Nom.d.ts.map +1 -1
- package/dist/Nom.js +423 -453
- package/dist/Nom.js.map +1 -1
- package/dist/ParseError.d.ts +54 -49
- package/dist/ParseError.d.ts.map +1 -1
- package/dist/ParseError.js +233 -275
- package/dist/ParseError.js.map +1 -1
- package/dist/Parser.d.ts +345 -313
- package/dist/Parser.d.ts.map +1 -1
- package/dist/Parser.js +2010 -1802
- package/dist/Parser.js.map +1 -1
- package/dist/ParserSchema.d.ts +8 -7
- package/dist/ParserSchema.d.ts.map +1 -1
- package/dist/ParserSchema.js +49 -49
- package/dist/ParserSchema.js.map +1 -1
- package/dist/ParserStream.d.ts +26 -20
- package/dist/ParserStream.d.ts.map +1 -1
- package/dist/ParserStream.js +267 -255
- package/dist/ParserStream.js.map +1 -1
- package/dist/Syntax.d.ts +401 -0
- package/dist/Syntax.d.ts.map +1 -0
- package/dist/Syntax.js +717 -0
- package/dist/Syntax.js.map +1 -0
- package/dist/Text.d.ts +98 -134
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +534 -496
- package/dist/Text.js.map +1 -1
- package/dist/Token.d.ts +60 -42
- package/dist/Token.d.ts.map +1 -1
- package/dist/Token.js +331 -265
- package/dist/Token.js.map +1 -1
- package/dist/index.d.ts +16 -17
- package/dist/index.js +16 -17
- package/dist/internal/compiler/closure.d.ts +14 -16
- package/dist/internal/compiler/closure.d.ts.map +1 -1
- package/dist/internal/compiler/closure.js +1458 -1637
- package/dist/internal/compiler/closure.js.map +1 -1
- package/dist/internal/compiler/entries.d.ts +11 -11
- package/dist/internal/compiler/entries.d.ts.map +1 -1
- package/dist/internal/compiler/entries.js +36 -26
- package/dist/internal/compiler/entries.js.map +1 -1
- package/dist/internal/compiler/first.d.ts +19 -19
- package/dist/internal/compiler/first.d.ts.map +1 -1
- package/dist/internal/compiler/first.js +251 -227
- package/dist/internal/compiler/first.js.map +1 -1
- package/dist/internal/compiler/jit.d.ts +6 -17
- package/dist/internal/compiler/jit.d.ts.map +1 -1
- package/dist/internal/compiler/jit.js +860 -988
- package/dist/internal/compiler/jit.js.map +1 -1
- package/dist/internal/compiler/registry.d.ts +20 -21
- package/dist/internal/compiler/registry.d.ts.map +1 -1
- package/dist/internal/compiler/registry.js +21 -41
- package/dist/internal/compiler/registry.js.map +1 -1
- package/dist/internal/compiler/sets.d.ts +9 -13
- package/dist/internal/compiler/sets.d.ts.map +1 -1
- package/dist/internal/compiler/sets.js +76 -73
- package/dist/internal/compiler/sets.js.map +1 -1
- package/dist/internal/entries.d.ts +3 -3
- package/dist/internal/entries.d.ts.map +1 -1
- package/dist/internal/entries.js +38 -30
- package/dist/internal/entries.js.map +1 -1
- package/dist/internal/node.d.ts +177 -173
- package/dist/internal/node.d.ts.map +1 -1
- package/dist/internal/node.js +77 -66
- package/dist/internal/node.js.map +1 -1
- package/dist/internal/numbers.d.ts +7 -8
- package/dist/internal/numbers.d.ts.map +1 -1
- package/dist/internal/numbers.js +246 -276
- package/dist/internal/numbers.js.map +1 -1
- package/dist/internal/resume.d.ts +6 -24
- package/dist/internal/resume.d.ts.map +1 -1
- package/dist/internal/resume.js +30 -29
- package/dist/internal/resume.js.map +1 -1
- package/dist/internal/run.d.ts +15 -0
- package/dist/internal/run.d.ts.map +1 -0
- package/dist/internal/run.js +36 -0
- package/dist/internal/run.js.map +1 -0
- package/dist/internal/stack.d.ts +16 -0
- package/dist/internal/stack.d.ts.map +1 -0
- package/dist/internal/stack.js +26 -0
- package/dist/internal/stack.js.map +1 -0
- package/dist/internal/syntax.d.ts +146 -0
- package/dist/internal/syntax.d.ts.map +1 -0
- package/dist/internal/syntax.js +305 -0
- package/dist/internal/syntax.js.map +1 -0
- package/dist/internal/text.d.ts +10 -2
- package/dist/internal/text.d.ts.map +1 -1
- package/dist/internal/text.js +295 -345
- package/dist/internal/text.js.map +1 -1
- package/dist/internal/tokens.d.ts +25 -30
- package/dist/internal/tokens.d.ts.map +1 -1
- package/dist/internal/tokens.js +369 -363
- package/dist/internal/tokens.js.map +1 -1
- package/package.json +42 -28
- package/src/Ascii.ts +278 -187
- package/src/Binary.ts +150 -44
- package/src/Bits.ts +6 -3
- package/src/Compiler.ts +98 -0
- package/src/Expression.ts +10 -5
- package/src/Input.ts +106 -28
- package/src/Nom.ts +4 -3
- package/src/ParseError.ts +48 -51
- package/src/Parser.ts +1163 -795
- package/src/ParserStream.ts +104 -80
- package/src/Syntax.ts +900 -0
- package/src/Text.ts +272 -187
- package/src/Token.ts +180 -87
- package/src/index.ts +2 -0
- package/src/internal/compiler/closure.ts +121 -88
- package/src/internal/compiler/entries.ts +21 -8
- package/src/internal/compiler/first.ts +17 -15
- package/src/internal/compiler/jit.ts +360 -157
- package/src/internal/compiler/registry.ts +12 -33
- package/src/internal/compiler/sets.ts +17 -11
- package/src/internal/entries.ts +4 -2
- package/src/internal/node.ts +51 -37
- package/src/internal/numbers.ts +22 -20
- package/src/internal/resume.ts +8 -4
- package/src/internal/run.ts +41 -0
- package/src/internal/stack.ts +36 -0
- package/src/internal/syntax.ts +421 -0
- package/src/internal/text.ts +32 -25
- package/src/internal/tokens.ts +96 -51
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/ParserSchema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParserSchema.js","
|
|
1
|
+
{"version":3,"file":"ParserSchema.js","names":[],"sources":["../src/ParserSchema.ts"],"sourcesContent":["/**\n * Building Effect `Schema`s from parsers.\n *\n * A parser over strings becomes a schema that decodes a `string` into the\n * parser's output. Parse errors become schema issues carrying the rendered\n * `ParseError` message. Encoding needs a printer, supplied as `encode`;\n * without one, encoding is forbidden.\n *\n * @example\n * ```ts\n * import { Schema } from \"effect\"\n * import { Ascii, Parser, ParserSchema, Token } from \"@thomasfosterau/effect-parse\"\n *\n * const Version = ParserSchema.make(\n * Parser.struct({\n * major: Ascii.decUint,\n * minor: Parser.preceded(Token.literal(\".\"), Ascii.decUint)\n * }),\n * { encode: ({ major, minor }) => `${major}.${minor}` }\n * )\n *\n * Schema.decodeUnknownSync(Version)(\"1.2\") // { major: 1, minor: 2 }\n * Schema.encodeSync(Version)({ major: 3, minor: 4 }) // \"3.4\"\n * ```\n *\n * @since 0.1.0\n */\nimport * as Effect from \"effect/Effect\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport * as SchemaIssue from \"effect/SchemaIssue\"\nimport * as SchemaTransformation from \"effect/SchemaTransformation\"\nimport type { Parser } from \"./Parser.js\"\nimport * as P from \"./Parser.js\"\n\n/**\n * Options for {@link make}.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface Options<A> {\n /** Prints a value back to a string. Without it, encoding fails. */\n readonly encode?: ((value: A) => string) | undefined\n /** A description of the decoded type, used by schema tooling. */\n readonly description?: string | undefined\n}\n\n/**\n * A schema decoding strings with a parser.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface ParserSchema<A> extends Schema.decodeTo<Schema.declare<A>, Schema.String> {}\n\n/**\n * Creates a schema that decodes a string with `parser`, which must consume\n * the whole string.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const make = <A, E>(parser: Parser<A, E, never, string>, options?: Options<A>): ParserSchema<A> => {\n const target = Schema.declare<A>(\n (_u): _u is A => true,\n options?.description !== undefined ? { description: options.description } : undefined\n )\n const encode = options?.encode\n return Schema.String.pipe(\n Schema.decodeTo(\n target,\n SchemaTransformation.transformEffect<A, string>({\n decode: (input, parseOptions) => {\n const result = P.parse(parser, input)\n return Result.isSuccess(result)\n ? Effect.succeed(result.success)\n : Effect.fail(new SchemaIssue.InvalidValue({ message: result.failure.message }, input, parseOptions))\n },\n encode: (value, parseOptions) =>\n encode !== undefined\n ? Effect.succeed(encode(value))\n : Effect.fail(new SchemaIssue.Forbidden({ message: \"Encoding is not supported\" }, value, parseOptions))\n })\n )\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,MAAa,QAAc,QAAqC,YAA0C;CACxG,MAAM,SAAS,OAAO,SACnB,OAAgB,MACjB,SAAS,gBAAgB,KAAA,IAAY,EAAE,aAAa,QAAQ,YAAY,IAAI,KAAA,CAC9E;CACA,MAAM,SAAS,SAAS;CACxB,OAAO,OAAO,OAAO,KACnB,OAAO,SACL,QACA,qBAAqB,gBAA2B;EAC9C,SAAS,OAAO,iBAAiB;GAC/B,MAAM,SAAS,EAAE,MAAM,QAAQ,KAAK;GACpC,OAAO,OAAO,UAAU,MAAM,IAC1B,OAAO,QAAQ,OAAO,OAAO,IAC7B,OAAO,KAAK,IAAI,YAAY,aAAa,EAAE,SAAS,OAAO,QAAQ,QAAQ,GAAG,OAAO,YAAY,CAAC;EACxG;EACA,SAAS,OAAO,iBACd,WAAW,KAAA,IACP,OAAO,QAAQ,OAAO,KAAK,CAAC,IAC5B,OAAO,KAAK,IAAI,YAAY,UAAU,EAAE,SAAS,4BAA4B,GAAG,OAAO,YAAY,CAAC;CAC5G,CAAC,CACH,CACF;AACF"}
|
package/dist/ParserStream.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { BinaryInput, Source } from "./Input.js";
|
|
2
|
+
import { Parser } from "./Parser.js";
|
|
1
3
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import * as Stream from "effect/Stream";
|
|
3
|
-
import type { BinaryInput, Source } from "./Input.js";
|
|
4
4
|
import * as ParseError from "./ParseError.js";
|
|
5
|
-
import
|
|
5
|
+
import * as Stream from "effect/Stream";
|
|
6
|
+
//#region src/ParserStream.d.ts
|
|
6
7
|
/**
|
|
7
8
|
* Input kinds that can be streamed in chunks.
|
|
8
9
|
*
|
|
@@ -17,8 +18,8 @@ export type Chunkable = string | Uint8Array | ReadonlyArray<unknown>;
|
|
|
17
18
|
* @category models
|
|
18
19
|
*/
|
|
19
20
|
export interface ParseManyOptions<I> {
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
/** The empty input, used to initialise the buffer (inferred from the first chunk if omitted). */
|
|
22
|
+
readonly empty?: Source<I> | undefined;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Transforms a stream of input chunks into a stream of parsed values by
|
|
@@ -28,12 +29,17 @@ export interface ParseManyOptions<I> {
|
|
|
28
29
|
* Error offsets are relative to the internal buffer of unconsumed input,
|
|
29
30
|
* which is also the `input` of the reported `ParseError`.
|
|
30
31
|
*
|
|
32
|
+
* A parser compiled with the `Compiler` module runs compiled, with the
|
|
33
|
+
* build that handles partial input (see `Parser.run`); a value that fails
|
|
34
|
+
* or needs more input is parsed again interpreted, so errors and
|
|
35
|
+
* `Incomplete` are the interpreter's.
|
|
36
|
+
*
|
|
31
37
|
* @since 0.1.0
|
|
32
38
|
* @category combinators
|
|
33
39
|
*/
|
|
34
40
|
export declare const parseMany: {
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
<A, E, R, I extends Chunkable>(parser: Parser<A, E, R, I>, options?: ParseManyOptions<I>): <E0, R0>(self: Stream.Stream<Source<I>, E0, R0>) => Stream.Stream<A, E0 | ParseError.ParseError<E>, R0 | R>;
|
|
42
|
+
<I extends Chunkable, E0, R0, A, E, R>(self: Stream.Stream<Source<NoInfer<I>>, E0, R0>, parser: Parser<A, E, R, I>, options?: ParseManyOptions<I>): Stream.Stream<A, E0 | ParseError.ParseError<E>, R0 | R>;
|
|
37
43
|
};
|
|
38
44
|
/**
|
|
39
45
|
* Parses an entire stream of chunks as a single complete input.
|
|
@@ -48,8 +54,8 @@ export declare const parseMany: {
|
|
|
48
54
|
*
|
|
49
55
|
* The result and any `ParseError` are those of parsing the whole input at
|
|
50
56
|
* once: errors are reported once the stream has ended, by an ordinary
|
|
51
|
-
* interpreted parse of the whole input. A parser compiled with
|
|
52
|
-
* `
|
|
57
|
+
* interpreted parse of the whole input. A parser compiled with the
|
|
58
|
+
* `Compiler` module streams compiled too (with a build that handles partial
|
|
53
59
|
* input), which is several times faster. As with compiled parsers,
|
|
54
60
|
* callbacks should be pure: the elements parsed before a checkpoint are
|
|
55
61
|
* not parsed again, and on failure everything is parsed again.
|
|
@@ -58,11 +64,11 @@ export declare const parseMany: {
|
|
|
58
64
|
* @category combinators
|
|
59
65
|
*/
|
|
60
66
|
export declare const parseAll: {
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
<A, E, R, I extends Chunkable>(parser: Parser<A, E, R, I>, options?: ParseManyOptions<I>): <E0, R0>(self: Stream.Stream<Source<I>, E0, R0>) => Effect.Effect<A, E0 | ParseError.ParseError<E>, R0 | R>;
|
|
68
|
+
<I extends Chunkable, E0, R0, A, E, R>(self: Stream.Stream<Source<NoInfer<I>>, E0, R0>, parser: Parser<A, E, R, I>, options?: ParseManyOptions<I>): Effect.Effect<A, E0 | ParseError.ParseError<E>, R0 | R>;
|
|
63
69
|
};
|
|
64
70
|
declare const ReadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
65
|
-
|
|
71
|
+
readonly _tag: "ReadError";
|
|
66
72
|
} & Readonly<A>;
|
|
67
73
|
/**
|
|
68
74
|
* An error reading a `ReadableStream` given to {@link parseReadable} or
|
|
@@ -71,10 +77,9 @@ declare const ReadError_base: new <A extends Record<string, any> = {}>(args: imp
|
|
|
71
77
|
* @since 0.1.0
|
|
72
78
|
* @category errors
|
|
73
79
|
*/
|
|
74
|
-
export declare class ReadError extends ReadError_base<{
|
|
75
|
-
|
|
76
|
-
}> {
|
|
77
|
-
}
|
|
80
|
+
export declare class ReadError extends /*#__PURE__*/ ReadError_base<{
|
|
81
|
+
readonly cause: unknown;
|
|
82
|
+
}> {}
|
|
78
83
|
/**
|
|
79
84
|
* Parses a web `ReadableStream` of bytes, such as the body of a `fetch`
|
|
80
85
|
* response, incrementally (see {@link parseAll}): the bytes are parsed as
|
|
@@ -97,8 +102,8 @@ export declare class ReadError extends ReadError_base<{
|
|
|
97
102
|
* @category combinators
|
|
98
103
|
*/
|
|
99
104
|
export declare const parseReadable: {
|
|
100
|
-
|
|
101
|
-
|
|
105
|
+
<A, E, R>(parser: Parser<A, E, R, Uint8Array>): (self: ReadableStream<BinaryInput>) => Effect.Effect<A, ParseError.ParseError<E> | ReadError, R>;
|
|
106
|
+
<A, E, R>(self: ReadableStream<BinaryInput>, parser: Parser<A, E, R, Uint8Array>): Effect.Effect<A, ParseError.ParseError<E> | ReadError, R>;
|
|
102
107
|
};
|
|
103
108
|
/**
|
|
104
109
|
* Parses the body of a `fetch` `Response` incrementally, as it downloads
|
|
@@ -120,8 +125,9 @@ export declare const parseReadable: {
|
|
|
120
125
|
* @category combinators
|
|
121
126
|
*/
|
|
122
127
|
export declare const parseResponse: {
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
<A, E, R>(parser: Parser<A, E, R, Uint8Array>): (self: Response) => Effect.Effect<A, ParseError.ParseError<E> | ReadError, R>;
|
|
129
|
+
<A, E, R>(self: Response, parser: Parser<A, E, R, Uint8Array>): Effect.Effect<A, ParseError.ParseError<E> | ReadError, R>;
|
|
125
130
|
};
|
|
131
|
+
//#endregion
|
|
126
132
|
export {};
|
|
127
133
|
//# sourceMappingURL=ParserStream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParserStream.d.ts","
|
|
1
|
+
{"version":3,"file":"ParserStream.d.ts","names":[],"sources":["../src/ParserStream.ts"],"mappings":";;;;;;;;;;;;YA8CY,qBAAqB,aAAa;;;;;;;iBA8B7B,iBAAiB;;WAEvB,QAAQ,OAAO;;;;;;;;;;;;;;;;;;qBAmBb;GACV,GAAG,GAAG,GAAG,UAAU,WAClB,QAAQ,OAAO,GAAG,GAAG,GAAG,IACxB,UAAU,iBAAiB,MACzB,IAAI,IAAI,MAAM,OAAO,OAAO,OAAO,IAAI,IAAI,QAAQ,OAAO,OAAO,GAAG,KAAK,WAAW,WAAW,IAAI,KAAK;GAC3G,UAAU,WAAW,IAAI,IAAI,GAAG,GAAG,GAClC,MAAM,OAAO,OAAO,OAAO,QAAQ,KAAK,IAAI,KAC5C,QAAQ,OAAO,GAAG,GAAG,GAAG,IACxB,UAAU,iBAAiB,KAC1B,OAAO,OAAO,GAAG,KAAK,WAAW,WAAW,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;qBAiM7C;GACV,GAAG,GAAG,GAAG,UAAU,WAClB,QAAQ,OAAO,GAAG,GAAG,GAAG,IACxB,UAAU,iBAAiB,MACzB,IAAI,IAAI,MAAM,OAAO,OAAO,OAAO,IAAI,IAAI,QAAQ,OAAO,OAAO,GAAG,KAAK,WAAW,WAAW,IAAI,KAAK;GAC3G,UAAU,WAAW,IAAI,IAAI,GAAG,GAAG,GAClC,MAAM,OAAO,OAAO,OAAO,QAAQ,KAAK,IAAI,KAC5C,QAAQ,OAAO,GAAG,GAAG,GAAG,IACxB,UAAU,iBAAiB,KAC1B,OAAO,OAAO,GAAG,KAAK,WAAW,WAAW,IAAI,KAAK;;;;;;;;;;;;qBA2B7C,gCAAgC;WAAyC;;;;;;;;;;;;;;;;;;;;;;;qBAuBzE;GACV,GAAG,GAAG,GACL,QAAQ,OAAO,GAAG,GAAG,GAAG,eACtB,MAAM,eAAe,iBAAiB,OAAO,OAAO,GAAG,WAAW,WAAW,KAAK,WAAW;GAChG,GAAG,GAAG,GACL,MAAM,eAAe,cACrB,QAAQ,OAAO,GAAG,GAAG,GAAG,cACvB,OAAO,OAAO,GAAG,WAAW,WAAW,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;qBAiC/C;GACV,GAAG,GAAG,GACL,QAAQ,OAAO,GAAG,GAAG,GAAG,eACtB,MAAM,aAAa,OAAO,OAAO,GAAG,WAAW,WAAW,KAAK,WAAW;GAC7E,GAAG,GAAG,GACL,MAAM,UACN,QAAQ,OAAO,GAAG,GAAG,GAAG,cACvB,OAAO,OAAO,GAAG,WAAW,WAAW,KAAK,WAAW"}
|