functionalscript 0.1.609 → 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.
Files changed (175) hide show
  1. package/com/cpp/module.f.d.mts +4 -8
  2. package/com/cpp/module.f.mjs +20 -25
  3. package/com/cpp/testlib.f.mjs +3 -4
  4. package/com/cs/module.f.d.mts +4 -8
  5. package/com/cs/module.f.mjs +18 -23
  6. package/com/cs/testlib.f.mjs +3 -5
  7. package/com/rust/module.f.d.mts +3 -7
  8. package/com/rust/module.f.mjs +25 -30
  9. package/com/rust/testlib.f.mjs +3 -5
  10. package/com/test/build.f.d.mts +2 -2
  11. package/com/test/build.f.mjs +2 -2
  12. package/com/test/build.mjs +4 -4
  13. package/com/types/module.f.d.mts +5 -10
  14. package/com/types/module.f.mjs +5 -12
  15. package/commonjs/build/module.f.d.mts +13 -17
  16. package/commonjs/build/module.f.mjs +23 -28
  17. package/commonjs/build/test.f.mjs +4 -4
  18. package/commonjs/module/function/module.f.d.mts +0 -2
  19. package/commonjs/module/function/module.f.mjs +0 -2
  20. package/commonjs/module/module.f.d.mts +16 -21
  21. package/commonjs/module/module.f.mjs +2 -9
  22. package/commonjs/module.d.mts +1 -5
  23. package/commonjs/module.f.d.mts +0 -2
  24. package/commonjs/module.f.mjs +0 -2
  25. package/commonjs/module.mjs +2 -7
  26. package/commonjs/package/dependencies/module.f.d.mts +3 -7
  27. package/commonjs/package/dependencies/module.f.mjs +5 -10
  28. package/commonjs/package/dependencies/test.f.mjs +1 -1
  29. package/commonjs/package/module.f.d.mts +12 -18
  30. package/commonjs/package/module.f.mjs +6 -13
  31. package/commonjs/package/test.f.mjs +1 -1
  32. package/commonjs/path/module.f.d.mts +25 -32
  33. package/commonjs/path/module.f.mjs +12 -23
  34. package/commonjs/path/test.f.mjs +11 -11
  35. package/commonjs/test.mjs +1 -1
  36. package/dev/module.f.d.mts +1 -4
  37. package/dev/module.f.mjs +1 -4
  38. package/dev/test/module.f.d.mts +2 -3
  39. package/dev/test/module.f.mjs +4 -6
  40. package/djs/module.f.d.mts +13 -18
  41. package/djs/module.f.mjs +12 -19
  42. package/djs/parser/module.f.d.mts +11 -15
  43. package/djs/parser/module.f.mjs +18 -24
  44. package/djs/parser/test.f.mjs +9 -9
  45. package/djs/test.f.mjs +4 -4
  46. package/djs/tokenizer/module.f.d.mts +6 -10
  47. package/djs/tokenizer/module.f.mjs +18 -23
  48. package/djs/tokenizer/test.f.mjs +6 -6
  49. package/fsc/module.f.d.mts +4 -9
  50. package/fsc/module.f.mjs +17 -24
  51. package/fsc/test.f.mjs +3 -3
  52. package/fsm/module.f.d.mts +13 -20
  53. package/fsm/module.f.mjs +27 -38
  54. package/fsm/test.f.mjs +8 -8
  55. package/html/module.f.d.mts +7 -12
  56. package/html/module.f.mjs +14 -23
  57. package/html/test.f.mjs +4 -4
  58. package/js/tokenizer/module.f.d.mts +10 -15
  59. package/js/tokenizer/module.f.mjs +55 -62
  60. package/js/tokenizer/test.f.mjs +6 -6
  61. package/json/module.f.d.mts +18 -26
  62. package/json/module.f.mjs +18 -31
  63. package/json/parser/module.f.d.mts +9 -13
  64. package/json/parser/module.f.mjs +9 -14
  65. package/json/parser/test.f.mjs +7 -7
  66. package/json/serializer/module.f.d.mts +11 -20
  67. package/json/serializer/module.f.mjs +14 -29
  68. package/json/serializer/test.f.mjs +2 -2
  69. package/json/test.f.mjs +3 -3
  70. package/json/tokenizer/module.f.d.mts +6 -10
  71. package/json/tokenizer/module.f.mjs +14 -19
  72. package/json/tokenizer/test.f.mjs +6 -6
  73. package/jsr.json +1 -1
  74. package/nodejs/version/main.mjs +1 -1
  75. package/nodejs/version/module.f.d.mts +4 -9
  76. package/nodejs/version/module.f.mjs +2 -7
  77. package/nodejs/version/test.f.mjs +3 -3
  78. package/package.json +1 -1
  79. package/prime_field/module.f.d.mts +20 -23
  80. package/prime_field/module.f.mjs +9 -12
  81. package/prime_field/test.f.mjs +1 -1
  82. package/secp/module.f.d.mts +27 -28
  83. package/secp/module.f.mjs +38 -39
  84. package/secp/test.f.mjs +4 -4
  85. package/sha2/module.f.d.mts +8 -16
  86. package/sha2/module.f.mjs +7 -20
  87. package/sha2/test.f.mjs +4 -4
  88. package/text/ascii/module.f.d.mts +69 -72
  89. package/text/ascii/module.f.mjs +5 -10
  90. package/text/ascii/test.f.mjs +3 -3
  91. package/text/module.f.d.mts +9 -14
  92. package/text/module.f.mjs +7 -14
  93. package/text/sgr/module.f.d.mts +7 -9
  94. package/text/sgr/module.f.mjs +2 -4
  95. package/text/test.f.mjs +3 -3
  96. package/text/utf16/module.f.d.mts +8 -15
  97. package/text/utf16/module.f.mjs +17 -28
  98. package/text/utf16/test.f.mjs +5 -5
  99. package/text/utf8/module.f.d.mts +4 -9
  100. package/text/utf8/module.f.mjs +9 -16
  101. package/text/utf8/test.f.mjs +4 -4
  102. package/types/array/module.f.d.mts +14 -24
  103. package/types/array/module.f.mjs +8 -25
  104. package/types/array/test.f.mjs +3 -3
  105. package/types/bigfloat/module.f.d.mts +4 -9
  106. package/types/bigfloat/module.f.mjs +3 -10
  107. package/types/bigfloat/test.f.mjs +1 -1
  108. package/types/bigint/module.f.d.mts +16 -64
  109. package/types/bigint/module.f.mjs +11 -30
  110. package/types/bigint/test.f.mjs +1 -1
  111. package/types/btree/find/module.f.d.mts +20 -26
  112. package/types/btree/find/module.f.mjs +8 -17
  113. package/types/btree/find/test.f.mjs +7 -7
  114. package/types/btree/module.f.d.mts +4 -8
  115. package/types/btree/module.f.mjs +6 -11
  116. package/types/btree/remove/module.f.d.mts +7 -12
  117. package/types/btree/remove/module.f.mjs +10 -17
  118. package/types/btree/remove/test.f.mjs +5 -5
  119. package/types/btree/set/module.f.d.mts +3 -7
  120. package/types/btree/set/module.f.mjs +4 -9
  121. package/types/btree/set/test.f.mjs +4 -4
  122. package/types/btree/test.f.mjs +9 -9
  123. package/types/btree/types/module.f.d.mts +0 -2
  124. package/types/btree/types/module.f.mjs +0 -2
  125. package/types/byte_set/module.f.d.mts +16 -29
  126. package/types/byte_set/module.f.mjs +14 -39
  127. package/types/byte_set/test.f.mjs +5 -5
  128. package/types/function/compare/module.f.d.mts +9 -15
  129. package/types/function/compare/module.f.mjs +3 -12
  130. package/types/function/compare/test.f.mjs +1 -1
  131. package/types/function/module.f.d.mts +20 -27
  132. package/types/function/module.f.mjs +4 -15
  133. package/types/function/operator/module.f.d.mts +28 -43
  134. package/types/function/operator/module.f.mjs +14 -41
  135. package/types/function/test.f.mjs +1 -1
  136. package/types/list/module.f.d.mts +56 -91
  137. package/types/list/module.f.mjs +45 -114
  138. package/types/list/test.f.mjs +10 -10
  139. package/types/map/module.f.d.mts +15 -24
  140. package/types/map/module.f.mjs +15 -30
  141. package/types/map/test.f.mjs +2 -2
  142. package/types/nibble_set/module.f.d.mts +10 -20
  143. package/types/nibble_set/module.f.mjs +7 -24
  144. package/types/nibble_set/test.f.mjs +2 -2
  145. package/types/nullable/module.f.d.mts +3 -8
  146. package/types/nullable/module.f.mjs +2 -9
  147. package/types/nullable/test.f.mjs +1 -1
  148. package/types/number/module.f.d.mts +7 -13
  149. package/types/number/module.f.mjs +8 -19
  150. package/types/number/test.f.mjs +1 -1
  151. package/types/object/module.f.d.mts +11 -18
  152. package/types/object/module.f.mjs +9 -20
  153. package/types/object/test.f.mjs +1 -1
  154. package/types/range/module.f.d.mts +3 -8
  155. package/types/range/module.f.mjs +2 -9
  156. package/types/range/test.f.mjs +1 -1
  157. package/types/range_map/module.f.d.mts +9 -15
  158. package/types/range_map/module.f.mjs +9 -18
  159. package/types/range_map/test.f.mjs +32 -32
  160. package/types/result/module.d.mts +3 -3
  161. package/types/result/module.f.d.mts +6 -12
  162. package/types/result/module.f.mjs +3 -12
  163. package/types/result/module.mjs +2 -2
  164. package/types/sorted_list/module.f.d.mts +22 -28
  165. package/types/sorted_list/module.f.mjs +10 -19
  166. package/types/sorted_list/test.f.mjs +7 -7
  167. package/types/sorted_set/module.f.d.mts +6 -12
  168. package/types/sorted_set/module.f.mjs +7 -16
  169. package/types/sorted_set/test.f.mjs +7 -7
  170. package/types/string/module.f.d.mts +8 -14
  171. package/types/string/module.f.mjs +10 -21
  172. package/types/string/test.f.mjs +2 -2
  173. package/types/string_set/module.f.d.mts +8 -16
  174. package/types/string_set/module.f.mjs +12 -27
  175. package/types/string_set/test.f.mjs +1 -1
package/dev/module.f.mjs CHANGED
@@ -1,6 +1,3 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
 
3
- export default {
4
- /** @readonly */
5
- todo: () => { throw 'not implemented' },
6
- }
3
+ export const todo = () => { throw 'not implemented' }
@@ -1,4 +1,5 @@
1
- export default main;
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';
@@ -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
  /**
@@ -80,7 +80,7 @@ const timeFormat = a => {
80
80
  }
81
81
 
82
82
  /** @type {<T>(input: Input<T>) => readonly[number, T]} */
83
- const main = input => {
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
@@ -1,25 +1,20 @@
1
- declare namespace _default {
2
- export { stringify };
3
- export { serialize };
4
- }
5
- export default _default;
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
- declare const stringify: (mapEntries: MapEntries) => (value: Unknown) => string;
19
- /** @typedef {O.Entry<Unknown>} Entry*/
20
- /** @typedef {(List.List<Entry>)} Entries */
21
- /** @typedef {(entries: Entries) => Entries} MapEntries */
22
- /** @type {(mapEntries: MapEntries) => (value: Unknown) => List.List<string>} */
23
- declare const serialize: (mapEntries: MapEntries) => (value: Unknown) => List.List<string>;
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 list, * as List from '../types/list/module.f.mjs'
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 {(List.List<Entry>)} Entries */
30
+ /** @typedef {(list.List<Entry>)} Entries */
31
31
 
32
32
  /** @typedef {(entries: Entries) => Entries} MapEntries */
33
33
 
34
- /** @type {(mapEntries: MapEntries) => (value: Unknown) => List.List<string>} */
35
- const serialize = sort => {
36
- /** @type {(kv: readonly[string, Unknown]) => List.List<string>} */
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) => List.List<string>} */
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) => List.List<string>} */
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,21 +1,19 @@
1
- declare namespace _default {
2
- export { parse };
3
- }
4
- export default _default;
1
+ /** @type {(tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>} */
2
+ export const parse: (tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>;
5
3
  export type DjsModule = [readonly string[], readonly DjsConst[]];
6
4
  export type DjsConst = boolean | string | number | null | bigint | DjsModuleRef | DjsArray | DjsObject;
7
5
  export type DjsModuleRef = ["aref" | "cref", number];
8
6
  export type DjsArray = ["array", readonly DjsConst[]];
9
7
  export type DjsObject = { readonly [k in string]: DjsConst; };
10
- export type DjsStackArray = ["array", List.List<DjsConst>];
11
- export type DjsStackObject = ["object", Map.Map<DjsConst>, string];
8
+ export type DjsStackArray = ["array", list.List<DjsConst>];
9
+ export type DjsStackObject = ["object", map.Map<DjsConst>, string];
12
10
  export type DjsStackElement = DjsStackArray | DjsStackObject;
13
- export type DjsStack = List.List<DjsStackElement>;
11
+ export type DjsStack = list.List<DjsStackElement>;
14
12
  export type ParserState = InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState;
15
13
  export type ModuleState = {
16
- readonly refs: Map.Map<DjsModuleRef>;
17
- readonly modules: List.List<string>;
18
- readonly consts: List.List<DjsConst>;
14
+ readonly refs: map.Map<DjsModuleRef>;
15
+ readonly modules: list.List<string>;
16
+ readonly consts: list.List<DjsConst>;
19
17
  };
20
18
  export type InitialState = {
21
19
  readonly state: "";
@@ -52,9 +50,7 @@ export type ErrorState = {
52
50
  readonly state: "error";
53
51
  readonly message: string;
54
52
  };
55
- /** @type {(tokenList: List.List<tokenizerT.DjsToken>) => Result.Result<DjsModule, string>} */
56
- declare const parse: (tokenList: List.List<tokenizerT.DjsToken>) => Result.Result<DjsModule, string>;
57
- import * as List from '../../types/list/module.f.mjs';
58
- import * as Map from '../../types/map/module.f.mjs';
53
+ import * as list from '../../types/list/module.f.mjs';
59
54
  import * as tokenizerT from '../tokenizer/module.f.mjs';
60
- import * as Result from '../../types/result/module.f.mjs';
55
+ import * as result from '../../types/result/module.f.mjs';
56
+ import * as map from '../../types/map/module.f.mjs';
@@ -1,13 +1,13 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
 
3
- import result, * as Result from '../../types/result/module.f.mjs'
4
- import list, * as List from '../../types/list/module.f.mjs'
3
+ import * as result from '../../types/result/module.f.mjs'
4
+ import * as list from '../../types/list/module.f.mjs'
5
5
  const { fold, first, drop, toArray, map: listMap, length } = list
6
6
  import * as Operator from '../../types/function/operator/module.f.mjs'
7
7
  import * as tokenizerT from '../tokenizer/module.f.mjs'
8
- import map, * as Map from '../../types/map/module.f.mjs'
8
+ import * as map from '../../types/map/module.f.mjs'
9
9
  const { setReplace, at } = map
10
- import o, * as O from '../../types/object/module.f.mjs'
10
+ import * as o from '../../types/object/module.f.mjs'
11
11
  const { fromMap } = o
12
12
 
13
13
  /** @typedef {[readonly string[], readonly DjsConst[]] } DjsModule */
@@ -24,9 +24,9 @@ const { fromMap } = o
24
24
  * }} DjsObject
25
25
  */
26
26
 
27
- /** @typedef {['array', List.List<DjsConst>]} DjsStackArray */
27
+ /** @typedef {['array', list.List<DjsConst>]} DjsStackArray */
28
28
 
29
- /** @typedef {['object', Map.Map<DjsConst>, string]} DjsStackObject */
29
+ /** @typedef {['object', map.Map<DjsConst>, string]} DjsStackObject */
30
30
 
31
31
 
32
32
  /**
@@ -36,15 +36,15 @@ const { fromMap } = o
36
36
  * } DjsStackElement
37
37
  */
38
38
 
39
- /** @typedef {List.List<DjsStackElement>} DjsStack */
39
+ /** @typedef {list.List<DjsStackElement>} DjsStack */
40
40
 
41
41
  /** @typedef {InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState} ParserState */
42
42
 
43
43
  /**
44
44
  * @typedef {{
45
- * readonly refs: Map.Map<DjsModuleRef>
46
- * readonly modules: List.List<string>
47
- * readonly consts: List.List<DjsConst>
45
+ * readonly refs: map.Map<DjsModuleRef>
46
+ * readonly modules: list.List<string>
47
+ * readonly consts: list.List<DjsConst>
48
48
  * }} ModuleState
49
49
  */
50
50
 
@@ -153,7 +153,7 @@ const parseConstOp = token => state => {
153
153
  case 'nl': return state
154
154
  case 'id': {
155
155
  if (map.at(token.value)(state.module.refs) !== null)
156
- return { state: 'error', message: 'duplicate id' }
156
+ return { state: 'error', message: 'duplicate id' }
157
157
  /** @type {DjsModuleRef} */
158
158
  let cref = ['cref', length(state.module.consts)]
159
159
  let refs = map.setReplace(token.value)(cref)(state.module.refs)
@@ -232,7 +232,7 @@ const pushKey = state => key => {
232
232
 
233
233
  /** @type {(state: ParseValueState) => (value: DjsConst) => ParserState} */
234
234
  const pushValue = state => value => {
235
- if (state.top === null) {
235
+ if (state.top === null) {
236
236
  let consts = list.concat(state.module.consts)([value])
237
237
  switch(state.state)
238
238
  {
@@ -262,7 +262,7 @@ const startArray = state => {
262
262
  const endArray = state => {
263
263
  const top = state.top;
264
264
  /** @type {ParseValueState} */
265
- const newState = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
265
+ const newState = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
266
266
  if (top !== null && top[0] === 'array')
267
267
  {
268
268
  /** @type {DjsArray} */
@@ -391,13 +391,13 @@ const foldOp = token => state => {
391
391
  case 'import+from': return parseImportFromOp(token)(state)
392
392
  case 'const': return parseConstOp(token)(state)
393
393
  case 'const+name': return parseConstNameOp(token)(state)
394
- case 'export': return parseExportOp(token)(state)
394
+ case 'export': return parseExportOp(token)(state)
395
395
  case 'result': return { state: 'error', message: 'unexpected token' }
396
396
  case 'error': return { state: 'error', message: state.message }
397
397
  case 'constValue':
398
- case 'exportValue':
398
+ case 'exportValue':
399
399
  {
400
- switch (state.valueState)
400
+ switch (state.valueState)
401
401
  {
402
402
  case '': return parseValueOp(token)(state)
403
403
  case '[': return parseArrayStartOp(token)(state)
@@ -413,8 +413,8 @@ const foldOp = token => state => {
413
413
  }
414
414
  }
415
415
 
416
- /** @type {(tokenList: List.List<tokenizerT.DjsToken>) => Result.Result<DjsModule, string>} */
417
- const parse = tokenList => {
416
+ /** @type {(tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>} */
417
+ export const parse = tokenList => {
418
418
  const state = fold(foldOp)({ state: '', module: { refs: null, modules: null, consts: null }})(tokenList)
419
419
  switch (state.state) {
420
420
  case 'result': return result.ok([ toArray(state.module.modules), toArray(state.module.consts) ])
@@ -422,9 +422,3 @@ const parse = tokenList => {
422
422
  default: return result.error('unexpected end')
423
423
  }
424
424
  }
425
-
426
-
427
- export default {
428
- /** @readonly */
429
- parse
430
- }
@@ -1,13 +1,13 @@
1
- import parser from './module.f.mjs'
2
- import tokenizer, * as tokenizerT from '../tokenizer/module.f.mjs'
3
- import list from '../../types/list/module.f.mjs'
1
+ import * as parser from './module.f.mjs'
2
+ import * as tokenizer from '../tokenizer/module.f.mjs'
3
+ import * as list from '../../types/list/module.f.mjs'
4
4
  const { toArray } = list
5
- import djs from '../module.f.mjs'
6
- import o from '../../types/object/module.f.mjs'
5
+ import * as djs from '../module.f.mjs'
6
+ import * as o from '../../types/object/module.f.mjs'
7
7
  const { sort } = o
8
- import encoding from '../../text/utf16/module.f.mjs'
8
+ import * as encoding from '../../text/utf16/module.f.mjs'
9
9
 
10
- /** @type {(s: string) => readonly tokenizerT.DjsToken[]} */
10
+ /** @type {(s: string) => readonly tokenizer.DjsToken[]} */
11
11
  const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
12
12
 
13
13
  const stringify = djs.stringify(sort)
@@ -72,7 +72,7 @@ export default {
72
72
  const tokenList = tokenizeString('export default [0,[1,[2,[]]],3]')
73
73
  const obj = parser.parse(tokenList)
74
74
  const result = stringify(obj)
75
- if (result !== '["ok",[[],[["array",[0,["array",[1,["array",[2,["array",[]]]]]],3]]]]]') { throw result }
75
+ if (result !== '["ok",[[],[["array",[0,["array",[1,["array",[2,["array",[]]]]]],3]]]]]') { throw result }
76
76
  },
77
77
  () => {
78
78
  const tokenList = tokenizeString('export default {}')
@@ -395,7 +395,7 @@ export default {
395
395
  const obj = parser.parse(tokenList)
396
396
  const result = stringify(obj)
397
397
  if (result !== '["error","unexpected token"]') { throw result }
398
- },
398
+ },
399
399
  () => {
400
400
  const tokenList = tokenizeString('import a from "first/test.f.mjs" \n import a from "second/test.f.mjs" \n export default [b, a, b]')
401
401
  const obj = parser.parse(tokenList)
package/djs/test.f.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import json from '../json/module.f.mjs'
2
- import list from '../types/object/module.f.mjs'
1
+ import * as json from '../json/module.f.mjs'
2
+ import * as list from '../types/object/module.f.mjs'
3
3
  const { sort } = list
4
- import f from '../types/function/module.f.mjs'
4
+ import * as f from '../types/function/module.f.mjs'
5
5
  const { identity } = f
6
- import djs from './module.f.mjs'
6
+ import * as djs from './module.f.mjs'
7
7
 
8
8
  export default {
9
9
  stringify: [
@@ -1,17 +1,13 @@
1
- declare namespace _default {
2
- export { tokenize };
3
- }
4
- export default _default;
1
+ /** @type {(input: list.List<number>) => list.List<DjsToken>} */
2
+ export const tokenize: (input: list.List<number>) => list.List<DjsToken>;
5
3
  export type DjsToken = {
6
4
  readonly kind: "true" | "false" | "null";
7
5
  } | {
8
6
  readonly kind: "{" | "}" | ":" | "," | "[" | "]" | "." | "=";
9
- } | jsTokenizerT.StringToken | jsTokenizerT.NumberToken | jsTokenizerT.ErrorToken | jsTokenizerT.IdToken | jsTokenizerT.BigIntToken | jsTokenizerT.WhitespaceToken | jsTokenizerT.NewLineToken;
7
+ } | jsTokenizer.StringToken | jsTokenizer.NumberToken | jsTokenizer.ErrorToken | jsTokenizer.IdToken | jsTokenizer.BigIntToken | jsTokenizer.WhitespaceToken | jsTokenizer.NewLineToken;
10
8
  export type ScanState = {
11
9
  readonly kind: "def" | "-";
12
10
  };
13
- export type ScanInput = jsTokenizerT.JsToken | null;
14
- /** @type {(input: List.List<number>) => List.List<DjsToken>} */
15
- declare const tokenize: (input: List.List<number>) => List.List<DjsToken>;
16
- import * as jsTokenizerT from '../../js/tokenizer/module.f.mjs';
17
- import * as List from '../../types/list/module.f.mjs';
11
+ export type ScanInput = jsTokenizer.JsToken | null;
12
+ import * as list from '../../types/list/module.f.mjs';
13
+ import * as jsTokenizer from '../../js/tokenizer/module.f.mjs';
@@ -1,23 +1,23 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
 
3
3
  import * as Operator from '../../types/function/operator/module.f.mjs'
4
- import list, * as List from '../../types/list/module.f.mjs'
4
+ import * as list from '../../types/list/module.f.mjs'
5
5
  const { empty, flat, stateScan } = list
6
- import bf from '../../types/bigfloat/module.f.mjs'
6
+ import * as bf from '../../types/bigfloat/module.f.mjs'
7
7
  const { multiply } = bf
8
- import jsTokenizer, * as jsTokenizerT from '../../js/tokenizer/module.f.mjs'
8
+ import * as jsTokenizer from '../../js/tokenizer/module.f.mjs'
9
9
 
10
10
  /**
11
11
  * @typedef {|
12
12
  * {readonly kind: 'true' | 'false' | 'null'} |
13
13
  * {readonly kind: '{' | '}' | ':' | ',' | '[' | ']' | '.' | '=' } |
14
- * jsTokenizerT.StringToken |
15
- * jsTokenizerT.NumberToken |
16
- * jsTokenizerT.ErrorToken |
17
- * jsTokenizerT.IdToken |
18
- * jsTokenizerT.BigIntToken |
19
- * jsTokenizerT.WhitespaceToken |
20
- * jsTokenizerT.NewLineToken
14
+ * jsTokenizer.StringToken |
15
+ * jsTokenizer.NumberToken |
16
+ * jsTokenizer.ErrorToken |
17
+ * jsTokenizer.IdToken |
18
+ * jsTokenizer.BigIntToken |
19
+ * jsTokenizer.WhitespaceToken |
20
+ * jsTokenizer.NewLineToken
21
21
  * } DjsToken
22
22
  */
23
23
 
@@ -29,11 +29,11 @@ import jsTokenizer, * as jsTokenizerT from '../../js/tokenizer/module.f.mjs'
29
29
 
30
30
  /**
31
31
  * @typedef {|
32
- * jsTokenizerT.JsToken | null
32
+ * jsTokenizer.JsToken | null
33
33
  * } ScanInput
34
34
  */
35
35
 
36
- /** @type {(input: jsTokenizerT.JsToken) => List.List<DjsToken>} */
36
+ /** @type {(input: jsTokenizer.JsToken) => list.List<DjsToken>} */
37
37
  const mapToken = input =>
38
38
  {
39
39
  switch(input.kind)
@@ -60,7 +60,7 @@ const mapToken = input =>
60
60
  }
61
61
  }
62
62
 
63
- /** @type {(input: ScanInput) => readonly [List.List<DjsToken>, ScanState]} */
63
+ /** @type {(input: ScanInput) => readonly [list.List<DjsToken>, ScanState]} */
64
64
  const parseDefaultState = input =>
65
65
  {
66
66
  if (input === null) return [empty, { kind: 'def'}]
@@ -71,7 +71,7 @@ const parseDefaultState = input =>
71
71
  }
72
72
  }
73
73
 
74
- /** @type {(input: ScanInput) => readonly [List.List<DjsToken>, ScanState]} */
74
+ /** @type {(input: ScanInput) => readonly [list.List<DjsToken>, ScanState]} */
75
75
  const parseMinusState = input =>
76
76
  {
77
77
  if (input === null) return [[{ kind: 'error', message: 'invalid token' }], { kind: 'def'}]
@@ -84,7 +84,7 @@ const parseMinusState = input =>
84
84
  }
85
85
  }
86
86
 
87
- /** @type {Operator.StateScan<ScanInput, ScanState, List.List<DjsToken>>} */
87
+ /** @type {Operator.StateScan<ScanInput, ScanState, list.List<DjsToken>>} */
88
88
  const scanToken = state => input => {
89
89
  switch(state.kind)
90
90
  {
@@ -93,15 +93,10 @@ const scanToken = state => input => {
93
93
  }
94
94
  }
95
95
 
96
- /** @type {(input: List.List<number>) => List.List<DjsToken>} */
97
- const tokenize = input =>
96
+ /** @type {(input: list.List<number>) => list.List<DjsToken>} */
97
+ export const tokenize = input =>
98
98
  {
99
- /** @type {List.List<ScanInput>} */
99
+ /** @type {list.List<ScanInput>} */
100
100
  const jsTokens = jsTokenizer.tokenize(input)
101
101
  return flat(stateScan(scanToken)({ kind: 'def' })(list.concat(jsTokens)([null])))
102
102
  }
103
-
104
- export default {
105
- /** @readonly */
106
- tokenize
107
- }
@@ -1,12 +1,12 @@
1
- import tokenizer, * as tokenizerT from './module.f.mjs'
2
- import list from '../../types/list/module.f.mjs'
1
+ import * as tokenizer from './module.f.mjs'
2
+ import * as list from '../../types/list/module.f.mjs'
3
3
  const { toArray } = list
4
- import djs from '../module.f.mjs'
5
- import o from '../../types/object/module.f.mjs'
4
+ import * as djs from '../module.f.mjs'
5
+ import * as o from '../../types/object/module.f.mjs'
6
6
  const { sort } = o
7
- import encoding from '../../text/utf16/module.f.mjs'
7
+ import * as encoding from '../../text/utf16/module.f.mjs'
8
8
 
9
- /** @type {(s: string) => readonly tokenizerT.DjsToken[]} */
9
+ /** @type {(s: string) => readonly tokenizer.DjsToken[]} */
10
10
  const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
11
11
 
12
12
  const stringify = djs.stringify(sort)
@@ -1,12 +1,7 @@
1
- declare namespace _default {
2
- export { terminal };
3
- export { init };
4
- }
5
- export default _default;
1
+ export const terminal: -1;
2
+ export const init: ToResult;
6
3
  export type Result = readonly [readonly string[], ToResult];
7
4
  export type ToResult = (codePoint: number) => Result;
8
5
  export type CreateToResult<T> = (state: T) => ToResult;
9
- export type State<T> = RM.RangeMapArray<CreateToResult<T>>;
10
- declare const terminal: -1;
11
- declare const init: ToResult;
12
- import * as RM from '../types/range_map/module.f.mjs';
6
+ export type State<T> = rangeMap.RangeMapArray<CreateToResult<T>>;
7
+ import * as rangeMap from '../types/range_map/module.f.mjs';
package/fsc/module.f.mjs CHANGED
@@ -1,15 +1,15 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import operator from '../types/function/operator/module.f.mjs'
3
- import range_map, * as RM from '../types/range_map/module.f.mjs'
4
- const { merge: rangeMapMerge, fromRange, get } = range_map
5
- import list, * as List from '../types/list/module.f.mjs'
2
+ import * as operator from '../types/function/operator/module.f.mjs'
3
+ import * as rangeMap from '../types/range_map/module.f.mjs'
4
+ const { merge: rangeMapMerge, fromRange, get } = rangeMap
5
+ import * as list from '../types/list/module.f.mjs'
6
6
  const { reduce: listReduce } = list
7
- import ascii from '../text/ascii/module.f.mjs'
7
+ import * as ascii from '../text/ascii/module.f.mjs'
8
8
  const { range: asciiRange } = ascii
9
9
  const { fromCharCode } = String
10
- import f from '../types/function/module.f.mjs'
10
+ import * as f from '../types/function/module.f.mjs'
11
11
  const { fn } = f
12
- import _range, * as Range from '../types/range/module.f.mjs'
12
+ import * as _range from '../types/range/module.f.mjs'
13
13
  const { one } = _range
14
14
  const { toArray, map } = list
15
15
 
@@ -24,7 +24,7 @@ const { toArray, map } = list
24
24
 
25
25
  /**
26
26
  * @template T
27
- * @typedef {RM.RangeMapArray<CreateToResult<T>>} State
27
+ * @typedef {rangeMap.RangeMapArray<CreateToResult<T>>} State
28
28
  */
29
29
 
30
30
  /** @type {ToResult} */
@@ -43,10 +43,10 @@ const union = a => b => {
43
43
  /** @type {readonly never[]} */
44
44
  const empty = []
45
45
 
46
- /** @type {<T>(a: List.List<State<T>>) => State<T>} */
46
+ /** @type {<T>(a: list.List<State<T>>) => State<T>} */
47
47
  const reduce = a => {
48
- /** @typedef {typeof a extends List.List<State<infer T>> ? T : never} T */
49
- /** @type {RM.RangeMerge<CreateToResult<T>>} */
48
+ /** @typedef {typeof a extends list.List<State<infer T>> ? T : never} T */
49
+ /** @type {rangeMap.RangeMerge<CreateToResult<T>>} */
50
50
  const merge = rangeMapMerge({
51
51
  union,
52
52
  equal: operator.strictEqual,
@@ -61,28 +61,28 @@ const range = fn(asciiRange).then(codePointRange).result
61
61
  /** @type {(l: readonly string[]) => <T>(f: CreateToResult<T>) => State<T>} */
62
62
  const rangeSet = l => f => {
63
63
  /** @typedef {typeof f extends CreateToResult<infer T> ? T : never} T */
64
- /** @type {(a: Range.Range) => (f: CreateToResult<T>) => State<T>} */
64
+ /** @type {(a: _range.Range) => (f: CreateToResult<T>) => State<T>} */
65
65
  const codePointRange = fromRange(def)
66
66
  /** @type {(r: string) => State<T>} */
67
67
  const g = r => codePointRange(asciiRange(r))(f)
68
68
  return reduce(map(g)(l))
69
69
  }
70
70
 
71
- /** @type {<T>(a: List.List<State<T>>) => CreateToResult<T>} */
71
+ /** @type {<T>(a: list.List<State<T>>) => CreateToResult<T>} */
72
72
  const create = a => {
73
- /** @typedef {typeof a extends List.List<State<infer T>> ? T : never} T */
73
+ /** @typedef {typeof a extends list.List<State<infer T>> ? T : never} T */
74
74
  const i = reduce(a)
75
75
  /** @type {(v: number) => (i: State<T>) => (v: T) => ToResult} */
76
76
  const x = get(def)
77
77
  return v => c => x(c)(i)(v)(c)
78
78
  }
79
79
 
80
- const terminal = -1
80
+ export const terminal = -1
81
81
 
82
82
  /** @type {() => ToResult} */
83
83
  const toInit = () => () => [[], init]
84
84
 
85
- const init = create([
85
+ export const init = create([
86
86
  codePointRange(one(terminal))(toInit),
87
87
  rangeSet(['\t', ' ', '\n', '\r'])(toInit),
88
88
  range('!')(() => () => [['!'], unexpectedSymbol]),
@@ -114,11 +114,4 @@ const init = create([
114
114
  range('|')(() => () => [['|'], unexpectedSymbol]),
115
115
  range('}')(() => () => [['}'], unexpectedSymbol]),
116
116
  range('~')(() => () => [['~'], unexpectedSymbol]),
117
- ])(void 0)
118
-
119
- export default {
120
- /** @readonly */
121
- terminal,
122
- /** @readonly */
123
- init,
124
- }
117
+ ])(undefined)
package/fsc/test.f.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import _ from './module.f.mjs'
2
- import ascii from '../text/ascii/module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
+ import * as ascii from '../text/ascii/module.f.mjs'
3
3
  const { one } = ascii
4
- import j from '../json/module.f.mjs'
4
+ import * as j from '../json/module.f.mjs'
5
5
  const { stringify } = j
6
6
  const s = stringify(i => i)
7
7