functionalscript 0.1.608 → 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/CHANGELOG.md +10 -0
- package/Cargo.lock +4 -0
- package/Cargo.toml +4 -2
- package/README.md +1 -1
- package/com/cpp/module.f.d.mts +4 -8
- package/com/cpp/module.f.mjs +20 -25
- package/com/cpp/testlib.f.mjs +3 -4
- package/com/cs/module.f.d.mts +4 -8
- package/com/cs/module.f.mjs +18 -23
- package/com/cs/testlib.f.mjs +3 -5
- package/com/rust/module.f.d.mts +3 -7
- package/com/rust/module.f.mjs +25 -30
- package/com/rust/nanocom/src/cobject.rs +1 -1
- package/com/rust/testlib.f.mjs +3 -5
- package/com/test/build.f.d.mts +2 -2
- package/com/test/build.f.mjs +2 -2
- package/com/test/build.mjs +4 -4
- package/com/test/rust/src/lib.rs +4 -4
- package/com/types/module.f.d.mts +5 -10
- package/com/types/module.f.mjs +5 -12
- package/commonjs/build/module.f.d.mts +13 -17
- package/commonjs/build/module.f.mjs +23 -28
- package/commonjs/build/test.f.mjs +4 -4
- package/commonjs/module/function/module.f.d.mts +0 -2
- package/commonjs/module/function/module.f.mjs +0 -2
- package/commonjs/module/module.f.d.mts +16 -21
- package/commonjs/module/module.f.mjs +2 -9
- package/commonjs/module.d.mts +1 -5
- package/commonjs/module.f.d.mts +0 -2
- package/commonjs/module.f.mjs +0 -2
- package/commonjs/module.mjs +2 -7
- package/commonjs/package/dependencies/module.f.d.mts +3 -7
- package/commonjs/package/dependencies/module.f.mjs +5 -10
- package/commonjs/package/dependencies/test.f.mjs +1 -1
- package/commonjs/package/module.f.d.mts +12 -18
- package/commonjs/package/module.f.mjs +6 -13
- package/commonjs/package/test.f.mjs +1 -1
- package/commonjs/path/module.f.d.mts +25 -32
- package/commonjs/path/module.f.mjs +12 -23
- package/commonjs/path/test.f.mjs +11 -11
- package/commonjs/test.mjs +1 -1
- package/dev/module.f.d.mts +1 -4
- package/dev/module.f.mjs +1 -4
- package/dev/module.mjs +1 -1
- package/dev/test/module.f.d.mts +2 -3
- package/dev/test/module.f.mjs +5 -7
- package/djs/module.f.d.mts +13 -18
- package/djs/module.f.mjs +12 -19
- package/djs/parser/module.f.d.mts +53 -37
- package/djs/parser/module.f.mjs +278 -131
- package/djs/parser/test.f.d.mts +4 -0
- package/djs/parser/test.f.mjs +186 -70
- package/djs/test.f.mjs +4 -4
- package/djs/tokenizer/module.f.d.mts +6 -10
- package/djs/tokenizer/module.f.mjs +19 -22
- package/djs/tokenizer/test.f.mjs +7 -7
- package/doc/LANGUAGE.md +17 -16
- package/doc/README.md +14 -50
- package/fsc/README.md +0 -3
- package/fsc/module.f.d.mts +4 -9
- package/fsc/module.f.mjs +17 -24
- package/fsc/test.f.mjs +3 -3
- package/fsm/README.md +1 -1
- package/fsm/module.f.d.mts +13 -20
- package/fsm/module.f.mjs +27 -38
- package/fsm/test.f.mjs +8 -8
- package/html/README.md +24 -0
- package/html/module.f.d.mts +7 -12
- package/html/module.f.mjs +14 -23
- package/html/test.f.mjs +4 -4
- package/issues/01-test-debug.md +3 -0
- package/issues/{publish.md → 05-publish.md} +8 -8
- package/issues/17-djs-extension.md +6 -0
- package/issues/README.md +20 -13
- package/issues/lang/1000-json.md +38 -0
- package/issues/lang/2110-default-export.md +2 -2
- package/issues/lang/2310-undefined.md +1 -1
- package/issues/lang/2330-property-accessor.md +225 -0
- package/issues/lang/2360-built-in.md +54 -47
- package/issues/lang/3240-export.md +44 -0
- package/issues/lang/README.md +64 -22
- package/issues/test.f.d.mts +16 -0
- package/issues/test.f.mjs +57 -0
- package/js/tokenizer/module.f.d.mts +18 -17
- package/js/tokenizer/module.f.mjs +80 -61
- package/js/tokenizer/test.f.mjs +15 -12
- package/json/module.f.d.mts +18 -26
- package/json/module.f.mjs +18 -31
- package/json/parser/module.f.d.mts +9 -13
- package/json/parser/module.f.mjs +9 -14
- package/json/parser/test.f.mjs +7 -7
- package/json/serializer/module.f.d.mts +11 -20
- package/json/serializer/module.f.mjs +14 -29
- package/json/serializer/test.f.mjs +2 -2
- package/json/test.f.mjs +3 -3
- package/json/tokenizer/module.f.d.mts +6 -10
- package/json/tokenizer/module.f.mjs +16 -20
- package/json/tokenizer/test.f.mjs +6 -6
- package/jsr.json +1 -1
- package/nanvm-lib/Cargo.toml +6 -0
- package/nanvm-lib/src/extension.rs +119 -0
- package/nanvm-lib/src/interface.rs +136 -0
- package/nanvm-lib/src/lib.rs +7 -0
- package/nanvm-lib/src/naive.rs +229 -0
- package/nanvm-lib/src/nanenum.rs +230 -0
- package/nanvm-lib/src/nullish.rs +7 -0
- package/nanvm-lib/src/sign.rs +5 -0
- package/nanvm-lib/src/simple.rs +32 -0
- package/nanvm-lib/tests/test.f.d.mts +36 -0
- package/nanvm-lib/tests/test.f.mjs +79 -0
- package/nanvm-lib/tests/test.rs +108 -0
- package/nodejs/version/main.mjs +1 -1
- package/nodejs/version/module.f.d.mts +4 -9
- package/nodejs/version/module.f.mjs +2 -7
- package/nodejs/version/test.f.mjs +3 -3
- package/package.json +1 -1
- package/prime_field/module.f.d.mts +20 -23
- package/prime_field/module.f.mjs +9 -12
- package/prime_field/test.f.mjs +1 -1
- package/secp/module.f.d.mts +27 -28
- package/secp/module.f.mjs +38 -39
- package/secp/test.f.mjs +4 -4
- package/sha2/module.f.d.mts +8 -16
- package/sha2/module.f.mjs +7 -20
- package/sha2/test.f.mjs +4 -4
- package/text/README.md +2 -2
- package/text/ascii/module.f.d.mts +69 -72
- package/text/ascii/module.f.mjs +5 -10
- package/text/ascii/test.f.mjs +3 -3
- package/text/module.f.d.mts +9 -14
- package/text/module.f.mjs +7 -14
- package/text/sgr/module.f.d.mts +7 -9
- package/text/sgr/module.f.mjs +2 -4
- package/text/test.f.mjs +3 -3
- package/text/utf16/module.f.d.mts +8 -15
- package/text/utf16/module.f.mjs +17 -28
- package/text/utf16/test.f.mjs +5 -5
- package/text/utf8/module.f.d.mts +4 -9
- package/text/utf8/module.f.mjs +9 -16
- package/text/utf8/test.f.mjs +4 -4
- package/types/array/module.f.d.mts +14 -24
- package/types/array/module.f.mjs +8 -25
- package/types/array/test.f.mjs +3 -3
- package/types/bigfloat/module.f.d.mts +4 -9
- package/types/bigfloat/module.f.mjs +3 -10
- package/types/bigfloat/test.f.mjs +1 -1
- package/types/bigint/module.f.d.mts +16 -64
- package/types/bigint/module.f.mjs +11 -30
- package/types/bigint/test.f.mjs +1 -1
- package/types/btree/find/module.f.d.mts +20 -26
- package/types/btree/find/module.f.mjs +8 -17
- package/types/btree/find/test.f.mjs +7 -7
- package/types/btree/module.f.d.mts +4 -8
- package/types/btree/module.f.mjs +6 -11
- package/types/btree/remove/module.f.d.mts +7 -12
- package/types/btree/remove/module.f.mjs +10 -17
- package/types/btree/remove/test.f.mjs +5 -5
- package/types/btree/set/module.f.d.mts +3 -7
- package/types/btree/set/module.f.mjs +4 -9
- package/types/btree/set/test.f.mjs +4 -4
- package/types/btree/test.f.mjs +9 -9
- package/types/btree/types/module.f.d.mts +0 -2
- package/types/btree/types/module.f.mjs +0 -2
- package/types/byte_set/module.f.d.mts +16 -29
- package/types/byte_set/module.f.mjs +14 -39
- package/types/byte_set/test.f.mjs +5 -5
- package/types/function/compare/module.f.d.mts +9 -15
- package/types/function/compare/module.f.mjs +3 -12
- package/types/function/compare/test.f.mjs +1 -1
- package/types/function/module.f.d.mts +20 -27
- package/types/function/module.f.mjs +4 -15
- package/types/function/operator/module.f.d.mts +28 -43
- package/types/function/operator/module.f.mjs +14 -41
- package/types/function/test.f.mjs +1 -1
- package/types/list/module.f.d.mts +56 -91
- package/types/list/module.f.mjs +45 -114
- package/types/list/test.f.mjs +10 -10
- package/types/map/module.f.d.mts +15 -24
- package/types/map/module.f.mjs +15 -30
- package/types/map/test.f.mjs +2 -2
- package/types/nibble_set/module.f.d.mts +10 -20
- package/types/nibble_set/module.f.mjs +7 -24
- package/types/nibble_set/test.f.mjs +2 -2
- package/types/nullable/module.f.d.mts +3 -8
- package/types/nullable/module.f.mjs +2 -9
- package/types/nullable/test.f.mjs +1 -1
- package/types/number/module.f.d.mts +7 -13
- package/types/number/module.f.mjs +8 -19
- package/types/number/test.f.mjs +1 -1
- package/types/object/module.f.d.mts +11 -18
- package/types/object/module.f.mjs +9 -20
- package/types/object/test.f.mjs +1 -1
- package/types/range/module.f.d.mts +3 -8
- package/types/range/module.f.mjs +2 -9
- package/types/range/test.f.mjs +1 -1
- package/types/range_map/module.f.d.mts +9 -15
- package/types/range_map/module.f.mjs +9 -18
- package/types/range_map/test.f.mjs +32 -32
- package/types/result/module.d.mts +3 -3
- package/types/result/module.f.d.mts +6 -12
- package/types/result/module.f.mjs +3 -12
- package/types/result/module.mjs +2 -2
- package/types/sorted_list/module.f.d.mts +22 -28
- package/types/sorted_list/module.f.mjs +10 -19
- package/types/sorted_list/test.f.mjs +7 -7
- package/types/sorted_set/module.f.d.mts +6 -12
- package/types/sorted_set/module.f.mjs +7 -16
- package/types/sorted_set/test.f.mjs +7 -7
- package/types/string/module.f.d.mts +8 -14
- package/types/string/module.f.mjs +10 -21
- package/types/string/test.f.mjs +2 -2
- package/types/string_set/module.f.d.mts +8 -16
- package/types/string_set/module.f.mjs +12 -27
- package/types/string_set/test.f.mjs +1 -1
- package/issues/lang/2351-property-accessor.md +0 -44
- package/issues/lang/2352-property-call.md +0 -43
- package/issues/lang/2353-property-at.md +0 -19
- package/issues/test-debug.md +0 -12
- /package/issues/{esm.md → 02-esm.md} +0 -0
- /package/issues/{djs.md → 03-djs.md} +0 -0
- /package/issues/{fs-load.md → 11-fs-load.md} +0 -0
- /package/issues/lang/{2330-grouping.md → 2350-grouping.md} +0 -0
package/commonjs/path/test.f.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import _ from './module.f.mjs'
|
|
2
|
-
import dev from '../../dev/module.f.mjs'
|
|
1
|
+
import * as _ from './module.f.mjs'
|
|
2
|
+
import * as dev from '../../dev/module.f.mjs'
|
|
3
3
|
const { todo } = dev
|
|
4
|
-
import
|
|
5
|
-
import f from '../../types/function/module.f.mjs'
|
|
4
|
+
import * as json from '../../json/module.f.mjs'
|
|
5
|
+
import * as f from '../../types/function/module.f.mjs'
|
|
6
6
|
const { identity } = f
|
|
7
|
-
import
|
|
7
|
+
import * as object from '../../types/object/module.f.mjs'
|
|
8
8
|
const { at } = object
|
|
9
9
|
import * as Package from '../package/module.f.mjs'
|
|
10
10
|
|
|
11
|
-
/** @type {<T>(o:
|
|
11
|
+
/** @type {<T>(o: object.Map<T>) => (s: string) => T|null} */
|
|
12
12
|
const i = o => s => at(s)(o)
|
|
13
13
|
|
|
14
|
-
/** @type {(g:
|
|
14
|
+
/** @type {(g: json.Unknown) => string} */
|
|
15
15
|
const stringify = json.stringify(identity)
|
|
16
16
|
|
|
17
17
|
export default {
|
|
@@ -70,7 +70,7 @@ export default {
|
|
|
70
70
|
},
|
|
71
71
|
},
|
|
72
72
|
9: () => {
|
|
73
|
-
/** @type {
|
|
73
|
+
/** @type {object.Map<Package.Package>} */
|
|
74
74
|
const packages = {
|
|
75
75
|
'': {
|
|
76
76
|
dependency: () => todo(),
|
|
@@ -81,7 +81,7 @@ export default {
|
|
|
81
81
|
if (result !== '{"id":{"package":"","path":["a","c"]},"source":"return \\"a/c\\""}') { throw result }
|
|
82
82
|
},
|
|
83
83
|
10: () => {
|
|
84
|
-
/** @type {
|
|
84
|
+
/** @type {object.Map<Package.Package>} */
|
|
85
85
|
const packages = {
|
|
86
86
|
'': {
|
|
87
87
|
dependency: x => {
|
|
@@ -131,7 +131,7 @@ export default {
|
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
11: () => {
|
|
134
|
-
/** @type {
|
|
134
|
+
/** @type {object.Map<Package.Package>} */
|
|
135
135
|
const packages = {
|
|
136
136
|
'': {
|
|
137
137
|
dependency: x => {
|
|
@@ -158,7 +158,7 @@ export default {
|
|
|
158
158
|
}
|
|
159
159
|
},
|
|
160
160
|
12: () => {
|
|
161
|
-
/** @type {
|
|
161
|
+
/** @type {object.Map<Package.Package>} */
|
|
162
162
|
const packages = {
|
|
163
163
|
'': {
|
|
164
164
|
dependency: x => {
|
package/commonjs/test.mjs
CHANGED
package/dev/module.f.d.mts
CHANGED
package/dev/module.f.mjs
CHANGED
package/dev/module.mjs
CHANGED
|
@@ -86,7 +86,7 @@ export const loadModuleMap = async () => {
|
|
|
86
86
|
const file = `${p}/${name}`
|
|
87
87
|
if (i.isDirectory()) {
|
|
88
88
|
await f(file)
|
|
89
|
-
} else if (name.endsWith('.f.
|
|
89
|
+
} else if (name.endsWith('.f.mjs') || name.endsWith('.f.js')) {
|
|
90
90
|
const source = await import(`../${file}`)
|
|
91
91
|
map.push([file, source.default])
|
|
92
92
|
}
|
package/dev/test/module.f.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
declare const _default: <T>(input: Input<T>) => readonly [number, T];
|
|
2
|
+
export default _default;
|
|
2
3
|
export type DependencyMap = { readonly [k in string]?: Module; };
|
|
3
4
|
export type Module = {
|
|
4
5
|
readonly default?: unknown;
|
|
@@ -21,6 +22,4 @@ export type TestState = {
|
|
|
21
22
|
readonly fail: number;
|
|
22
23
|
};
|
|
23
24
|
export type FullState<T> = readonly [TestState, T];
|
|
24
|
-
/** @type {<T>(input: Input<T>) => readonly[number, T]} */
|
|
25
|
-
declare const main: <T>(input: Input<T>) => readonly [number, T];
|
|
26
25
|
import * as Result from '../../types/result/module.f.mjs';
|
package/dev/test/module.f.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
|
-
import list from '../../types/list/module.f.mjs'
|
|
2
|
+
import * as list from '../../types/list/module.f.mjs'
|
|
3
3
|
const { fold } = list
|
|
4
|
-
import sgr from '../../text/sgr/module.f.mjs'
|
|
5
|
-
const { reset, fgGreen, fgRed, bold } = sgr
|
|
4
|
+
import * as sgr from '../../text/sgr/module.f.mjs'
|
|
5
|
+
const { reset, fgGreen, fgRed, bold } = sgr.codes
|
|
6
6
|
import * as Result from '../../types/result/module.f.mjs'
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -47,7 +47,7 @@ import * as Result from '../../types/result/module.f.mjs'
|
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
/** @type {(s: string) => boolean} */
|
|
50
|
-
const isTest = s => s.endsWith('test.f.
|
|
50
|
+
const isTest = s => s.endsWith('test.f.mjs') || s.endsWith('test.f.js')
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* @typedef {{
|
|
@@ -80,7 +80,7 @@ const timeFormat = a => {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/** @type {<T>(input: Input<T>) => readonly[number, T]} */
|
|
83
|
-
|
|
83
|
+
export default input => {
|
|
84
84
|
let { moduleMap, log, error, measure, tryCatch, env, state } = input
|
|
85
85
|
const isGitHub = env('GITHUB_ACTION') !== void 0
|
|
86
86
|
/** @typedef {input extends Input<infer T> ? T : never} T */
|
|
@@ -146,5 +146,3 @@ const main = input => {
|
|
|
146
146
|
state = log(`${bold}Time: ${timeFormat(ts.time)}${reset}`)(state);
|
|
147
147
|
return [ts.fail !== 0 ? 1 : 0, state]
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
export default main
|
package/djs/module.f.d.mts
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
export
|
|
6
|
-
export type Object = { readonly [k in string]: Unknown; };
|
|
7
|
-
export type Array = readonly Unknown[];
|
|
8
|
-
export type Unknown = Object | boolean | string | number | null | Array | bigint;
|
|
9
|
-
export type Entry = O.Entry<Unknown>;
|
|
10
|
-
export type Entries = (List.List<Entry>);
|
|
11
|
-
export type MapEntries = (entries: Entries) => Entries;
|
|
1
|
+
/** @typedef {O.Entry<Unknown>} Entry*/
|
|
2
|
+
/** @typedef {(list.List<Entry>)} Entries */
|
|
3
|
+
/** @typedef {(entries: Entries) => Entries} MapEntries */
|
|
4
|
+
/** @type {(mapEntries: MapEntries) => (value: Unknown) => list.List<string>} */
|
|
5
|
+
export const serialize: (mapEntries: MapEntries) => (value: Unknown) => list.List<string>;
|
|
12
6
|
/**
|
|
13
7
|
* The standard `JSON.stringify` rules determined by
|
|
14
8
|
* https://262.ecma-international.org/6.0/#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys
|
|
15
9
|
*
|
|
16
10
|
* @type {(mapEntries: MapEntries) => (value: Unknown) => string}
|
|
17
11
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
export const stringify: (mapEntries: MapEntries) => (value: Unknown) => string;
|
|
13
|
+
export type Object = { readonly [k in string]: Unknown; };
|
|
14
|
+
export type Array = readonly Unknown[];
|
|
15
|
+
export type Unknown = Object | boolean | string | number | null | Array | bigint;
|
|
16
|
+
export type Entry = O.Entry<Unknown>;
|
|
17
|
+
export type Entries = (list.List<Entry>);
|
|
18
|
+
export type MapEntries = (entries: Entries) => Entries;
|
|
19
|
+
import * as list from '../types/list/module.f.mjs';
|
|
24
20
|
import * as O from '../types/object/module.f.mjs';
|
|
25
|
-
import * as List from '../types/list/module.f.mjs';
|
package/djs/module.f.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// @ts-self-types="./module.f.d.mts"
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import * as list from '../types/list/module.f.mjs'
|
|
4
4
|
const { flat, map } = list
|
|
5
|
-
import string from '../types/string/module.f.mjs'
|
|
5
|
+
import * as string from '../types/string/module.f.mjs'
|
|
6
6
|
const { concat } = string
|
|
7
7
|
import * as O from '../types/object/module.f.mjs'
|
|
8
|
-
import f from '../types/function/module.f.mjs'
|
|
8
|
+
import * as f from '../types/function/module.f.mjs'
|
|
9
9
|
const { compose, fn } = f
|
|
10
10
|
const { entries } = Object
|
|
11
|
-
import bi from '../types/bigint/module.f.mjs'
|
|
11
|
+
import * as bi from '../types/bigint/module.f.mjs'
|
|
12
12
|
const { serialize: bigintSerialize } = bi
|
|
13
|
-
import j from '../json/serializer/module.f.mjs'
|
|
13
|
+
import * as j from '../json/serializer/module.f.mjs'
|
|
14
14
|
const { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } = j
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -27,26 +27,26 @@ const colon = [':']
|
|
|
27
27
|
|
|
28
28
|
/** @typedef {O.Entry<Unknown>} Entry*/
|
|
29
29
|
|
|
30
|
-
/** @typedef {(
|
|
30
|
+
/** @typedef {(list.List<Entry>)} Entries */
|
|
31
31
|
|
|
32
32
|
/** @typedef {(entries: Entries) => Entries} MapEntries */
|
|
33
33
|
|
|
34
|
-
/** @type {(mapEntries: MapEntries) => (value: Unknown) =>
|
|
35
|
-
const serialize = sort => {
|
|
36
|
-
/** @type {(kv: readonly[string, Unknown]) =>
|
|
34
|
+
/** @type {(mapEntries: MapEntries) => (value: Unknown) => list.List<string>} */
|
|
35
|
+
export const serialize = sort => {
|
|
36
|
+
/** @type {(kv: readonly[string, Unknown]) => list.List<string>} */
|
|
37
37
|
const propertySerialize = ([k, v]) => flat([
|
|
38
38
|
stringSerialize(k),
|
|
39
39
|
colon,
|
|
40
40
|
f(v)
|
|
41
41
|
])
|
|
42
42
|
const mapPropertySerialize = map(propertySerialize)
|
|
43
|
-
/** @type {(object: Object) =>
|
|
43
|
+
/** @type {(object: Object) => list.List<string>} */
|
|
44
44
|
const objectSerialize = fn(entries)
|
|
45
45
|
.then(sort)
|
|
46
46
|
.then(mapPropertySerialize)
|
|
47
47
|
.then(objectWrap)
|
|
48
48
|
.result
|
|
49
|
-
/** @type {(value: Unknown) =>
|
|
49
|
+
/** @type {(value: Unknown) => list.List<string>} */
|
|
50
50
|
const f = value => {
|
|
51
51
|
switch (typeof value) {
|
|
52
52
|
case 'boolean': { return boolSerialize(value) }
|
|
@@ -70,11 +70,4 @@ const serialize = sort => {
|
|
|
70
70
|
*
|
|
71
71
|
* @type {(mapEntries: MapEntries) => (value: Unknown) => string}
|
|
72
72
|
*/
|
|
73
|
-
const stringify = sort => compose(serialize(sort))(concat)
|
|
74
|
-
|
|
75
|
-
export default {
|
|
76
|
-
/** @readonly */
|
|
77
|
-
stringify,
|
|
78
|
-
/** @readonly */
|
|
79
|
-
serialize,
|
|
80
|
-
}
|
|
73
|
+
export const stringify = sort => compose(serialize(sort))(concat)
|
|
@@ -1,40 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export type
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
readonly
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
readonly
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
/** @type {(tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>} */
|
|
2
|
+
export const parse: (tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>;
|
|
3
|
+
export type DjsModule = [readonly string[], readonly DjsConst[]];
|
|
4
|
+
export type DjsConst = boolean | string | number | null | bigint | DjsModuleRef | DjsArray | DjsObject;
|
|
5
|
+
export type DjsModuleRef = ["aref" | "cref", number];
|
|
6
|
+
export type DjsArray = ["array", readonly DjsConst[]];
|
|
7
|
+
export type DjsObject = { readonly [k in string]: DjsConst; };
|
|
8
|
+
export type DjsStackArray = ["array", list.List<DjsConst>];
|
|
9
|
+
export type DjsStackObject = ["object", map.Map<DjsConst>, string];
|
|
10
|
+
export type DjsStackElement = DjsStackArray | DjsStackObject;
|
|
11
|
+
export type DjsStack = list.List<DjsStackElement>;
|
|
12
|
+
export type ParserState = InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState;
|
|
13
|
+
export type ModuleState = {
|
|
14
|
+
readonly refs: map.Map<DjsModuleRef>;
|
|
15
|
+
readonly modules: list.List<string>;
|
|
16
|
+
readonly consts: list.List<DjsConst>;
|
|
17
|
+
};
|
|
18
|
+
export type InitialState = {
|
|
19
|
+
readonly state: "";
|
|
20
|
+
readonly module: ModuleState;
|
|
21
|
+
};
|
|
22
|
+
export type NewLineRequiredState = {
|
|
23
|
+
readonly state: "nl";
|
|
24
|
+
readonly module: ModuleState;
|
|
25
|
+
};
|
|
26
|
+
export type ImportState = {
|
|
27
|
+
readonly state: "import" | "import+name" | "import+from";
|
|
28
|
+
readonly module: ModuleState;
|
|
29
|
+
};
|
|
30
|
+
export type ConstState = {
|
|
31
|
+
readonly state: "const" | "const+name";
|
|
32
|
+
readonly module: ModuleState;
|
|
33
|
+
};
|
|
34
|
+
export type ExportState = {
|
|
35
|
+
readonly state: "export";
|
|
36
|
+
readonly module: ModuleState;
|
|
37
|
+
};
|
|
38
|
+
export type ParseValueState = {
|
|
39
|
+
readonly state: "constValue" | "exportValue";
|
|
40
|
+
readonly module: ModuleState;
|
|
41
|
+
readonly valueState: "" | "[" | "[v" | "[," | "{" | "{k" | "{:" | "{v" | "{,";
|
|
42
|
+
readonly top: DjsStackElement | null;
|
|
43
|
+
readonly stack: DjsStack;
|
|
44
|
+
};
|
|
45
|
+
export type ResultState = {
|
|
46
|
+
readonly state: "result";
|
|
47
|
+
readonly module: ModuleState;
|
|
48
|
+
};
|
|
49
|
+
export type ErrorState = {
|
|
50
|
+
readonly state: "error";
|
|
31
51
|
readonly message: string;
|
|
32
52
|
};
|
|
33
|
-
|
|
34
|
-
/** @type {(tokenList: List.List<tokenizerT.DjsToken>) => Result.Result<Djs.Unknown, string>} */
|
|
35
|
-
declare const parse: (tokenList: List.List<tokenizerT.DjsToken>) => Result.Result<Djs.Unknown, string>;
|
|
36
|
-
import * as Map from '../../types/map/module.f.mjs';
|
|
37
|
-
import * as Djs from '../module.f.mjs';
|
|
38
|
-
import * as List from '../../types/list/module.f.mjs';
|
|
53
|
+
import * as list from '../../types/list/module.f.mjs';
|
|
39
54
|
import * as tokenizerT from '../tokenizer/module.f.mjs';
|
|
40
|
-
import * as
|
|
55
|
+
import * as result from '../../types/result/module.f.mjs';
|
|
56
|
+
import * as map from '../../types/map/module.f.mjs';
|