tarsec 0.0.7 → 0.0.8

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 (39) hide show
  1. package/package.json +1 -1
  2. package/dist/lib/combinators.d.ts +0 -15
  3. package/dist/lib/combinators.js +0 -199
  4. package/dist/lib/index.d.ts +0 -3
  5. package/dist/lib/index.js +0 -29
  6. package/dist/lib/parsers.d.ts +0 -17
  7. package/dist/lib/parsers.js +0 -114
  8. package/dist/lib/parsers.test.d.ts +0 -1
  9. package/dist/lib/parsers.test.js +0 -235
  10. package/dist/lib/trace.d.ts +0 -3
  11. package/dist/lib/trace.js +0 -42
  12. package/dist/lib/types.d.ts +0 -17
  13. package/dist/lib/types.js +0 -12
  14. package/dist/lib/utils.d.ts +0 -3
  15. package/dist/lib/utils.js +0 -48
  16. package/dist/tests/combinators/many.test.d.ts +0 -1
  17. package/dist/tests/combinators/many.test.js +0 -27
  18. package/dist/tests/combinators/many1.test.d.ts +0 -1
  19. package/dist/tests/combinators/many1.test.js +0 -27
  20. package/dist/tests/combinators/or.test.d.ts +0 -1
  21. package/dist/tests/combinators/or.test.js +0 -31
  22. package/dist/tests/combinators/seq.test.d.ts +0 -1
  23. package/dist/tests/combinators/seq.test.js +0 -41
  24. package/dist/tests/integration/hello_capture.test.d.ts +0 -1
  25. package/dist/tests/integration/hello_capture.test.js +0 -30
  26. package/dist/tests/integration/hello_world.test.d.ts +0 -1
  27. package/dist/tests/integration/hello_world.test.js +0 -23
  28. package/dist/tests/parsers/char.test.d.ts +0 -1
  29. package/dist/tests/parsers/char.test.js +0 -35
  30. package/dist/tests/parsers/noneOf.test.d.ts +0 -1
  31. package/dist/tests/parsers/noneOf.test.js +0 -26
  32. package/dist/tests/parsers/oneOf.test.d.ts +0 -1
  33. package/dist/tests/parsers/oneOf.test.js +0 -26
  34. package/dist/tests/parsers/str.test.d.ts +0 -1
  35. package/dist/tests/parsers/str.test.js +0 -38
  36. package/dist/vitest.config.d.ts +0 -3
  37. package/dist/vitest.config.js +0 -34
  38. package/dist/vitest.globals.d.ts +0 -18
  39. package/dist/vitest.globals.js +0 -25
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tarsec",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "A parser combinator library for TypeScript, inspired by Parsec.",
5
5
  "homepage": "https://github.com/egonSchiele/tarsec",
6
6
 
@@ -1,15 +0,0 @@
1
- import { Parser } from "./types";
2
- export declare function many<T>(parser: Parser<T>): Parser<T[]>;
3
- export declare function many1<T>(parser: Parser<T>): Parser<T[]>;
4
- export declare function manyWithJoin(parser: Parser<string>): Parser<string>;
5
- export declare function many1WithJoin(parser: Parser<string>): Parser<string>;
6
- export declare function or<T>(parsers: Parser<T>[], name?: string): Parser<T>;
7
- export declare function optional<T>(parser: Parser<T>): Parser<T | null>;
8
- export declare function not(parser: Parser<any>): Parser<null>;
9
- export declare function between<O, C, P>(open: Parser<O>, close: Parser<C>, parser: Parser<P>): Parser<P>;
10
- export declare function sepBy<S, P>(separator: Parser<S>, parser: Parser<P>): Parser<P[]>;
11
- export declare function seq<M, C extends string>(parsers: Parser<M>[], name?: string): Parser<M[], C>;
12
- export declare function capture<M, C extends string>(parser: Parser<M>, name: string): Parser<M, C>;
13
- export declare function captureCaptures<M, C extends string>(parser: Parser<M>, name: string): Parser<M, C>;
14
- export declare function shapeCaptures<M, C extends string>(parser: Parser<M>, func: (captures: Record<string, any>) => Record<string, any>, name: string): Parser<M, C>;
15
- export declare function transform<T, X>(parser: Parser<T>, transformerFunc: (x: T) => X): Parser<X>;
@@ -1,199 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./trace", "./utils"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.transform = exports.shapeCaptures = exports.captureCaptures = exports.capture = exports.seq = exports.sepBy = exports.between = exports.not = exports.optional = exports.or = exports.many1WithJoin = exports.manyWithJoin = exports.many1 = exports.many = void 0;
13
- const trace_1 = require("./trace");
14
- const utils_1 = require("./utils");
15
- function many(parser) {
16
- return (0, trace_1.trace)("many", (input) => {
17
- let match = [];
18
- let rest = input;
19
- while (true) {
20
- let result = parser(rest);
21
- if (!result.success) {
22
- return { success: true, match, rest };
23
- }
24
- match.push(result.match);
25
- rest = result.rest;
26
- }
27
- });
28
- }
29
- exports.many = many;
30
- function many1(parser) {
31
- return (0, trace_1.trace)(`many1`, (input) => {
32
- let result = many(parser)(input);
33
- // this logic doesn't work with optional and not
34
- if (result.rest !== input) {
35
- return result;
36
- }
37
- return {
38
- success: false,
39
- rest: input,
40
- message: "expected at least one match",
41
- };
42
- });
43
- }
44
- exports.many1 = many1;
45
- function manyWithJoin(parser) {
46
- return transform(many(parser), (x) => x.join(""));
47
- }
48
- exports.manyWithJoin = manyWithJoin;
49
- function many1WithJoin(parser) {
50
- return transform(many1(parser), (x) => x.join(""));
51
- }
52
- exports.many1WithJoin = many1WithJoin;
53
- function or(parsers, name = "") {
54
- return (0, trace_1.trace)(`or(${name})`, (input) => {
55
- for (let parser of parsers) {
56
- let result = parser(input);
57
- if (result.success) {
58
- return result;
59
- }
60
- }
61
- return {
62
- success: false,
63
- rest: input,
64
- message: "all parsers failed",
65
- };
66
- });
67
- }
68
- exports.or = or;
69
- function optional(parser) {
70
- return (0, trace_1.trace)("optional", (input) => {
71
- let result = parser(input);
72
- if (result.success) {
73
- return result;
74
- }
75
- return { success: true, match: null, rest: input };
76
- });
77
- }
78
- exports.optional = optional;
79
- function not(parser) {
80
- return (0, trace_1.trace)("not", (input) => {
81
- let result = parser(input);
82
- if (result.success) {
83
- return {
84
- success: false,
85
- rest: input,
86
- message: "unexpected match",
87
- };
88
- }
89
- return { success: true, match: null, rest: input };
90
- });
91
- }
92
- exports.not = not;
93
- function between(open, close, parser) {
94
- return (input) => {
95
- const result1 = open(input);
96
- if (!result1.success) {
97
- return result1;
98
- }
99
- const parserResult = parser(result1.rest);
100
- if (!parserResult.success) {
101
- return parserResult;
102
- }
103
- const result2 = close(parserResult.rest);
104
- if (!result2.success) {
105
- return result2;
106
- }
107
- return { success: true, match: parserResult.match, rest: result2.rest };
108
- };
109
- }
110
- exports.between = between;
111
- function sepBy(separator, parser) {
112
- return (input) => {
113
- let match = [];
114
- let rest = input;
115
- while (true) {
116
- const result = parser(rest);
117
- if (!result.success) {
118
- return { success: true, match, rest };
119
- }
120
- match.push(result.match);
121
- rest = result.rest;
122
- const sepResult = separator(rest);
123
- if (!sepResult.success) {
124
- return { success: true, match, rest };
125
- }
126
- rest = sepResult.rest;
127
- }
128
- };
129
- }
130
- exports.sepBy = sepBy;
131
- function seq(parsers, name = "") {
132
- return (0, trace_1.trace)(`seq(${name})`, (input) => {
133
- let match = [];
134
- let rest = input;
135
- // @ts-ignore
136
- let captures = {};
137
- for (let parser of parsers) {
138
- let result = parser(rest);
139
- if (!result.success) {
140
- return result;
141
- }
142
- match.push(result.match);
143
- rest = result.rest;
144
- if (result.captures) {
145
- captures = (0, utils_1.mergeCaptures)(captures, result.captures);
146
- }
147
- }
148
- return { success: true, match, rest, captures };
149
- });
150
- }
151
- exports.seq = seq;
152
- function capture(parser, name) {
153
- return (0, trace_1.trace)(`captures(${(0, utils_1.escape)(name)})`, (input) => {
154
- let result = parser(input);
155
- if (result.success) {
156
- const captures = {
157
- [name]: result.match,
158
- };
159
- return Object.assign(Object.assign({}, result), { captures: (0, utils_1.mergeCaptures)(result.captures || {}, captures) });
160
- }
161
- return result;
162
- });
163
- }
164
- exports.capture = capture;
165
- function captureCaptures(parser, name) {
166
- return (0, trace_1.trace)(`captures(${(0, utils_1.escape)(name)})`, (input) => {
167
- let result = parser(input);
168
- if (result.success) {
169
- const captures = {
170
- [name]: result.captures,
171
- };
172
- return Object.assign(Object.assign({}, result), { captures: (0, utils_1.mergeCaptures)(result.captures || {}, captures) });
173
- }
174
- return result;
175
- });
176
- }
177
- exports.captureCaptures = captureCaptures;
178
- function shapeCaptures(parser, func, name) {
179
- return (0, trace_1.trace)(`captures(${(0, utils_1.escape)(name)})`, (input) => {
180
- let result = parser(input);
181
- if (result.success) {
182
- const captures = result.captures || {};
183
- return Object.assign(Object.assign({}, result), { captures: func(captures) });
184
- }
185
- return result;
186
- });
187
- }
188
- exports.shapeCaptures = shapeCaptures;
189
- function transform(parser, transformerFunc) {
190
- return (0, trace_1.trace)(`transform(${transformerFunc})`, (input) => {
191
- let result = parser(input);
192
- if (result.success) {
193
- return Object.assign(Object.assign({}, result), { match: transformerFunc(result.match) });
194
- }
195
- return result;
196
- });
197
- }
198
- exports.transform = transform;
199
- });
@@ -1,3 +0,0 @@
1
- export * from "./parsers";
2
- export * from "./combinators";
3
- export * from "./trace";
package/dist/lib/index.js DELETED
@@ -1,29 +0,0 @@
1
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
- if (k2 === undefined) k2 = k;
3
- var desc = Object.getOwnPropertyDescriptor(m, k);
4
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
- desc = { enumerable: true, get: function() { return m[k]; } };
6
- }
7
- Object.defineProperty(o, k2, desc);
8
- }) : (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- o[k2] = m[k];
11
- }));
12
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
13
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
14
- };
15
- (function (factory) {
16
- if (typeof module === "object" && typeof module.exports === "object") {
17
- var v = factory(require, exports);
18
- if (v !== undefined) module.exports = v;
19
- }
20
- else if (typeof define === "function" && define.amd) {
21
- define(["require", "exports", "./parsers", "./combinators", "./trace"], factory);
22
- }
23
- })(function (require, exports) {
24
- "use strict";
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- __exportStar(require("./parsers"), exports);
27
- __exportStar(require("./combinators"), exports);
28
- __exportStar(require("./trace"), exports);
29
- });
@@ -1,17 +0,0 @@
1
- import { Parser } from "./types";
2
- export declare function char(c: string): Parser<string>;
3
- export declare function str(s: string): Parser<string>;
4
- export declare function oneOf(chars: string): Parser<string>;
5
- export declare function noneOf(chars: string): Parser<string>;
6
- export declare function anyChar(input: string): Parser<string>;
7
- export declare const space: Parser<string>;
8
- export declare const spaces: Parser<string>;
9
- export declare const digit: Parser<string>;
10
- export declare const letter: Parser<string>;
11
- export declare const alphanum: Parser<string>;
12
- export declare const word: Parser<string>;
13
- export declare const num: Parser<string>;
14
- export declare const quote: Parser<string>;
15
- export declare const tab: Parser<string>;
16
- export declare const newline: Parser<string>;
17
- export declare const quotedString: Parser<string, string>;
@@ -1,114 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./combinators", "./trace", "./utils"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.quotedString = exports.newline = exports.tab = exports.quote = exports.num = exports.word = exports.alphanum = exports.letter = exports.digit = exports.spaces = exports.space = exports.anyChar = exports.noneOf = exports.oneOf = exports.str = exports.char = void 0;
13
- const combinators_1 = require("./combinators");
14
- const trace_1 = require("./trace");
15
- const utils_1 = require("./utils");
16
- function char(c) {
17
- return (0, trace_1.trace)(`char(${(0, utils_1.escape)(c)})`, (input) => {
18
- if (input.length === 0) {
19
- return {
20
- success: false,
21
- rest: input,
22
- message: "unexpected end of input",
23
- };
24
- }
25
- if (input[0] === c) {
26
- return { success: true, match: c, rest: input.slice(1) };
27
- }
28
- return {
29
- success: false,
30
- rest: input,
31
- message: `expected ${c}, got ${input[0]}`,
32
- };
33
- });
34
- }
35
- exports.char = char;
36
- function str(s) {
37
- return (0, trace_1.trace)(`str(${(0, utils_1.escape)(s)})`, (input) => {
38
- if (input.substring(0, s.length) === s) {
39
- return { success: true, match: s, rest: input.slice(s.length) };
40
- }
41
- return {
42
- success: false,
43
- rest: input,
44
- message: `expected ${s}, got ${input.substring(0, s.length)}`,
45
- };
46
- });
47
- }
48
- exports.str = str;
49
- function oneOf(chars) {
50
- return (0, trace_1.trace)(`oneOf(${(0, utils_1.escape)(chars)})`, (input) => {
51
- if (input.length === 0) {
52
- return {
53
- success: false,
54
- rest: input,
55
- message: "unexpected end of input",
56
- };
57
- }
58
- const c = input[0];
59
- if (chars.includes(c)) {
60
- return char(c)(input);
61
- }
62
- return {
63
- success: false,
64
- rest: input,
65
- message: `expected one of ${(0, utils_1.escape)(chars)}, got ${c}`,
66
- };
67
- });
68
- }
69
- exports.oneOf = oneOf;
70
- function noneOf(chars) {
71
- return (0, trace_1.trace)(`noneOf(${(0, utils_1.escape)(chars)})`, (input) => {
72
- if (input.length === 0) {
73
- return {
74
- success: false,
75
- rest: input,
76
- message: "unexpected end of input",
77
- };
78
- }
79
- if (chars.includes(input[0])) {
80
- return {
81
- success: false,
82
- rest: input,
83
- message: `expected none of ${chars}`,
84
- };
85
- }
86
- return char(input[0])(input);
87
- });
88
- }
89
- exports.noneOf = noneOf;
90
- function anyChar(input) {
91
- return (0, trace_1.trace)("anyChar", (input) => {
92
- if (input.length === 0) {
93
- return {
94
- success: false,
95
- rest: input,
96
- message: "unexpected end of input",
97
- };
98
- }
99
- return { success: true, match: input[0], rest: input.slice(1) };
100
- });
101
- }
102
- exports.anyChar = anyChar;
103
- exports.space = oneOf(" \t\n\r");
104
- exports.spaces = (0, combinators_1.many1WithJoin)(exports.space);
105
- exports.digit = oneOf("0123456789");
106
- exports.letter = oneOf("abcdefghijklmnopqrstuvwxyz");
107
- exports.alphanum = oneOf("abcdefghijklmnopqrstuvwxyz0123456789");
108
- exports.word = (0, combinators_1.many1WithJoin)(exports.letter);
109
- exports.num = (0, combinators_1.many1WithJoin)(exports.digit);
110
- exports.quote = oneOf(`'"`);
111
- exports.tab = char("\t");
112
- exports.newline = char("\n");
113
- exports.quotedString = (0, combinators_1.transform)((0, combinators_1.seq)([exports.quote, exports.word, exports.quote], "quotedString"), (x) => x.join(""));
114
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,235 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "vitest", "./parsers", "../vitest.globals.js", "./combinators"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const vitest_1 = require("vitest");
13
- const parsers_1 = require("./parsers");
14
- const vitest_globals_js_1 = require("../vitest.globals.js");
15
- const combinators_1 = require("./combinators");
16
- vitest_1.test.skip("hello", () => {
17
- (0, vitest_1.describe)("Parser Tests", () => {
18
- (0, vitest_1.describe)("optional parser", () => {
19
- const parser = (0, combinators_1.optional)((0, parsers_1.char)("a"));
20
- (0, vitest_1.it)("should parse the character if it exists", () => {
21
- const result = parser("a");
22
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "a" }));
23
- });
24
- (0, vitest_1.it)("should return an empty string if the character is missing", () => {
25
- const result = parser("b");
26
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "b", match: "" }));
27
- });
28
- (0, vitest_1.it)("should not consume any input if it fails", () => {
29
- // @ts-ignore
30
- const parser2 = (0, combinators_1.optional)((0, combinators_1.seq)((0, combinators_1.many1WithJoin)(parsers_1.letter), (0, parsers_1.char)("!")));
31
- const result1 = parser2("hello!");
32
- (0, vitest_1.expect)(result1).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "hello!", captures: {} }));
33
- const result2 = parser2("hello");
34
- (0, vitest_1.expect)(result2).toEqual((0, vitest_globals_js_1.success)({ rest: "hello", match: "" }));
35
- });
36
- });
37
- (0, vitest_1.describe)("not parser", () => {
38
- const parser = (0, combinators_1.not)((0, parsers_1.char)("a"));
39
- (0, vitest_1.it)("should fail if the character is present", () => {
40
- const result = parser("a");
41
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "a", message: "unexpected match" }));
42
- });
43
- (0, vitest_1.it)("should return an empty string if the character is missing", () => {
44
- const result = parser("b");
45
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "b", match: "" }));
46
- });
47
- });
48
- (0, vitest_1.describe)("space parser", () => {
49
- (0, vitest_1.it)("should parse a space character", () => {
50
- const result = (0, parsers_1.space)(" ");
51
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: " " }));
52
- });
53
- (0, vitest_1.it)("should fail if the character is not a space", () => {
54
- const result = (0, parsers_1.space)("a");
55
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "a", message: "expected , got a" }));
56
- });
57
- });
58
- (0, vitest_1.describe)("spaces parser", () => {
59
- (0, vitest_1.it)("should parse multiple space characters", () => {
60
- const result = (0, parsers_1.spaces)(" ");
61
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: " " }));
62
- });
63
- (0, vitest_1.it)("should fail if no space characters found", () => {
64
- const result = (0, parsers_1.spaces)("abc");
65
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "abc", message: "expected at least one match" }));
66
- });
67
- });
68
- (0, vitest_1.describe)("digit parser", () => {
69
- (0, vitest_1.it)("should parse a single digit", () => {
70
- const result = (0, parsers_1.digit)("1");
71
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "1" }));
72
- });
73
- (0, vitest_1.it)("should fail if the character is not a digit", () => {
74
- const result = (0, parsers_1.digit)("a");
75
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "a", message: "expected one of 0123456789" }));
76
- });
77
- });
78
- (0, vitest_1.describe)("letter parser", () => {
79
- (0, vitest_1.it)("should parse a single letter", () => {
80
- const result = (0, parsers_1.letter)("a");
81
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "a" }));
82
- });
83
- (0, vitest_1.it)("should fail if the character is not a letter", () => {
84
- const result = (0, parsers_1.letter)("1");
85
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({
86
- rest: "1",
87
- message: "expected one of abcdefghijklmnopqrstuvwxyz",
88
- }));
89
- });
90
- });
91
- (0, vitest_1.describe)("alphanum parser", () => {
92
- (0, vitest_1.it)("should parse a single alphanumeric character", () => {
93
- const result = (0, parsers_1.alphanum)("1");
94
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "1" }));
95
- });
96
- (0, vitest_1.it)("should fail if the character is not alphanumeric", () => {
97
- const result = (0, parsers_1.alphanum)("_");
98
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({
99
- rest: "_",
100
- message: "expected one of abcdefghijklmnopqrstuvwxyz0123456789",
101
- }));
102
- });
103
- });
104
- (0, vitest_1.describe)("word parser", () => {
105
- const parser = parsers_1.word;
106
- (0, vitest_1.it)("should parse a single word", () => {
107
- const result = parser("hello");
108
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "hello" }));
109
- });
110
- (0, vitest_1.it)("should fail if no word characters found", () => {
111
- const result = parser("123");
112
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "123", message: "expected at least one match" }));
113
- });
114
- });
115
- (0, vitest_1.describe)("number parser", () => {
116
- const parser = parsers_1.num;
117
- (0, vitest_1.it)("should parse a single number", () => {
118
- const result = parser("123");
119
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "123" }));
120
- });
121
- (0, vitest_1.it)("should fail if no number characters found", () => {
122
- const result = parser("abc");
123
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "abc", message: "expected at least one match" }));
124
- });
125
- });
126
- });
127
- (0, vitest_1.describe)("seq parser", () => {
128
- const parser = (0, combinators_1.seq)([(0, parsers_1.char)("a"), (0, parsers_1.char)("b")]);
129
- (0, vitest_1.it)("should parse both characters in sequence", () => {
130
- const result = parser("ab");
131
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ rest: "", match: "ab", captures: {} }));
132
- });
133
- (0, vitest_1.it)("should fail if any of the parsers fail", () => {
134
- const result = parser("ac");
135
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.failure)({ rest: "c", message: "expected b, got c" }));
136
- });
137
- });
138
- (0, vitest_1.describe)("seq parser - hello world", () => {
139
- (0, vitest_1.it)("multiple char parsers", () => {
140
- const parser = (0, combinators_1.seq)([
141
- (0, parsers_1.char)("h"),
142
- (0, parsers_1.char)("e"),
143
- (0, parsers_1.char)("l"),
144
- (0, parsers_1.char)("l"),
145
- (0, parsers_1.char)("o"),
146
- ]);
147
- const result = parser("hello world");
148
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ match: "hello", rest: " world", captures: {} }));
149
- });
150
- (0, vitest_1.it)("multiple str parsers", () => {
151
- const parser = (0, combinators_1.seq)([(0, parsers_1.str)("hello"), parsers_1.space, (0, parsers_1.str)("world")]);
152
- const result = parser("hello world");
153
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ match: "hello world", rest: "", captures: {} }));
154
- });
155
- (0, vitest_1.it)("multiple str parsers + capture", () => {
156
- const parser = (0, combinators_1.seq)([(0, parsers_1.str)("hello"), parsers_1.space, (0, combinators_1.capture)((0, parsers_1.str)("world"), "name")]);
157
- const result = parser("hello world");
158
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_js_1.success)({ match: "hello world", rest: "", captures: { name: "world" } }));
159
- });
160
- });
161
- /* test("quote parser - single quote", () => {
162
- const input = "'";
163
- const result = quote(input);
164
- expect(result).toEqual(success({ rest: "", match: "'", captures: {} }));
165
- });
166
-
167
- test("quote parser - double quote", () => {
168
- const input = '"';
169
- const result = quote(input);
170
- expect(result).toEqual(success({ rest: "", match: '"', captures: {} }));
171
- });
172
-
173
- test("quote parser - invalid quote", () => {
174
- const input = "`";
175
- const result = quote(input);
176
- expect(result).toEqual(
177
- failure({ rest: "`", message: "unexpected end of input" })
178
- );
179
- });
180
-
181
- // Test for anyChar parser
182
- test("anyChar parser - non-empty input", () => {
183
- const input = "abc";
184
- const result = anyChar(input);
185
- expect(result).toEqual(success({ rest: "bc", match: "a", captures: {} }));
186
- });
187
-
188
- test("anyChar parser - empty input", () => {
189
- const input = "";
190
- const result = anyChar(input);
191
- expect(result).toEqual(
192
- failure({ rest: "", message: "unexpected end of input" })
193
- );
194
- });
195
-
196
- // Test for between parser
197
- test("between parser - valid input", () => {
198
- const open = quote;
199
- const close = quote;
200
- const parser = anyChar;
201
- const input = "'abc'";
202
- const result = between(open, close, parser)(input);
203
- expect(result).toEqual(success({ rest: "", match: "a", captures: {} }));
204
- });
205
-
206
- test("between parser - invalid input", () => {
207
- const open = quote;
208
- const close = quote;
209
- const parser = anyChar;
210
- const input = "\"abc'";
211
- const result = between(open, close, parser)(input);
212
- expect(result).toEqual(
213
- failure({ rest: "abc'", message: "unexpected end of input" })
214
- );
215
- });
216
-
217
- // Test for sepBy parser
218
- test("sepBy parser - valid input", () => {
219
- const separator = anyChar;
220
- const parser = anyChar;
221
- const input = "a,b,c";
222
- const result = sepBy(separator, parser)(input);
223
- expect(result).toEqual(success({ rest: "", match: "abc", captures: {} }));
224
- });
225
-
226
- test("sepBy parser - invalid input", () => {
227
- const separator = quote;
228
- const parser = anyChar;
229
- const input = '"a"bc';
230
- const result = sepBy(separator, parser)(input);
231
- expect(result).toEqual(success({ rest: "bc", match: "a", captures: {} }));
232
- });
233
- */
234
- });
235
- });
@@ -1,3 +0,0 @@
1
- import { ParserResult, Parser } from "./types";
2
- export declare function resultToString<T>(name: string, result: ParserResult<T, string>): string;
3
- export declare function trace<T>(name: string, parser: Parser<T>): Parser<T>;
package/dist/lib/trace.js DELETED
@@ -1,42 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./utils"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.trace = exports.resultToString = void 0;
13
- const utils_1 = require("./utils");
14
- const STEP = 2;
15
- function resultToString(name, result) {
16
- if (result.success) {
17
- return `✅ ${name} -- match: ${(0, utils_1.escape)(result.match)}, rest: ${(0, utils_1.escape)(result.rest)}`;
18
- }
19
- return `❌ ${name} -- message: ${(0, utils_1.escape)(result.message)}, rest: ${(0, utils_1.escape)(result.rest)}`;
20
- }
21
- exports.resultToString = resultToString;
22
- let level = 0;
23
- function trace(name, parser) {
24
- return (input) => {
25
- if (process.env.DEBUG) {
26
- console.log(" ".repeat(level) + `🔍 ${name} -- input: ${(0, utils_1.escape)(input)}`);
27
- }
28
- level += STEP;
29
- const result = parser(input);
30
- level -= STEP;
31
- if (process.env.DEBUG) {
32
- console.log(" ".repeat(level) + resultToString(name, result));
33
- if (result.success && result.captures) {
34
- console.log(" ".repeat(level) +
35
- `⭐ ${name} -- captures: ${JSON.stringify(result.captures)}`);
36
- }
37
- }
38
- return result;
39
- };
40
- }
41
- exports.trace = trace;
42
- });
@@ -1,17 +0,0 @@
1
- export type Object = Record<string, string>;
2
- export type ParserSuccess<M, C extends string> = {
3
- success: true;
4
- match: M;
5
- captures?: Record<C, any>;
6
- rest: string;
7
- };
8
- export type ParserFailure = {
9
- success: false;
10
- rest: string;
11
- message: string;
12
- };
13
- export type ParserOptions = {
14
- capture: string;
15
- };
16
- export type ParserResult<M, C extends string> = ParserSuccess<M, C> | ParserFailure;
17
- export type Parser<M, C extends string = string> = (input: string) => ParserResult<M, C>;
package/dist/lib/types.js DELETED
@@ -1,12 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- });
@@ -1,3 +0,0 @@
1
- export declare function escape(str: any): string;
2
- export declare function merge(a: any | any[], b: any | any[]): any[];
3
- export declare function mergeCaptures(a: Record<string, any>, b: Record<string, any>): Record<string, any>;
package/dist/lib/utils.js DELETED
@@ -1,48 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.mergeCaptures = exports.merge = exports.escape = void 0;
13
- function escape(str) {
14
- return JSON.stringify(str);
15
- }
16
- exports.escape = escape;
17
- function merge(a, b) {
18
- if (Array.isArray(a) && Array.isArray(b)) {
19
- return [...a, ...b];
20
- }
21
- else if (Array.isArray(a)) {
22
- return [...a, b];
23
- }
24
- else if (Array.isArray(b)) {
25
- return [a, ...b];
26
- }
27
- else {
28
- return [a, b];
29
- }
30
- }
31
- exports.merge = merge;
32
- function mergeCaptures(a, b) {
33
- const result = {};
34
- Object.keys(a).forEach((key) => {
35
- result[key] = a[key];
36
- });
37
- Object.keys(b).forEach((key) => {
38
- if (result[key]) {
39
- result[key] = merge(result[key], b[key]);
40
- }
41
- else {
42
- result[key] = b[key];
43
- }
44
- });
45
- return result;
46
- }
47
- exports.mergeCaptures = mergeCaptures;
48
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,27 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- const vitest_globals_1 = require("vitest.globals");
16
- (0, vitest_1.describe)("many combinator", () => {
17
- const parser = (0, combinators_1.many)(parsers_1.digit);
18
- (0, vitest_1.it)("should parse multiple digits", () => {
19
- const result = parser("1234");
20
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: ["1", "2", "3", "4"] }));
21
- });
22
- (0, vitest_1.it)("should return an empty string if no matches found", () => {
23
- const result = parser("abc");
24
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "abc", match: [] }));
25
- });
26
- });
27
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,27 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- const vitest_globals_1 = require("vitest.globals");
16
- (0, vitest_1.describe)("many1 combinator", () => {
17
- const parser = (0, combinators_1.many1)(parsers_1.digit);
18
- (0, vitest_1.it)("should parse multiple digits", () => {
19
- const result = parser("1234");
20
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: ["1", "2", "3", "4"] }));
21
- });
22
- (0, vitest_1.it)("should fail if no matches found", () => {
23
- const result = parser("abc");
24
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.failure)({ rest: "abc", message: "expected at least one match" }));
25
- });
26
- });
27
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,31 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- const vitest_globals_1 = require("vitest.globals");
16
- (0, vitest_1.describe)("or parser", () => {
17
- const parser = (0, combinators_1.or)([(0, parsers_1.char)("a"), (0, parsers_1.char)("b")]);
18
- (0, vitest_1.it)("should parse the first parser if it succeeds", () => {
19
- const result = parser("a");
20
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: "a" }));
21
- });
22
- (0, vitest_1.it)("should parse the second parser if the first one fails", () => {
23
- const result = parser("b");
24
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: "b" }));
25
- });
26
- (0, vitest_1.it)("should fail if all parsers fail", () => {
27
- const result = parser("c");
28
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.failure)({ rest: "c", message: "all parsers failed" }));
29
- });
30
- });
31
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,41 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- const vitest_globals_1 = require("vitest.globals");
16
- (0, vitest_1.describe)("seq parser - hello world", () => {
17
- (0, vitest_1.it)("multiple char parsers", () => {
18
- const parser = (0, combinators_1.seq)([(0, parsers_1.char)("h"), (0, parsers_1.char)("e"), (0, parsers_1.char)("l"), (0, parsers_1.char)("l"), (0, parsers_1.char)("o")]);
19
- const result = parser("hello world");
20
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({
21
- match: ["h", "e", "l", "l", "o"],
22
- rest: " world",
23
- captures: {},
24
- }));
25
- });
26
- (0, vitest_1.it)("multiple str parsers", () => {
27
- const parser = (0, combinators_1.seq)([(0, parsers_1.str)("hello"), parsers_1.space, (0, parsers_1.str)("world")]);
28
- const result = parser("hello world");
29
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ match: ["hello", " ", "world"], rest: "", captures: {} }));
30
- });
31
- (0, vitest_1.it)("multiple str parsers + capture", () => {
32
- const parser = (0, combinators_1.seq)([(0, parsers_1.str)("hello"), parsers_1.space, (0, combinators_1.capture)((0, parsers_1.str)("world"), "name")]);
33
- const result = parser("hello world");
34
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({
35
- match: ["hello", " ", "world"],
36
- rest: "",
37
- captures: { name: "world" },
38
- }));
39
- });
40
- });
41
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- (0, vitest_1.describe)("hello world", () => {
16
- (0, vitest_1.it)("parses + captures name", () => {
17
- const parser = (0, combinators_1.seq)([
18
- (0, parsers_1.str)("hello"),
19
- parsers_1.space,
20
- (0, combinators_1.capture)((0, combinators_1.many1WithJoin)((0, parsers_1.noneOf)("!")), "name"),
21
- (0, parsers_1.char)("!"),
22
- ]);
23
- const result = parser("hello adit!");
24
- (0, vitest_1.expect)(result.success).toEqual(true);
25
- (0, vitest_1.expect)(result.captures).toEqual({
26
- name: "adit",
27
- });
28
- });
29
- });
30
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/combinators", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const combinators_1 = require("@/lib/combinators");
13
- const parsers_1 = require("@/lib/parsers");
14
- const vitest_1 = require("vitest");
15
- const vitest_globals_1 = require("vitest.globals");
16
- (0, vitest_1.describe)("hello world", () => {
17
- (0, vitest_1.it)("parses", () => {
18
- const parser = (0, combinators_1.seq)([(0, parsers_1.str)("hello"), parsers_1.space, (0, parsers_1.str)("world")]);
19
- const result = parser("hello world");
20
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ match: ["hello", " ", "world"], rest: "", captures: {} }));
21
- });
22
- });
23
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,35 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/parsers.js", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const parsers_js_1 = require("@/lib/parsers.js");
13
- const vitest_1 = require("vitest");
14
- const vitest_globals_1 = require("vitest.globals");
15
- (0, vitest_1.describe)("char parser", () => {
16
- (0, vitest_1.it)("should parse correct character", () => {
17
- const parser = (0, parsers_js_1.char)("a");
18
- (0, vitest_1.expect)(parser("abc")).toEqual((0, vitest_globals_1.success)({ match: "a", rest: "bc" }));
19
- });
20
- (0, vitest_1.it)("should handle unexpected end of input", () => {
21
- const parser = (0, parsers_js_1.char)("a");
22
- (0, vitest_1.expect)(parser("")).toEqual((0, vitest_globals_1.failure)({
23
- rest: "",
24
- message: "unexpected end of input",
25
- }));
26
- });
27
- (0, vitest_1.it)("should handle incorrect character", () => {
28
- const parser = (0, parsers_js_1.char)("a");
29
- (0, vitest_1.expect)(parser("bcd")).toEqual((0, vitest_globals_1.failure)({
30
- rest: "bcd",
31
- message: "expected a, got b",
32
- }));
33
- });
34
- });
35
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,26 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const parsers_1 = require("@/lib/parsers");
13
- const vitest_1 = require("vitest");
14
- const vitest_globals_1 = require("vitest.globals");
15
- (0, vitest_1.describe)("noneOf parser", () => {
16
- const parser = (0, parsers_1.noneOf)("xyz");
17
- (0, vitest_1.it)("should parse any character that is not one of the given characters", () => {
18
- const result = parser("a");
19
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: "a" }));
20
- });
21
- (0, vitest_1.it)("should fail if any of the given characters match", () => {
22
- const result = parser("x");
23
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.failure)({ rest: "x", message: "expected none of xyz" }));
24
- });
25
- });
26
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,26 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const parsers_1 = require("@/lib/parsers");
13
- const vitest_1 = require("vitest");
14
- const vitest_globals_1 = require("vitest.globals");
15
- (0, vitest_1.describe)("oneOf parser", () => {
16
- const parser = (0, parsers_1.oneOf)("abc");
17
- (0, vitest_1.it)("should parse any one of the given characters", () => {
18
- const result = parser("b");
19
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.success)({ rest: "", match: "b" }));
20
- });
21
- (0, vitest_1.it)("should fail if none of the characters match", () => {
22
- const result = parser("d");
23
- (0, vitest_1.expect)(result).toEqual((0, vitest_globals_1.failure)({ rest: "d", message: 'expected one of "abc", got d' }));
24
- });
25
- });
26
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,38 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@/lib/parsers", "vitest", "vitest.globals"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const parsers_1 = require("@/lib/parsers");
13
- const vitest_1 = require("vitest");
14
- const vitest_globals_1 = require("vitest.globals");
15
- (0, vitest_1.describe)("str parser", () => {
16
- (0, vitest_1.it)("should parse correct string", () => {
17
- const parser = (0, parsers_1.str)("hello");
18
- (0, vitest_1.expect)(parser("hello world")).toEqual((0, vitest_globals_1.success)({
19
- match: "hello",
20
- rest: " world",
21
- }));
22
- });
23
- (0, vitest_1.it)("should handle incorrect string", () => {
24
- const parser = (0, parsers_1.str)("hello");
25
- (0, vitest_1.expect)(parser("hi there")).toEqual((0, vitest_globals_1.failure)({
26
- rest: "hi there",
27
- message: "expected hello, got hi th",
28
- }));
29
- });
30
- (0, vitest_1.it)("should handle unexpected end of input", () => {
31
- const parser = (0, parsers_1.str)("hello");
32
- (0, vitest_1.expect)(parser("hel")).toEqual((0, vitest_globals_1.failure)({
33
- rest: "hel",
34
- message: "expected hello, got hel",
35
- }));
36
- });
37
- });
38
- });
@@ -1,3 +0,0 @@
1
- import { type UserConfig } from "vitest/config";
2
- declare const config: UserConfig;
3
- export default config;
@@ -1,34 +0,0 @@
1
- var __importDefault = (this && this.__importDefault) || function (mod) {
2
- return (mod && mod.__esModule) ? mod : { "default": mod };
3
- };
4
- (function (factory) {
5
- if (typeof module === "object" && typeof module.exports === "object") {
6
- var v = factory(require, exports);
7
- if (v !== undefined) module.exports = v;
8
- }
9
- else if (typeof define === "function" && define.amd) {
10
- define(["require", "exports", "path", "vitest/config"], factory);
11
- }
12
- })(function (require, exports) {
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- const config_1 = require("vitest/config");
17
- console.log("dirname", __dirname);
18
- const config = (0, config_1.defineConfig)({
19
- test: {
20
- globals: true,
21
- environment: "node",
22
- setupFiles: "./vitest.globals.ts",
23
- include: ["./lib/**/*.test.{js,ts,tsx}", "./tests/**/*.test.{js,ts,tsx}"],
24
- exclude: [...config_1.configDefaults.exclude, "./build/**/*", "./dist/**/*"],
25
- coverage: {
26
- //include: ["./src/**/*", "./app/**/*"],
27
- },
28
- },
29
- resolve: {
30
- alias: [{ find: "@/lib", replacement: path_1.default.resolve(__dirname, "./lib") }],
31
- },
32
- });
33
- exports.default = config;
34
- });
@@ -1,18 +0,0 @@
1
- export declare function success<T>({ rest, match, captures, }: {
2
- rest: string;
3
- match: T;
4
- captures?: Record<string, string>;
5
- }): {
6
- success: boolean;
7
- rest: string;
8
- match: T;
9
- captures: Record<string, string> | undefined;
10
- };
11
- export declare function failure({ rest, message }: {
12
- rest: string;
13
- message: string;
14
- }): {
15
- success: boolean;
16
- rest: string;
17
- message: string;
18
- };
@@ -1,25 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "vitest"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.failure = exports.success = void 0;
13
- const vitest_1 = require("vitest");
14
- vitest_1.vi.mock("nanoid", () => {
15
- return { nanoid: () => "fakeid" };
16
- });
17
- function success({ rest, match, captures, }) {
18
- return { success: true, rest, match, captures };
19
- }
20
- exports.success = success;
21
- function failure({ rest, message }) {
22
- return { success: false, rest, message };
23
- }
24
- exports.failure = failure;
25
- });