functionalscript 0.7.0 → 0.8.1
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/LICENSE +21 -661
- package/README.md +3 -2
- package/bnf/data/module.f.d.ts +16 -6
- package/bnf/data/module.f.js +115 -23
- package/bnf/data/test.f.d.ts +4 -0
- package/bnf/data/test.f.js +389 -14
- package/bnf/module.f.d.ts +5 -4
- package/bnf/module.f.js +1 -1
- package/bnf/testlib.f.js +1 -1
- package/ci/module.f.d.ts +3 -0
- package/ci/module.f.js +169 -0
- package/ci/module.js +3 -0
- package/crypto/hmac/module.f.d.ts +5 -4
- package/crypto/hmac/module.f.js +9 -18
- package/crypto/hmac/test.f.d.ts +1 -0
- package/crypto/hmac/test.f.js +16 -8
- package/crypto/prime_field/module.f.d.ts +1 -1
- package/crypto/prime_field/module.f.js +4 -3
- package/crypto/prime_field/test.f.js +13 -13
- package/crypto/rfc6979/module.f.d.ts +15 -0
- package/crypto/rfc6979/module.f.js +98 -0
- package/crypto/rfc6979/test.f.d.ts +10 -0
- package/crypto/rfc6979/test.f.js +490 -0
- package/crypto/secp/module.f.d.ts +4 -4
- package/crypto/secp/module.f.js +1 -1
- package/crypto/secp/test.f.js +8 -8
- package/crypto/sha2/module.f.d.ts +11 -5
- package/crypto/sha2/module.f.js +4 -3
- package/crypto/sha2/test.f.d.ts +4 -1
- package/crypto/sha2/test.f.js +41 -31
- package/crypto/sign/module.f.d.ts +1 -1
- package/crypto/sign/module.f.js +3 -2
- package/dev/tf/all.test.js +9 -1
- package/djs/ast/module.f.d.ts +3 -3
- package/djs/ast/test.f.js +7 -8
- package/djs/parser/module.f.d.ts +3 -3
- package/djs/parser/module.f.js +4 -4
- package/djs/parser/test.f.js +76 -77
- package/djs/serializer/module.f.d.ts +8 -8
- package/djs/serializer/module.f.js +4 -7
- package/djs/serializer/test.f.js +8 -9
- package/djs/tokenizer/module.f.d.ts +2 -2
- package/djs/tokenizer/module.f.js +3 -5
- package/djs/tokenizer/test.f.js +8 -10
- package/djs/transpiler/module.f.d.ts +3 -3
- package/djs/transpiler/module.f.js +2 -0
- package/fsc/bnf.f.d.ts +1 -1
- package/fsc/bnf.f.js +39 -51
- package/fsc/json.f.d.ts +1 -1
- package/fsc/json.f.js +56 -81
- package/fsc/test.f.d.ts +5 -0
- package/fsc/test.f.js +69 -7
- package/fsm/module.f.js +3 -3
- package/fsm/test.f.js +21 -25
- package/html/module.f.js +17 -4
- package/html/test.f.d.ts +7 -0
- package/html/test.f.js +37 -0
- package/issues/031-json.f.d.ts +1 -0
- package/js/tokenizer/module.f.d.ts +4 -4
- package/js/tokenizer/module.f.js +12 -17
- package/js/tokenizer/test.f.js +9 -11
- package/json/module.f.d.ts +6 -6
- package/json/module.f.js +5 -10
- package/json/parser/module.f.d.ts +4 -4
- package/json/parser/module.f.js +7 -4
- package/json/parser/test.f.js +47 -49
- package/json/serializer/module.f.d.ts +6 -6
- package/json/serializer/module.f.js +3 -2
- package/json/serializer/test.f.js +13 -13
- package/json/test.f.js +13 -15
- package/json/tokenizer/module.f.d.ts +4 -4
- package/json/tokenizer/module.f.js +6 -7
- package/json/tokenizer/test.f.js +7 -9
- package/nanvm-lib/tests/vm/test.f.d.ts +25 -0
- package/nanvm-lib/tests/vm/test.f.js +105 -0
- package/package.json +8 -8
- package/text/ascii/test.f.js +2 -2
- package/text/module.f.d.ts +3 -2
- package/text/module.f.js +2 -2
- package/text/test.f.js +3 -3
- package/text/utf16/test.f.js +2 -2
- package/text/utf8/test.f.js +2 -2
- package/types/array/test.f.js +2 -2
- package/types/bigint/module.f.d.ts +6 -3
- package/types/bigint/module.f.js +12 -11
- package/types/bigint/test.f.d.ts +2 -0
- package/types/bigint/test.f.js +21 -2
- package/types/bit_vec/module.f.d.ts +66 -34
- package/types/bit_vec/module.f.js +97 -32
- package/types/bit_vec/test.f.d.ts +7 -0
- package/types/bit_vec/test.f.js +283 -62
- package/types/btree/find/test.f.js +9 -8
- package/types/btree/remove/test.f.js +4 -4
- package/types/btree/set/test.f.js +4 -4
- package/types/btree/test.f.js +7 -7
- package/types/byte_set/test.f.js +2 -2
- package/types/function/compare/module.f.d.ts +15 -1
- package/types/function/compare/module.f.js +1 -1
- package/types/function/compare/test.f.js +37 -4
- package/types/list/test.f.js +93 -93
- package/types/monoid/module.f.d.ts +4 -4
- package/types/monoid/module.f.js +3 -3
- package/types/monoid/test.f.js +3 -3
- package/types/nominal/module.f.d.ts +5 -0
- package/types/nominal/module.f.js +4 -0
- package/types/nominal/test.f.d.ts +5 -0
- package/types/nominal/test.f.js +53 -0
- package/types/number/module.f.js +2 -2
- package/types/range_map/test.f.js +21 -21
- package/types/sorted_list/test.f.js +10 -10
- package/types/sorted_set/test.f.js +14 -14
- package/types/string/module.f.js +2 -2
- package/types/string_set/module.f.js +3 -3
- package/bnf/djs/module.f.d.ts +0 -77
- package/bnf/djs/module.f.js +0 -207
- package/bnf/djs/test.f.d.ts +0 -8
- package/bnf/djs/test.f.js +0 -277
- package/bnf/func/module.f.d.ts +0 -148
- package/bnf/func/module.f.js +0 -132
- package/bnf/func/test.f.d.ts +0 -12
- package/bnf/func/test.f.js +0 -171
- package/bnf/func/testlib.f.d.ts +0 -25
- package/bnf/func/testlib.f.js +0 -150
- /package/{issues/31-json.f.d.ts → ci/module.d.ts} +0 -0
- /package/issues/{31-json.f.js → 031-json.f.js} +0 -0
package/djs/parser/test.f.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
const { toArray } = list;
|
|
1
|
+
import { parseFromTokens } from "./module.f.js";
|
|
2
|
+
import { tokenize } from "../tokenizer/module.f.js";
|
|
3
|
+
import { toArray } from "../../types/list/module.f.js";
|
|
5
4
|
import { sort } from "../../types/object/module.f.js";
|
|
6
|
-
import
|
|
5
|
+
import { stringToList } from "../../text/utf16/module.f.js";
|
|
7
6
|
import { stringifyAsTree } from "../serializer/module.f.js";
|
|
8
7
|
import { stringify } from "../../json/module.f.js";
|
|
9
|
-
const tokenizeString = s => toArray(
|
|
8
|
+
const tokenizeString = s => toArray(tokenize(stringToList(s))(''));
|
|
10
9
|
const stringifyDjsModule = stringifyAsTree(sort);
|
|
11
10
|
export default {
|
|
12
11
|
valid: [
|
|
13
12
|
() => {
|
|
14
13
|
const tokenList = tokenizeString('export default null');
|
|
15
|
-
const obj =
|
|
14
|
+
const obj = parseFromTokens(tokenList);
|
|
16
15
|
if (obj[0] !== 'ok') {
|
|
17
16
|
throw obj;
|
|
18
17
|
}
|
|
@@ -23,7 +22,7 @@ export default {
|
|
|
23
22
|
},
|
|
24
23
|
() => {
|
|
25
24
|
const tokenList = tokenizeString('export default true');
|
|
26
|
-
const obj =
|
|
25
|
+
const obj = parseFromTokens(tokenList);
|
|
27
26
|
if (obj[0] !== 'ok') {
|
|
28
27
|
throw obj;
|
|
29
28
|
}
|
|
@@ -34,7 +33,7 @@ export default {
|
|
|
34
33
|
},
|
|
35
34
|
() => {
|
|
36
35
|
const tokenList = tokenizeString('export default false');
|
|
37
|
-
const obj =
|
|
36
|
+
const obj = parseFromTokens(tokenList);
|
|
38
37
|
if (obj[0] !== 'ok') {
|
|
39
38
|
throw obj;
|
|
40
39
|
}
|
|
@@ -45,7 +44,7 @@ export default {
|
|
|
45
44
|
},
|
|
46
45
|
() => {
|
|
47
46
|
const tokenList = tokenizeString('export default undefined');
|
|
48
|
-
const obj =
|
|
47
|
+
const obj = parseFromTokens(tokenList);
|
|
49
48
|
if (obj[0] !== 'ok') {
|
|
50
49
|
throw obj;
|
|
51
50
|
}
|
|
@@ -56,7 +55,7 @@ export default {
|
|
|
56
55
|
},
|
|
57
56
|
() => {
|
|
58
57
|
const tokenList = tokenizeString('export default 0.1');
|
|
59
|
-
const obj =
|
|
58
|
+
const obj = parseFromTokens(tokenList);
|
|
60
59
|
if (obj[0] !== 'ok') {
|
|
61
60
|
throw obj;
|
|
62
61
|
}
|
|
@@ -67,7 +66,7 @@ export default {
|
|
|
67
66
|
},
|
|
68
67
|
() => {
|
|
69
68
|
const tokenList = tokenizeString('export default 1.1e+2');
|
|
70
|
-
const obj =
|
|
69
|
+
const obj = parseFromTokens(tokenList);
|
|
71
70
|
if (obj[0] !== 'ok') {
|
|
72
71
|
throw obj;
|
|
73
72
|
}
|
|
@@ -78,7 +77,7 @@ export default {
|
|
|
78
77
|
},
|
|
79
78
|
() => {
|
|
80
79
|
const tokenList = tokenizeString('export default "abc"');
|
|
81
|
-
const obj =
|
|
80
|
+
const obj = parseFromTokens(tokenList);
|
|
82
81
|
if (obj[0] !== 'ok') {
|
|
83
82
|
throw obj;
|
|
84
83
|
}
|
|
@@ -89,7 +88,7 @@ export default {
|
|
|
89
88
|
},
|
|
90
89
|
() => {
|
|
91
90
|
const tokenList = tokenizeString('export default []');
|
|
92
|
-
const obj =
|
|
91
|
+
const obj = parseFromTokens(tokenList);
|
|
93
92
|
if (obj[0] !== 'ok') {
|
|
94
93
|
throw obj;
|
|
95
94
|
}
|
|
@@ -100,7 +99,7 @@ export default {
|
|
|
100
99
|
},
|
|
101
100
|
() => {
|
|
102
101
|
const tokenList = tokenizeString('export default [1]');
|
|
103
|
-
const obj =
|
|
102
|
+
const obj = parseFromTokens(tokenList);
|
|
104
103
|
if (obj[0] !== 'ok') {
|
|
105
104
|
throw obj;
|
|
106
105
|
}
|
|
@@ -111,7 +110,7 @@ export default {
|
|
|
111
110
|
},
|
|
112
111
|
() => {
|
|
113
112
|
const tokenList = tokenizeString('export default [[]]');
|
|
114
|
-
const obj =
|
|
113
|
+
const obj = parseFromTokens(tokenList);
|
|
115
114
|
if (obj[0] !== 'ok') {
|
|
116
115
|
throw obj;
|
|
117
116
|
}
|
|
@@ -122,7 +121,7 @@ export default {
|
|
|
122
121
|
},
|
|
123
122
|
() => {
|
|
124
123
|
const tokenList = tokenizeString('export default [0,[1,[2,[]]],3]');
|
|
125
|
-
const obj =
|
|
124
|
+
const obj = parseFromTokens(tokenList);
|
|
126
125
|
if (obj[0] !== 'ok') {
|
|
127
126
|
throw obj;
|
|
128
127
|
}
|
|
@@ -133,7 +132,7 @@ export default {
|
|
|
133
132
|
},
|
|
134
133
|
() => {
|
|
135
134
|
const tokenList = tokenizeString('export default {}');
|
|
136
|
-
const obj =
|
|
135
|
+
const obj = parseFromTokens(tokenList);
|
|
137
136
|
if (obj[0] !== 'ok') {
|
|
138
137
|
throw obj;
|
|
139
138
|
}
|
|
@@ -144,7 +143,7 @@ export default {
|
|
|
144
143
|
},
|
|
145
144
|
() => {
|
|
146
145
|
const tokenList = tokenizeString('export default [{}]');
|
|
147
|
-
const obj =
|
|
146
|
+
const obj = parseFromTokens(tokenList);
|
|
148
147
|
if (obj[0] !== 'ok') {
|
|
149
148
|
throw obj;
|
|
150
149
|
}
|
|
@@ -155,7 +154,7 @@ export default {
|
|
|
155
154
|
},
|
|
156
155
|
() => {
|
|
157
156
|
const tokenList = tokenizeString('export default {"a":true,"b":false,"c":null,"d":undefined}');
|
|
158
|
-
const obj =
|
|
157
|
+
const obj = parseFromTokens(tokenList);
|
|
159
158
|
if (obj[0] !== 'ok') {
|
|
160
159
|
throw obj;
|
|
161
160
|
}
|
|
@@ -166,7 +165,7 @@ export default {
|
|
|
166
165
|
},
|
|
167
166
|
() => {
|
|
168
167
|
const tokenList = tokenizeString('export default {"a":{"b":{"c":["d"]}}}');
|
|
169
|
-
const obj =
|
|
168
|
+
const obj = parseFromTokens(tokenList);
|
|
170
169
|
if (obj[0] !== 'ok') {
|
|
171
170
|
throw obj;
|
|
172
171
|
}
|
|
@@ -177,7 +176,7 @@ export default {
|
|
|
177
176
|
},
|
|
178
177
|
() => {
|
|
179
178
|
const tokenList = tokenizeString('export default {a: 1}');
|
|
180
|
-
const obj =
|
|
179
|
+
const obj = parseFromTokens(tokenList);
|
|
181
180
|
if (obj[0] !== 'ok') {
|
|
182
181
|
throw obj;
|
|
183
182
|
}
|
|
@@ -188,7 +187,7 @@ export default {
|
|
|
188
187
|
},
|
|
189
188
|
() => {
|
|
190
189
|
const tokenList = tokenizeString('export default 1234567890n');
|
|
191
|
-
const obj =
|
|
190
|
+
const obj = parseFromTokens(tokenList);
|
|
192
191
|
if (obj[0] !== 'ok') {
|
|
193
192
|
throw obj;
|
|
194
193
|
}
|
|
@@ -199,7 +198,7 @@ export default {
|
|
|
199
198
|
},
|
|
200
199
|
() => {
|
|
201
200
|
const tokenList = tokenizeString('export default [1234567890n]');
|
|
202
|
-
const obj =
|
|
201
|
+
const obj = parseFromTokens(tokenList);
|
|
203
202
|
if (obj[0] !== 'ok') {
|
|
204
203
|
throw obj;
|
|
205
204
|
}
|
|
@@ -210,7 +209,7 @@ export default {
|
|
|
210
209
|
},
|
|
211
210
|
() => {
|
|
212
211
|
const tokenList = tokenizeString('export default [1,]');
|
|
213
|
-
const obj =
|
|
212
|
+
const obj = parseFromTokens(tokenList);
|
|
214
213
|
if (obj[0] !== 'ok') {
|
|
215
214
|
throw obj;
|
|
216
215
|
}
|
|
@@ -221,7 +220,7 @@ export default {
|
|
|
221
220
|
},
|
|
222
221
|
() => {
|
|
223
222
|
const tokenList = tokenizeString('export default {"a":1,}');
|
|
224
|
-
const obj =
|
|
223
|
+
const obj = parseFromTokens(tokenList);
|
|
225
224
|
if (obj[0] !== 'ok') {
|
|
226
225
|
throw obj;
|
|
227
226
|
}
|
|
@@ -234,7 +233,7 @@ export default {
|
|
|
234
233
|
invalid: [
|
|
235
234
|
() => {
|
|
236
235
|
const tokenList = tokenizeString('export default');
|
|
237
|
-
const obj =
|
|
236
|
+
const obj = parseFromTokens(tokenList);
|
|
238
237
|
if (obj[0] !== 'error') {
|
|
239
238
|
throw obj;
|
|
240
239
|
}
|
|
@@ -244,7 +243,7 @@ export default {
|
|
|
244
243
|
},
|
|
245
244
|
() => {
|
|
246
245
|
const tokenList = tokenizeString('export default "123');
|
|
247
|
-
const obj =
|
|
246
|
+
const obj = parseFromTokens(tokenList);
|
|
248
247
|
if (obj[0] !== 'error') {
|
|
249
248
|
throw obj;
|
|
250
249
|
}
|
|
@@ -254,7 +253,7 @@ export default {
|
|
|
254
253
|
},
|
|
255
254
|
() => {
|
|
256
255
|
const tokenList = tokenizeString('export default [,]');
|
|
257
|
-
const obj =
|
|
256
|
+
const obj = parseFromTokens(tokenList);
|
|
258
257
|
if (obj[0] !== 'error') {
|
|
259
258
|
throw obj;
|
|
260
259
|
}
|
|
@@ -264,7 +263,7 @@ export default {
|
|
|
264
263
|
},
|
|
265
264
|
() => {
|
|
266
265
|
const tokenList = tokenizeString('export default [1 2]');
|
|
267
|
-
const obj =
|
|
266
|
+
const obj = parseFromTokens(tokenList);
|
|
268
267
|
if (obj[0] !== 'error') {
|
|
269
268
|
throw obj;
|
|
270
269
|
}
|
|
@@ -274,7 +273,7 @@ export default {
|
|
|
274
273
|
},
|
|
275
274
|
() => {
|
|
276
275
|
const tokenList = tokenizeString('export default [1,,2]');
|
|
277
|
-
const obj =
|
|
276
|
+
const obj = parseFromTokens(tokenList);
|
|
278
277
|
if (obj[0] !== 'error') {
|
|
279
278
|
throw obj;
|
|
280
279
|
}
|
|
@@ -284,7 +283,7 @@ export default {
|
|
|
284
283
|
},
|
|
285
284
|
() => {
|
|
286
285
|
const tokenList = tokenizeString('export default []]');
|
|
287
|
-
const obj =
|
|
286
|
+
const obj = parseFromTokens(tokenList);
|
|
288
287
|
if (obj[0] !== 'error') {
|
|
289
288
|
throw obj;
|
|
290
289
|
}
|
|
@@ -294,7 +293,7 @@ export default {
|
|
|
294
293
|
},
|
|
295
294
|
() => {
|
|
296
295
|
const tokenList = tokenizeString('export default ["a"');
|
|
297
|
-
const obj =
|
|
296
|
+
const obj = parseFromTokens(tokenList);
|
|
298
297
|
if (obj[0] !== 'error') {
|
|
299
298
|
throw obj;
|
|
300
299
|
}
|
|
@@ -304,7 +303,7 @@ export default {
|
|
|
304
303
|
},
|
|
305
304
|
() => {
|
|
306
305
|
const tokenList = tokenizeString('export default [,1]');
|
|
307
|
-
const obj =
|
|
306
|
+
const obj = parseFromTokens(tokenList);
|
|
308
307
|
if (obj[0] !== 'error') {
|
|
309
308
|
throw obj;
|
|
310
309
|
}
|
|
@@ -314,7 +313,7 @@ export default {
|
|
|
314
313
|
},
|
|
315
314
|
() => {
|
|
316
315
|
const tokenList = tokenizeString('export default [:]');
|
|
317
|
-
const obj =
|
|
316
|
+
const obj = parseFromTokens(tokenList);
|
|
318
317
|
if (obj[0] !== 'error') {
|
|
319
318
|
throw obj;
|
|
320
319
|
}
|
|
@@ -324,7 +323,7 @@ export default {
|
|
|
324
323
|
},
|
|
325
324
|
() => {
|
|
326
325
|
const tokenList = tokenizeString('export default ]');
|
|
327
|
-
const obj =
|
|
326
|
+
const obj = parseFromTokens(tokenList);
|
|
328
327
|
if (obj[0] !== 'error') {
|
|
329
328
|
throw obj;
|
|
330
329
|
}
|
|
@@ -334,7 +333,7 @@ export default {
|
|
|
334
333
|
},
|
|
335
334
|
() => {
|
|
336
335
|
const tokenList = tokenizeString('export default {,}');
|
|
337
|
-
const obj =
|
|
336
|
+
const obj = parseFromTokens(tokenList);
|
|
338
337
|
if (obj[0] !== 'error') {
|
|
339
338
|
throw obj;
|
|
340
339
|
}
|
|
@@ -344,7 +343,7 @@ export default {
|
|
|
344
343
|
},
|
|
345
344
|
() => {
|
|
346
345
|
const tokenList = tokenizeString('export default {1:2}');
|
|
347
|
-
const obj =
|
|
346
|
+
const obj = parseFromTokens(tokenList);
|
|
348
347
|
if (obj[0] !== 'error') {
|
|
349
348
|
throw obj;
|
|
350
349
|
}
|
|
@@ -354,7 +353,7 @@ export default {
|
|
|
354
353
|
},
|
|
355
354
|
() => {
|
|
356
355
|
const tokenList = tokenizeString('export default {"1"2}');
|
|
357
|
-
const obj =
|
|
356
|
+
const obj = parseFromTokens(tokenList);
|
|
358
357
|
if (obj[0] !== 'error') {
|
|
359
358
|
throw obj;
|
|
360
359
|
}
|
|
@@ -364,7 +363,7 @@ export default {
|
|
|
364
363
|
},
|
|
365
364
|
() => {
|
|
366
365
|
const tokenList = tokenizeString('export default {"1"::2}');
|
|
367
|
-
const obj =
|
|
366
|
+
const obj = parseFromTokens(tokenList);
|
|
368
367
|
if (obj[0] !== 'error') {
|
|
369
368
|
throw obj;
|
|
370
369
|
}
|
|
@@ -374,7 +373,7 @@ export default {
|
|
|
374
373
|
},
|
|
375
374
|
() => {
|
|
376
375
|
const tokenList = tokenizeString('export default {"1":2,,"3":4');
|
|
377
|
-
const obj =
|
|
376
|
+
const obj = parseFromTokens(tokenList);
|
|
378
377
|
if (obj[0] !== 'error') {
|
|
379
378
|
throw obj;
|
|
380
379
|
}
|
|
@@ -384,7 +383,7 @@ export default {
|
|
|
384
383
|
},
|
|
385
384
|
() => {
|
|
386
385
|
const tokenList = tokenizeString('export default {}}');
|
|
387
|
-
const obj =
|
|
386
|
+
const obj = parseFromTokens(tokenList);
|
|
388
387
|
if (obj[0] !== 'error') {
|
|
389
388
|
throw obj;
|
|
390
389
|
}
|
|
@@ -394,7 +393,7 @@ export default {
|
|
|
394
393
|
},
|
|
395
394
|
() => {
|
|
396
395
|
const tokenList = tokenizeString('export default {"1":2');
|
|
397
|
-
const obj =
|
|
396
|
+
const obj = parseFromTokens(tokenList);
|
|
398
397
|
if (obj[0] !== 'error') {
|
|
399
398
|
throw obj;
|
|
400
399
|
}
|
|
@@ -404,7 +403,7 @@ export default {
|
|
|
404
403
|
},
|
|
405
404
|
() => {
|
|
406
405
|
const tokenList = tokenizeString('export default {,"1":2}');
|
|
407
|
-
const obj =
|
|
406
|
+
const obj = parseFromTokens(tokenList);
|
|
408
407
|
if (obj[0] !== 'error') {
|
|
409
408
|
throw obj;
|
|
410
409
|
}
|
|
@@ -414,7 +413,7 @@ export default {
|
|
|
414
413
|
},
|
|
415
414
|
() => {
|
|
416
415
|
const tokenList = tokenizeString('export default }');
|
|
417
|
-
const obj =
|
|
416
|
+
const obj = parseFromTokens(tokenList);
|
|
418
417
|
if (obj[0] !== 'error') {
|
|
419
418
|
throw obj;
|
|
420
419
|
}
|
|
@@ -424,7 +423,7 @@ export default {
|
|
|
424
423
|
},
|
|
425
424
|
() => {
|
|
426
425
|
const tokenList = tokenizeString('export default [{]}');
|
|
427
|
-
const obj =
|
|
426
|
+
const obj = parseFromTokens(tokenList);
|
|
428
427
|
if (obj[0] !== 'error') {
|
|
429
428
|
throw obj;
|
|
430
429
|
}
|
|
@@ -434,7 +433,7 @@ export default {
|
|
|
434
433
|
},
|
|
435
434
|
() => {
|
|
436
435
|
const tokenList = tokenizeString('export default {[}]');
|
|
437
|
-
const obj =
|
|
436
|
+
const obj = parseFromTokens(tokenList);
|
|
438
437
|
if (obj[0] !== 'error') {
|
|
439
438
|
throw obj;
|
|
440
439
|
}
|
|
@@ -444,7 +443,7 @@ export default {
|
|
|
444
443
|
},
|
|
445
444
|
() => {
|
|
446
445
|
const tokenList = tokenizeString('export default 10-5');
|
|
447
|
-
const obj =
|
|
446
|
+
const obj = parseFromTokens(tokenList);
|
|
448
447
|
if (obj[0] !== 'error') {
|
|
449
448
|
throw obj;
|
|
450
449
|
}
|
|
@@ -456,7 +455,7 @@ export default {
|
|
|
456
455
|
errorMetadata: [
|
|
457
456
|
() => {
|
|
458
457
|
const tokenList = tokenizeString('export default [,]');
|
|
459
|
-
const obj =
|
|
458
|
+
const obj = parseFromTokens(tokenList);
|
|
460
459
|
if (obj[0] !== 'error') {
|
|
461
460
|
throw obj;
|
|
462
461
|
}
|
|
@@ -469,7 +468,7 @@ export default {
|
|
|
469
468
|
validWhiteSpaces: [
|
|
470
469
|
() => {
|
|
471
470
|
const tokenList = tokenizeString(' export default [ 0 , 1 , 2 ] ');
|
|
472
|
-
const obj =
|
|
471
|
+
const obj = parseFromTokens(tokenList);
|
|
473
472
|
if (obj[0] !== 'ok') {
|
|
474
473
|
throw obj;
|
|
475
474
|
}
|
|
@@ -480,7 +479,7 @@ export default {
|
|
|
480
479
|
},
|
|
481
480
|
() => {
|
|
482
481
|
const tokenList = tokenizeString(' export default { "a" : 0 , "b" : 1 } ');
|
|
483
|
-
const obj =
|
|
482
|
+
const obj = parseFromTokens(tokenList);
|
|
484
483
|
if (obj[0] !== 'ok') {
|
|
485
484
|
throw obj;
|
|
486
485
|
}
|
|
@@ -491,7 +490,7 @@ export default {
|
|
|
491
490
|
},
|
|
492
491
|
() => {
|
|
493
492
|
const tokenList = tokenizeString('\nexport\ndefault\n[\n0\n,\n1\n,\n2\n]\n');
|
|
494
|
-
const obj =
|
|
493
|
+
const obj = parseFromTokens(tokenList);
|
|
495
494
|
if (obj[0] !== 'ok') {
|
|
496
495
|
throw obj;
|
|
497
496
|
}
|
|
@@ -502,7 +501,7 @@ export default {
|
|
|
502
501
|
},
|
|
503
502
|
() => {
|
|
504
503
|
const tokenList = tokenizeString('\rexport\rdefault\r{\r"a"\r:\r0\r,\r"b"\r:\r1\r}\r');
|
|
505
|
-
const obj =
|
|
504
|
+
const obj = parseFromTokens(tokenList);
|
|
506
505
|
if (obj[0] !== 'ok') {
|
|
507
506
|
throw obj;
|
|
508
507
|
}
|
|
@@ -515,7 +514,7 @@ export default {
|
|
|
515
514
|
validJson: [
|
|
516
515
|
() => {
|
|
517
516
|
const tokenList = tokenizeString('null');
|
|
518
|
-
const obj =
|
|
517
|
+
const obj = parseFromTokens(tokenList);
|
|
519
518
|
if (obj[0] !== 'ok') {
|
|
520
519
|
throw obj;
|
|
521
520
|
}
|
|
@@ -526,7 +525,7 @@ export default {
|
|
|
526
525
|
},
|
|
527
526
|
() => {
|
|
528
527
|
const tokenList = tokenizeString('1');
|
|
529
|
-
const obj =
|
|
528
|
+
const obj = parseFromTokens(tokenList);
|
|
530
529
|
if (obj[0] !== 'ok') {
|
|
531
530
|
throw obj;
|
|
532
531
|
}
|
|
@@ -537,7 +536,7 @@ export default {
|
|
|
537
536
|
},
|
|
538
537
|
() => {
|
|
539
538
|
const tokenList = tokenizeString('[]');
|
|
540
|
-
const obj =
|
|
539
|
+
const obj = parseFromTokens(tokenList);
|
|
541
540
|
if (obj[0] !== 'ok') {
|
|
542
541
|
throw obj;
|
|
543
542
|
}
|
|
@@ -548,7 +547,7 @@ export default {
|
|
|
548
547
|
},
|
|
549
548
|
() => {
|
|
550
549
|
const tokenList = tokenizeString('{"valid":"json"}');
|
|
551
|
-
const obj =
|
|
550
|
+
const obj = parseFromTokens(tokenList);
|
|
552
551
|
if (obj[0] !== 'ok') {
|
|
553
552
|
throw obj;
|
|
554
553
|
}
|
|
@@ -561,7 +560,7 @@ export default {
|
|
|
561
560
|
invalidModule: [
|
|
562
561
|
() => {
|
|
563
562
|
const tokenList = tokenizeString('module=null');
|
|
564
|
-
const obj =
|
|
563
|
+
const obj = parseFromTokens(tokenList);
|
|
565
564
|
if (obj[0] !== 'error') {
|
|
566
565
|
throw obj;
|
|
567
566
|
}
|
|
@@ -571,7 +570,7 @@ export default {
|
|
|
571
570
|
},
|
|
572
571
|
() => {
|
|
573
572
|
const tokenList = tokenizeString('export null');
|
|
574
|
-
const obj =
|
|
573
|
+
const obj = parseFromTokens(tokenList);
|
|
575
574
|
if (obj[0] !== 'error') {
|
|
576
575
|
throw obj;
|
|
577
576
|
}
|
|
@@ -581,7 +580,7 @@ export default {
|
|
|
581
580
|
},
|
|
582
581
|
() => {
|
|
583
582
|
const tokenList = tokenizeString('export default = null');
|
|
584
|
-
const obj =
|
|
583
|
+
const obj = parseFromTokens(tokenList);
|
|
585
584
|
if (obj[0] !== 'error') {
|
|
586
585
|
throw obj;
|
|
587
586
|
}
|
|
@@ -593,7 +592,7 @@ export default {
|
|
|
593
592
|
validWithConst: [
|
|
594
593
|
() => {
|
|
595
594
|
const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default 3');
|
|
596
|
-
const obj =
|
|
595
|
+
const obj = parseFromTokens(tokenList);
|
|
597
596
|
if (obj[0] !== 'ok') {
|
|
598
597
|
throw obj;
|
|
599
598
|
}
|
|
@@ -604,7 +603,7 @@ export default {
|
|
|
604
603
|
},
|
|
605
604
|
() => {
|
|
606
605
|
const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default b');
|
|
607
|
-
const obj =
|
|
606
|
+
const obj = parseFromTokens(tokenList);
|
|
608
607
|
if (obj[0] !== 'ok') {
|
|
609
608
|
throw obj;
|
|
610
609
|
}
|
|
@@ -615,7 +614,7 @@ export default {
|
|
|
615
614
|
},
|
|
616
615
|
() => {
|
|
617
616
|
const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default [b,a,b]');
|
|
618
|
-
const obj =
|
|
617
|
+
const obj = parseFromTokens(tokenList);
|
|
619
618
|
if (obj[0] !== 'ok') {
|
|
620
619
|
throw obj;
|
|
621
620
|
}
|
|
@@ -626,7 +625,7 @@ export default {
|
|
|
626
625
|
},
|
|
627
626
|
() => {
|
|
628
627
|
const tokenList = tokenizeString('const a = 1 \n const b = 2 \n export default {"1st":b,"2nd":a,"3rd":b}');
|
|
629
|
-
const obj =
|
|
628
|
+
const obj = parseFromTokens(tokenList);
|
|
630
629
|
if (obj[0] !== 'ok') {
|
|
631
630
|
throw obj;
|
|
632
631
|
}
|
|
@@ -639,7 +638,7 @@ export default {
|
|
|
639
638
|
invalidWithConst: [
|
|
640
639
|
() => {
|
|
641
640
|
const tokenList = tokenizeString('const a = 1 const b = 2 export default 3');
|
|
642
|
-
const obj =
|
|
641
|
+
const obj = parseFromTokens(tokenList);
|
|
643
642
|
if (obj[0] !== 'error') {
|
|
644
643
|
throw obj;
|
|
645
644
|
}
|
|
@@ -649,7 +648,7 @@ export default {
|
|
|
649
648
|
},
|
|
650
649
|
() => {
|
|
651
650
|
const tokenList = tokenizeString('const = 1 \n const b = 2 \n export default 3');
|
|
652
|
-
const obj =
|
|
651
|
+
const obj = parseFromTokens(tokenList);
|
|
653
652
|
if (obj[0] !== 'error') {
|
|
654
653
|
throw obj;
|
|
655
654
|
}
|
|
@@ -659,7 +658,7 @@ export default {
|
|
|
659
658
|
},
|
|
660
659
|
() => {
|
|
661
660
|
const tokenList = tokenizeString('const a = 1 \n const a = 2 \n export default 3');
|
|
662
|
-
const obj =
|
|
661
|
+
const obj = parseFromTokens(tokenList);
|
|
663
662
|
if (obj[0] !== 'error') {
|
|
664
663
|
throw obj;
|
|
665
664
|
}
|
|
@@ -671,7 +670,7 @@ export default {
|
|
|
671
670
|
validWithArgs: [
|
|
672
671
|
() => {
|
|
673
672
|
const tokenList = tokenizeString('import a from "test/test.f.mjs" \n export default a');
|
|
674
|
-
const obj =
|
|
673
|
+
const obj = parseFromTokens(tokenList);
|
|
675
674
|
if (obj[0] !== 'ok') {
|
|
676
675
|
throw obj;
|
|
677
676
|
}
|
|
@@ -682,7 +681,7 @@ export default {
|
|
|
682
681
|
},
|
|
683
682
|
() => {
|
|
684
683
|
const tokenList = tokenizeString('import a from "first/test.f.mjs" \n import b from "second/test.f.mjs" \n export default [b, a, b]');
|
|
685
|
-
const obj =
|
|
684
|
+
const obj = parseFromTokens(tokenList);
|
|
686
685
|
if (obj[0] !== 'ok') {
|
|
687
686
|
throw obj;
|
|
688
687
|
}
|
|
@@ -693,7 +692,7 @@ export default {
|
|
|
693
692
|
},
|
|
694
693
|
() => {
|
|
695
694
|
const tokenList = tokenizeString('import a from "test/test.f.mjs" \n const b = null \n export default [b, a, b]');
|
|
696
|
-
const obj =
|
|
695
|
+
const obj = parseFromTokens(tokenList);
|
|
697
696
|
if (obj[0] !== 'ok') {
|
|
698
697
|
throw obj;
|
|
699
698
|
}
|
|
@@ -706,7 +705,7 @@ export default {
|
|
|
706
705
|
invalidWithArgs: [
|
|
707
706
|
() => {
|
|
708
707
|
const tokenList = tokenizeString('import a from "test/test.f.mjs" export default a');
|
|
709
|
-
const obj =
|
|
708
|
+
const obj = parseFromTokens(tokenList);
|
|
710
709
|
if (obj[0] !== 'error') {
|
|
711
710
|
throw obj;
|
|
712
711
|
}
|
|
@@ -716,7 +715,7 @@ export default {
|
|
|
716
715
|
},
|
|
717
716
|
() => {
|
|
718
717
|
const tokenList = tokenizeString('import a from \n export default a');
|
|
719
|
-
const obj =
|
|
718
|
+
const obj = parseFromTokens(tokenList);
|
|
720
719
|
if (obj[0] !== 'error') {
|
|
721
720
|
throw obj;
|
|
722
721
|
}
|
|
@@ -726,7 +725,7 @@ export default {
|
|
|
726
725
|
},
|
|
727
726
|
() => {
|
|
728
727
|
const tokenList = tokenizeString('import a "test/test.f.mjs" \n export default a');
|
|
729
|
-
const obj =
|
|
728
|
+
const obj = parseFromTokens(tokenList);
|
|
730
729
|
if (obj[0] !== 'error') {
|
|
731
730
|
throw obj;
|
|
732
731
|
}
|
|
@@ -736,7 +735,7 @@ export default {
|
|
|
736
735
|
},
|
|
737
736
|
() => {
|
|
738
737
|
const tokenList = tokenizeString('import from "test/test.f.mjs" \n export default a');
|
|
739
|
-
const obj =
|
|
738
|
+
const obj = parseFromTokens(tokenList);
|
|
740
739
|
if (obj[0] !== 'error') {
|
|
741
740
|
throw obj;
|
|
742
741
|
}
|
|
@@ -746,7 +745,7 @@ export default {
|
|
|
746
745
|
},
|
|
747
746
|
() => {
|
|
748
747
|
const tokenList = tokenizeString('import a from "first/test.f.mjs" \n import a from "second/test.f.mjs" \n export default [b, a, b]');
|
|
749
|
-
const obj =
|
|
748
|
+
const obj = parseFromTokens(tokenList);
|
|
750
749
|
if (obj[0] !== 'error') {
|
|
751
750
|
throw obj;
|
|
752
751
|
}
|
|
@@ -756,7 +755,7 @@ export default {
|
|
|
756
755
|
},
|
|
757
756
|
() => {
|
|
758
757
|
const tokenList = tokenizeString('import a from "test/test.f.mjs" \n const a = null \n export default null');
|
|
759
|
-
const obj =
|
|
758
|
+
const obj = parseFromTokens(tokenList);
|
|
760
759
|
if (obj[0] !== 'error') {
|
|
761
760
|
throw obj;
|
|
762
761
|
}
|
|
@@ -768,7 +767,7 @@ export default {
|
|
|
768
767
|
comments: [
|
|
769
768
|
() => {
|
|
770
769
|
const tokenList = tokenizeString('export //comment \n default /* comment */ null //comment');
|
|
771
|
-
const obj =
|
|
770
|
+
const obj = parseFromTokens(tokenList);
|
|
772
771
|
if (obj[0] !== 'ok') {
|
|
773
772
|
throw obj;
|
|
774
773
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import type { Unknown } from '../module.f.ts';
|
|
2
|
+
import type { Entry as ObjectEntry } from '../../types/object/module.f.ts';
|
|
3
3
|
import { type List } from '../../types/list/module.f.ts';
|
|
4
4
|
export declare const undefinedSerialize: string[];
|
|
5
5
|
type RefCounter = [number, number, boolean];
|
|
6
|
-
type Entry =
|
|
6
|
+
type Entry = ObjectEntry<Unknown>;
|
|
7
7
|
type Entries = List<Entry>;
|
|
8
8
|
type MapEntries = (entries: Entries) => Entries;
|
|
9
|
-
type Refs = Map<
|
|
10
|
-
export declare const serializeWithoutConst: (mapEntries: MapEntries) => (value:
|
|
11
|
-
export declare const stringify: (sort: MapEntries) => (djs:
|
|
12
|
-
export declare const stringifyAsTree: (mapEntries: MapEntries) => (value:
|
|
13
|
-
export declare const countRefs: (djs:
|
|
9
|
+
type Refs = Map<Unknown, RefCounter>;
|
|
10
|
+
export declare const serializeWithoutConst: (mapEntries: MapEntries) => (value: Unknown) => List<string>;
|
|
11
|
+
export declare const stringify: (sort: MapEntries) => (djs: Unknown) => string;
|
|
12
|
+
export declare const stringifyAsTree: (mapEntries: MapEntries) => (value: Unknown) => string;
|
|
13
|
+
export declare const countRefs: (djs: Unknown) => Refs;
|
|
14
14
|
export {};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { fold } from "../../types/list/module.f.js";
|
|
2
|
-
import
|
|
3
|
-
const { concat } = string;
|
|
2
|
+
import { concat } from "../../types/string/module.f.js";
|
|
4
3
|
import { flat, flatMap, map, concat as listConcat } from "../../types/list/module.f.js";
|
|
5
4
|
const { entries } = Object;
|
|
6
|
-
import
|
|
7
|
-
const { compose, fn } = f;
|
|
5
|
+
import { compose, fn } from "../../types/function/module.f.js";
|
|
8
6
|
import { serialize as bigintSerialize } from "../../types/bigint/module.f.js";
|
|
9
|
-
import
|
|
10
|
-
const { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } = serializer;
|
|
7
|
+
import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from "../../json/serializer/module.f.js";
|
|
11
8
|
const colon = [':'];
|
|
12
9
|
export const undefinedSerialize = ['undefined'];
|
|
13
10
|
const getConstantsOp = djs => state => {
|
|
@@ -181,7 +178,7 @@ export const stringify = sort => djs => {
|
|
|
181
178
|
const constSerialize = entry => {
|
|
182
179
|
const refCounter = refs.get(entry);
|
|
183
180
|
if (refCounter === undefined) {
|
|
184
|
-
throw 'unexpected
|
|
181
|
+
throw 'unexpected behavior';
|
|
185
182
|
}
|
|
186
183
|
return flat([['const c'], numberSerialize(refCounter[0]), [' = '], serializeWithConst(sort)(refs)(entry)(entry), ['\n']]);
|
|
187
184
|
};
|