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.
Files changed (222) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/Cargo.lock +4 -0
  3. package/Cargo.toml +4 -2
  4. package/README.md +1 -1
  5. package/com/cpp/module.f.d.mts +4 -8
  6. package/com/cpp/module.f.mjs +20 -25
  7. package/com/cpp/testlib.f.mjs +3 -4
  8. package/com/cs/module.f.d.mts +4 -8
  9. package/com/cs/module.f.mjs +18 -23
  10. package/com/cs/testlib.f.mjs +3 -5
  11. package/com/rust/module.f.d.mts +3 -7
  12. package/com/rust/module.f.mjs +25 -30
  13. package/com/rust/nanocom/src/cobject.rs +1 -1
  14. package/com/rust/testlib.f.mjs +3 -5
  15. package/com/test/build.f.d.mts +2 -2
  16. package/com/test/build.f.mjs +2 -2
  17. package/com/test/build.mjs +4 -4
  18. package/com/test/rust/src/lib.rs +4 -4
  19. package/com/types/module.f.d.mts +5 -10
  20. package/com/types/module.f.mjs +5 -12
  21. package/commonjs/build/module.f.d.mts +13 -17
  22. package/commonjs/build/module.f.mjs +23 -28
  23. package/commonjs/build/test.f.mjs +4 -4
  24. package/commonjs/module/function/module.f.d.mts +0 -2
  25. package/commonjs/module/function/module.f.mjs +0 -2
  26. package/commonjs/module/module.f.d.mts +16 -21
  27. package/commonjs/module/module.f.mjs +2 -9
  28. package/commonjs/module.d.mts +1 -5
  29. package/commonjs/module.f.d.mts +0 -2
  30. package/commonjs/module.f.mjs +0 -2
  31. package/commonjs/module.mjs +2 -7
  32. package/commonjs/package/dependencies/module.f.d.mts +3 -7
  33. package/commonjs/package/dependencies/module.f.mjs +5 -10
  34. package/commonjs/package/dependencies/test.f.mjs +1 -1
  35. package/commonjs/package/module.f.d.mts +12 -18
  36. package/commonjs/package/module.f.mjs +6 -13
  37. package/commonjs/package/test.f.mjs +1 -1
  38. package/commonjs/path/module.f.d.mts +25 -32
  39. package/commonjs/path/module.f.mjs +12 -23
  40. package/commonjs/path/test.f.mjs +11 -11
  41. package/commonjs/test.mjs +1 -1
  42. package/dev/module.f.d.mts +1 -4
  43. package/dev/module.f.mjs +1 -4
  44. package/dev/module.mjs +1 -1
  45. package/dev/test/module.f.d.mts +2 -3
  46. package/dev/test/module.f.mjs +5 -7
  47. package/djs/module.f.d.mts +13 -18
  48. package/djs/module.f.mjs +12 -19
  49. package/djs/parser/module.f.d.mts +53 -37
  50. package/djs/parser/module.f.mjs +278 -131
  51. package/djs/parser/test.f.d.mts +4 -0
  52. package/djs/parser/test.f.mjs +186 -70
  53. package/djs/test.f.mjs +4 -4
  54. package/djs/tokenizer/module.f.d.mts +6 -10
  55. package/djs/tokenizer/module.f.mjs +19 -22
  56. package/djs/tokenizer/test.f.mjs +7 -7
  57. package/doc/LANGUAGE.md +17 -16
  58. package/doc/README.md +14 -50
  59. package/fsc/README.md +0 -3
  60. package/fsc/module.f.d.mts +4 -9
  61. package/fsc/module.f.mjs +17 -24
  62. package/fsc/test.f.mjs +3 -3
  63. package/fsm/README.md +1 -1
  64. package/fsm/module.f.d.mts +13 -20
  65. package/fsm/module.f.mjs +27 -38
  66. package/fsm/test.f.mjs +8 -8
  67. package/html/README.md +24 -0
  68. package/html/module.f.d.mts +7 -12
  69. package/html/module.f.mjs +14 -23
  70. package/html/test.f.mjs +4 -4
  71. package/issues/01-test-debug.md +3 -0
  72. package/issues/{publish.md → 05-publish.md} +8 -8
  73. package/issues/17-djs-extension.md +6 -0
  74. package/issues/README.md +20 -13
  75. package/issues/lang/1000-json.md +38 -0
  76. package/issues/lang/2110-default-export.md +2 -2
  77. package/issues/lang/2310-undefined.md +1 -1
  78. package/issues/lang/2330-property-accessor.md +225 -0
  79. package/issues/lang/2360-built-in.md +54 -47
  80. package/issues/lang/3240-export.md +44 -0
  81. package/issues/lang/README.md +64 -22
  82. package/issues/test.f.d.mts +16 -0
  83. package/issues/test.f.mjs +57 -0
  84. package/js/tokenizer/module.f.d.mts +18 -17
  85. package/js/tokenizer/module.f.mjs +80 -61
  86. package/js/tokenizer/test.f.mjs +15 -12
  87. package/json/module.f.d.mts +18 -26
  88. package/json/module.f.mjs +18 -31
  89. package/json/parser/module.f.d.mts +9 -13
  90. package/json/parser/module.f.mjs +9 -14
  91. package/json/parser/test.f.mjs +7 -7
  92. package/json/serializer/module.f.d.mts +11 -20
  93. package/json/serializer/module.f.mjs +14 -29
  94. package/json/serializer/test.f.mjs +2 -2
  95. package/json/test.f.mjs +3 -3
  96. package/json/tokenizer/module.f.d.mts +6 -10
  97. package/json/tokenizer/module.f.mjs +16 -20
  98. package/json/tokenizer/test.f.mjs +6 -6
  99. package/jsr.json +1 -1
  100. package/nanvm-lib/Cargo.toml +6 -0
  101. package/nanvm-lib/src/extension.rs +119 -0
  102. package/nanvm-lib/src/interface.rs +136 -0
  103. package/nanvm-lib/src/lib.rs +7 -0
  104. package/nanvm-lib/src/naive.rs +229 -0
  105. package/nanvm-lib/src/nanenum.rs +230 -0
  106. package/nanvm-lib/src/nullish.rs +7 -0
  107. package/nanvm-lib/src/sign.rs +5 -0
  108. package/nanvm-lib/src/simple.rs +32 -0
  109. package/nanvm-lib/tests/test.f.d.mts +36 -0
  110. package/nanvm-lib/tests/test.f.mjs +79 -0
  111. package/nanvm-lib/tests/test.rs +108 -0
  112. package/nodejs/version/main.mjs +1 -1
  113. package/nodejs/version/module.f.d.mts +4 -9
  114. package/nodejs/version/module.f.mjs +2 -7
  115. package/nodejs/version/test.f.mjs +3 -3
  116. package/package.json +1 -1
  117. package/prime_field/module.f.d.mts +20 -23
  118. package/prime_field/module.f.mjs +9 -12
  119. package/prime_field/test.f.mjs +1 -1
  120. package/secp/module.f.d.mts +27 -28
  121. package/secp/module.f.mjs +38 -39
  122. package/secp/test.f.mjs +4 -4
  123. package/sha2/module.f.d.mts +8 -16
  124. package/sha2/module.f.mjs +7 -20
  125. package/sha2/test.f.mjs +4 -4
  126. package/text/README.md +2 -2
  127. package/text/ascii/module.f.d.mts +69 -72
  128. package/text/ascii/module.f.mjs +5 -10
  129. package/text/ascii/test.f.mjs +3 -3
  130. package/text/module.f.d.mts +9 -14
  131. package/text/module.f.mjs +7 -14
  132. package/text/sgr/module.f.d.mts +7 -9
  133. package/text/sgr/module.f.mjs +2 -4
  134. package/text/test.f.mjs +3 -3
  135. package/text/utf16/module.f.d.mts +8 -15
  136. package/text/utf16/module.f.mjs +17 -28
  137. package/text/utf16/test.f.mjs +5 -5
  138. package/text/utf8/module.f.d.mts +4 -9
  139. package/text/utf8/module.f.mjs +9 -16
  140. package/text/utf8/test.f.mjs +4 -4
  141. package/types/array/module.f.d.mts +14 -24
  142. package/types/array/module.f.mjs +8 -25
  143. package/types/array/test.f.mjs +3 -3
  144. package/types/bigfloat/module.f.d.mts +4 -9
  145. package/types/bigfloat/module.f.mjs +3 -10
  146. package/types/bigfloat/test.f.mjs +1 -1
  147. package/types/bigint/module.f.d.mts +16 -64
  148. package/types/bigint/module.f.mjs +11 -30
  149. package/types/bigint/test.f.mjs +1 -1
  150. package/types/btree/find/module.f.d.mts +20 -26
  151. package/types/btree/find/module.f.mjs +8 -17
  152. package/types/btree/find/test.f.mjs +7 -7
  153. package/types/btree/module.f.d.mts +4 -8
  154. package/types/btree/module.f.mjs +6 -11
  155. package/types/btree/remove/module.f.d.mts +7 -12
  156. package/types/btree/remove/module.f.mjs +10 -17
  157. package/types/btree/remove/test.f.mjs +5 -5
  158. package/types/btree/set/module.f.d.mts +3 -7
  159. package/types/btree/set/module.f.mjs +4 -9
  160. package/types/btree/set/test.f.mjs +4 -4
  161. package/types/btree/test.f.mjs +9 -9
  162. package/types/btree/types/module.f.d.mts +0 -2
  163. package/types/btree/types/module.f.mjs +0 -2
  164. package/types/byte_set/module.f.d.mts +16 -29
  165. package/types/byte_set/module.f.mjs +14 -39
  166. package/types/byte_set/test.f.mjs +5 -5
  167. package/types/function/compare/module.f.d.mts +9 -15
  168. package/types/function/compare/module.f.mjs +3 -12
  169. package/types/function/compare/test.f.mjs +1 -1
  170. package/types/function/module.f.d.mts +20 -27
  171. package/types/function/module.f.mjs +4 -15
  172. package/types/function/operator/module.f.d.mts +28 -43
  173. package/types/function/operator/module.f.mjs +14 -41
  174. package/types/function/test.f.mjs +1 -1
  175. package/types/list/module.f.d.mts +56 -91
  176. package/types/list/module.f.mjs +45 -114
  177. package/types/list/test.f.mjs +10 -10
  178. package/types/map/module.f.d.mts +15 -24
  179. package/types/map/module.f.mjs +15 -30
  180. package/types/map/test.f.mjs +2 -2
  181. package/types/nibble_set/module.f.d.mts +10 -20
  182. package/types/nibble_set/module.f.mjs +7 -24
  183. package/types/nibble_set/test.f.mjs +2 -2
  184. package/types/nullable/module.f.d.mts +3 -8
  185. package/types/nullable/module.f.mjs +2 -9
  186. package/types/nullable/test.f.mjs +1 -1
  187. package/types/number/module.f.d.mts +7 -13
  188. package/types/number/module.f.mjs +8 -19
  189. package/types/number/test.f.mjs +1 -1
  190. package/types/object/module.f.d.mts +11 -18
  191. package/types/object/module.f.mjs +9 -20
  192. package/types/object/test.f.mjs +1 -1
  193. package/types/range/module.f.d.mts +3 -8
  194. package/types/range/module.f.mjs +2 -9
  195. package/types/range/test.f.mjs +1 -1
  196. package/types/range_map/module.f.d.mts +9 -15
  197. package/types/range_map/module.f.mjs +9 -18
  198. package/types/range_map/test.f.mjs +32 -32
  199. package/types/result/module.d.mts +3 -3
  200. package/types/result/module.f.d.mts +6 -12
  201. package/types/result/module.f.mjs +3 -12
  202. package/types/result/module.mjs +2 -2
  203. package/types/sorted_list/module.f.d.mts +22 -28
  204. package/types/sorted_list/module.f.mjs +10 -19
  205. package/types/sorted_list/test.f.mjs +7 -7
  206. package/types/sorted_set/module.f.d.mts +6 -12
  207. package/types/sorted_set/module.f.mjs +7 -16
  208. package/types/sorted_set/test.f.mjs +7 -7
  209. package/types/string/module.f.d.mts +8 -14
  210. package/types/string/module.f.mjs +10 -21
  211. package/types/string/test.f.mjs +2 -2
  212. package/types/string_set/module.f.d.mts +8 -16
  213. package/types/string_set/module.f.mjs +12 -27
  214. package/types/string_set/test.f.mjs +1 -1
  215. package/issues/lang/2351-property-accessor.md +0 -44
  216. package/issues/lang/2352-property-call.md +0 -43
  217. package/issues/lang/2353-property-at.md +0 -19
  218. package/issues/test-debug.md +0 -12
  219. /package/issues/{esm.md → 02-esm.md} +0 -0
  220. /package/issues/{djs.md → 03-djs.md} +0 -0
  221. /package/issues/{fs-load.md → 11-fs-load.md} +0 -0
  222. /package/issues/lang/{2330-grouping.md → 2350-grouping.md} +0 -0
@@ -1,17 +1,17 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
  import * as BtreeTypes from '../btree/types/module.f.mjs'
3
- import btf from '../btree/find/module.f.mjs'
3
+ import * as btf from '../btree/find/module.f.mjs'
4
4
  const { value, find } = btf
5
- import bts from '../btree/set/module.f.mjs'
5
+ import * as bts from '../btree/set/module.f.mjs'
6
6
  const { set } = bts
7
- import btr from '../btree/remove/module.f.mjs'
7
+ import * as btr from '../btree/remove/module.f.mjs'
8
8
  const { remove: btreeRemove } = btr
9
- import bt from '../btree/module.f.mjs'
9
+ import * as bt from '../btree/module.f.mjs'
10
10
  const { values } = bt
11
11
  import * as Compare from '../function/compare/module.f.mjs'
12
- import s from '../string/module.f.mjs'
12
+ import * as s from '../string/module.f.mjs'
13
13
  const { cmp } = s
14
- import list, * as List from '../list/module.f.mjs'
14
+ import * as list from '../list/module.f.mjs'
15
15
  const { fold } = list
16
16
  import * as Operator from '../function/operator/module.f.mjs'
17
17
 
@@ -36,7 +36,7 @@ import * as Operator from '../function/operator/module.f.mjs'
36
36
  const keyCmp = a => ([b]) => cmp(a)(b)
37
37
 
38
38
  /** @type {(name: string) => <T>(map: Map<T>) => T|null} */
39
- const at = name => map => {
39
+ export const at = name => map => {
40
40
  if (map === null) { return null }
41
41
  const result = value(find(keyCmp(name))(map).first)
42
42
  return result === null ? null : result[1]
@@ -47,36 +47,21 @@ const setReduceEntry = reduce => entry =>
47
47
  set(keyCmp(entry[0]))(old => old === null ? entry : [old[0], reduce(old[1])(entry[1])])
48
48
 
49
49
  /** @type {<T>(reduce: Operator.Reduce<T>) => (name: string) => (value: T) => (map: Map<T>) => Map<T>} */
50
- const setReduce = reduce => name => value => setReduceEntry(reduce)([name, value])
50
+ export const setReduce = reduce => name => value => setReduceEntry(reduce)([name, value])
51
51
 
52
52
  /** @type {<T>(a: T) => (b: T) => T} */
53
53
  const replace = () => b => b
54
54
 
55
55
  /** @type {(name: string) => <T>(value: T) => (map: Map<T>) => Map<T>} */
56
- const setReplace = name => value => setReduceEntry(replace)([name, value])
56
+ export const setReplace = name => value => setReduceEntry(replace)([name, value])
57
57
 
58
- /** @type {<T>(map: Map<T>) => List.List<Entry<T>>} */
59
- const entries = values
58
+ /** @type {<T>(map: Map<T>) => list.List<Entry<T>>} */
59
+ export const entries = values
60
60
 
61
- /** @type {<T>(entries: List.List<Entry<T>>) => Map<T>} */
62
- const fromEntries = fold(setReduceEntry(replace))(null)
61
+ /** @type {<T>(entries: list.List<Entry<T>>) => Map<T>} */
62
+ export const fromEntries = fold(setReduceEntry(replace))(null)
63
63
 
64
64
  /** @type {(name: string) => <T>(map: Map<T>) => Map<T>} */
65
- const remove = name => btreeRemove(keyCmp(name))
65
+ export const remove = name => btreeRemove(keyCmp(name))
66
66
 
67
- export default {
68
- /** @readonly */
69
- empty: null,
70
- /** @readonly */
71
- at,
72
- /** @readonly */
73
- setReduce,
74
- /** @readonly */
75
- setReplace,
76
- /** @readonly */
77
- entries,
78
- /** @readonly */
79
- fromEntries,
80
- /** @readonly */
81
- remove,
82
- }
67
+ export const empty = null
@@ -1,6 +1,6 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
  const { at, setReplace, setReduce, empty, entries, remove } = _
3
- import seq from '../list/module.f.mjs'
3
+ import * as seq from '../list/module.f.mjs'
4
4
 
5
5
  export default {
6
6
  main: [
@@ -1,26 +1,16 @@
1
- declare namespace _default {
2
- export { empty };
3
- export { universe };
4
- export { has };
5
- export { complement };
6
- export { set };
7
- export { unset };
8
- export { setRange };
9
- }
10
- export default _default;
11
- export type NibbleSet = number;
12
- export type Nibble = number;
13
1
  /** @typedef {number} NibbleSet */
14
2
  /** @typedef {number} Nibble */
15
- declare const empty: 0;
16
- declare const universe: 65535;
3
+ export const empty: 0;
4
+ export const universe: 65535;
17
5
  /** @type {(n: Nibble) => (s: NibbleSet) => boolean} */
18
- declare const has: (n: Nibble) => (s: NibbleSet) => boolean;
19
- /** @type {(n: NibbleSet) => NibbleSet} */
20
- declare const complement: (n: NibbleSet) => NibbleSet;
6
+ export const has: (n: Nibble) => (s: NibbleSet) => boolean;
21
7
  /** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
22
- declare const set: (n: Nibble) => (s: NibbleSet) => NibbleSet;
8
+ export const set: (n: Nibble) => (s: NibbleSet) => NibbleSet;
9
+ /** @type {(n: NibbleSet) => NibbleSet} */
10
+ export const complement: (n: NibbleSet) => NibbleSet;
23
11
  /** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
24
- declare const unset: (n: Nibble) => (s: NibbleSet) => NibbleSet;
12
+ export const unset: (n: Nibble) => (s: NibbleSet) => NibbleSet;
25
13
  /** @type {(r: readonly[number, number]) => (s: NibbleSet) => NibbleSet} */
26
- declare const setRange: (r: readonly [number, number]) => (s: NibbleSet) => NibbleSet;
14
+ export const setRange: (r: readonly [number, number]) => (s: NibbleSet) => NibbleSet;
15
+ export type NibbleSet = number;
16
+ export type Nibble = number;
@@ -2,44 +2,27 @@
2
2
  /** @typedef {number} NibbleSet */
3
3
  /** @typedef {number} Nibble */
4
4
 
5
- const empty = 0
5
+ export const empty = 0
6
6
 
7
- const universe = 0xFFFF
7
+ export const universe = 0xFFFF
8
8
 
9
9
  /** @type {(n: Nibble) => NibbleSet} */
10
10
  const one = n => 1 << n
11
11
 
12
12
  /** @type {(n: Nibble) => (s: NibbleSet) => boolean} */
13
- const has = n => s => ((s >> n) & 1) === 1
13
+ export const has = n => s => ((s >> n) & 1) === 1
14
14
 
15
15
  /** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
16
- const set = n => s => s | one(n)
16
+ export const set = n => s => s | one(n)
17
17
 
18
18
  /** @type {(n: NibbleSet) => NibbleSet} */
19
- const complement = s => universe ^ s
19
+ export const complement = s => universe ^ s
20
20
 
21
21
  /** @type {(n: Nibble) => (s: NibbleSet) => NibbleSet} */
22
- const unset = n => s => s & complement(one(n))
22
+ export const unset = n => s => s & complement(one(n))
23
23
 
24
24
  /** @type {(r: readonly[number, number]) => NibbleSet} */
25
25
  const range = ([a, b]) => one(b - a + 1) - 1 << a
26
26
 
27
27
  /** @type {(r: readonly[number, number]) => (s: NibbleSet) => NibbleSet} */
28
- const setRange = r => s => s | range(r)
29
-
30
- export default {
31
- /** @readonly */
32
- empty,
33
- /** @readonly */
34
- universe,
35
- /** @readonly */
36
- has,
37
- /** @readonly */
38
- complement,
39
- /** @readonly */
40
- set,
41
- /** @readonly */
42
- unset,
43
- /** @readonly */
44
- setRange,
45
- }
28
+ export const setRange = r => s => s | range(r)
@@ -1,6 +1,6 @@
1
- import list from '../list/module.f.mjs'
1
+ import * as list from '../list/module.f.mjs'
2
2
  const { every, map, countdown } = list
3
- import _ from './module.f.mjs'
3
+ import * as _ from './module.f.mjs'
4
4
 
5
5
  export default {
6
6
  has: () => {
@@ -1,14 +1,9 @@
1
- declare namespace _default {
2
- export { map };
3
- export { match };
4
- }
5
- export default _default;
6
- export type Nullable<T> = T | null;
7
1
  /**
8
2
  * @template T
9
3
  * @typedef {T|null} Nullable
10
4
  */
11
5
  /** @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>} */
12
- declare const map: <T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>;
6
+ export const map: <T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>;
13
7
  /** @type {<T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>} */
14
- declare const match: <T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>;
8
+ export const match: <T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>;
9
+ export type Nullable<T> = T | null;
@@ -5,14 +5,7 @@
5
5
  */
6
6
 
7
7
  /** @type {<T, R>(f: (value: T) => R) => (value: Nullable<T>) => Nullable<R>} */
8
- const map = f => value => value === null ? null : f(value)
8
+ export const map = f => value => value === null ? null : f(value)
9
9
 
10
10
  /** @type {<T, R>(f: (_: T) => R) => (none: () => R) => (_: Nullable<T>) => Nullable<R>} */
11
- const match = f => none => value => value === null ? none() : f(value)
12
-
13
- export default {
14
- /** @readonly */
15
- map,
16
- /** @readonly */
17
- match,
18
- }
11
+ export const match = f => none => value => value === null ? none() : f(value)
@@ -1,4 +1,4 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
 
3
3
  export default () => {
4
4
  const optionSq = _.map(v => v * v)
@@ -1,13 +1,7 @@
1
- declare namespace _default {
2
- export { sum };
3
- export { min };
4
- export { max };
5
- export { cmp };
6
- }
7
- export default _default;
8
- declare const sum: (input: import("../list/module.f.mjs").List<number>) => number;
9
- declare const min: (input: import("../list/module.f.mjs").List<number>) => number | null;
10
- declare const max: (input: import("../list/module.f.mjs").List<number>) => number | null;
11
- /** @type {(a: number) => (b: number) => Compare.Sign} */
12
- declare const cmp: (a: number) => (b: number) => Compare.Sign;
13
- import * as Compare from '../function/compare/module.f.mjs';
1
+ export const sum: (input: list.List<number>) => number;
2
+ export const min: (input: list.List<number>) => number | null;
3
+ export const max: (input: list.List<number>) => number | null;
4
+ /** @type {(a: number) => (b: number) => compare.Sign} */
5
+ export const cmp: (a: number) => (b: number) => compare.Sign;
6
+ import * as list from '../list/module.f.mjs';
7
+ import * as compare from '../function/compare/module.f.mjs';
@@ -1,27 +1,16 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import list from '../list/module.f.mjs'
2
+ import * as list from '../list/module.f.mjs'
3
3
  const { reduce } = list
4
- import operator from '../function/operator/module.f.mjs'
4
+ import * as operator from '../function/operator/module.f.mjs'
5
5
  const { addition, min: minOp, max: maxOp } = operator
6
- import compare, * as Compare from '../function/compare/module.f.mjs'
6
+ import * as compare from '../function/compare/module.f.mjs'
7
7
  const { unsafeCmp } = compare
8
8
 
9
- const sum = reduce(addition)(0)
9
+ export const sum = reduce(addition)(0)
10
10
 
11
- const min = reduce(minOp)(null)
11
+ export const min = reduce(minOp)(null)
12
12
 
13
- const max = reduce(maxOp)(null)
13
+ export const max = reduce(maxOp)(null)
14
14
 
15
- /** @type {(a: number) => (b: number) => Compare.Sign} */
16
- const cmp = unsafeCmp
17
-
18
- export default {
19
- /** @readonly */
20
- sum,
21
- /** @readonly */
22
- min,
23
- /** @readonly */
24
- max,
25
- /** @readonly */
26
- cmp,
27
- }
15
+ /** @type {(a: number) => (b: number) => compare.Sign} */
16
+ export const cmp = unsafeCmp
@@ -1,4 +1,4 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
  const { sum, min, max, cmp } = _
3
3
 
4
4
  export default {
@@ -1,12 +1,3 @@
1
- declare namespace _default {
2
- export { at };
3
- export { sort };
4
- export { fromEntries };
5
- export { fromMap };
6
- }
7
- export default _default;
8
- export type Map<T> = { readonly [k in string]: T; };
9
- export type Entry<T> = readonly [string, T];
10
1
  /**
11
2
  * @template T
12
3
  * @typedef {{
@@ -18,12 +9,14 @@ export type Entry<T> = readonly [string, T];
18
9
  * @typedef {readonly[string, T]} Entry
19
10
  */
20
11
  /** @type {(name: string) => <T>(object: Map<T>) => T|null} */
21
- declare const at: (name: string) => <T>(object: Map<T>) => T | null;
22
- /** @type {<T>(e: List.List<Entry<T>>) => List.List<Entry<T>>} */
23
- declare const sort: <T>(e: List.List<Entry<T>>) => List.List<Entry<T>>;
24
- /** @type {<T>(e: List.List<Entry<T>>) => Map<T>} */
25
- declare const fromEntries: <T>(e: List.List<Entry<T>>) => Map<T>;
26
- /** @type {<T>(m: BTMap.Map<T>) => Map<T>} */
27
- declare const fromMap: <T>(m: BTMap.Map<T>) => Map<T>;
28
- import * as List from '../list/module.f.mjs';
29
- import * as BTMap from '../map/module.f.mjs';
12
+ export const at: (name: string) => <T>(object: Map<T>) => T | null;
13
+ /** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
14
+ export const sort: <T>(e: list.List<Entry<T>>) => list.List<Entry<T>>;
15
+ /** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
16
+ export const fromEntries: <T>(e: list.List<Entry<T>>) => Map<T>;
17
+ /** @type {<T>(m: btMap.Map<T>) => Map<T>} */
18
+ export const fromMap: <T>(m: btMap.Map<T>) => Map<T>;
19
+ export type Map<T> = { readonly [k in string]: T; };
20
+ export type Entry<T> = readonly [string, T];
21
+ import * as list from '../list/module.f.mjs';
22
+ import * as btMap from '../map/module.f.mjs';
@@ -1,7 +1,7 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import list, * as List from '../list/module.f.mjs'
2
+ import * as list from '../list/module.f.mjs'
3
3
  const { iterable } = list
4
- import btMap, * as BTMap from '../map/module.f.mjs'
4
+ import * as btMap from '../map/module.f.mjs'
5
5
  const { entries: mapEntries, fromEntries: mapFromEntries } = btMap
6
6
  const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
7
7
 
@@ -18,27 +18,16 @@ const { getOwnPropertyDescriptor, fromEntries: objectFromEntries } = Object
18
18
  */
19
19
 
20
20
  /** @type {(name: string) => <T>(object: Map<T>) => T|null} */
21
- const at = name => object => {
21
+ export const at = name => object => {
22
22
  const r = getOwnPropertyDescriptor(object, name)
23
23
  return r === void 0 ? null : r.value
24
24
  }
25
25
 
26
- /** @type {<T>(e: List.List<Entry<T>>) => List.List<Entry<T>>} */
27
- const sort = e => mapEntries(mapFromEntries(e))
26
+ /** @type {<T>(e: list.List<Entry<T>>) => list.List<Entry<T>>} */
27
+ export const sort = e => mapEntries(mapFromEntries(e))
28
28
 
29
- /** @type {<T>(e: List.List<Entry<T>>) => Map<T>} */
30
- const fromEntries = e => objectFromEntries(iterable(e))
29
+ /** @type {<T>(e: list.List<Entry<T>>) => Map<T>} */
30
+ export const fromEntries = e => objectFromEntries(iterable(e))
31
31
 
32
- /** @type {<T>(m: BTMap.Map<T>) => Map<T>} */
33
- const fromMap = m => fromEntries(mapEntries(m))
34
-
35
- export default {
36
- /** @readonly */
37
- at,
38
- /** @readonly */
39
- sort,
40
- /** @readonly */
41
- fromEntries,
42
- /** @readonly */
43
- fromMap,
44
- }
32
+ /** @type {<T>(m: btMap.Map<T>) => Map<T>} */
33
+ export const fromMap = m => fromEntries(mapEntries(m))
@@ -1,4 +1,4 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
 
3
3
  export default {
4
4
  ctor: () => {
@@ -1,11 +1,6 @@
1
- declare namespace _default {
2
- export { contains };
3
- export { one };
4
- }
5
- export default _default;
6
- export type Range = readonly [number, number];
7
1
  /** @typedef {readonly[number,number]} Range */
8
2
  /** @type {(range: Range) => (i: number) => boolean} */
9
- declare const contains: (range: Range) => (i: number) => boolean;
3
+ export const contains: (range: Range) => (i: number) => boolean;
10
4
  /** @type {(i: number) => Range} */
11
- declare const one: (i: number) => Range;
5
+ export const one: (i: number) => Range;
6
+ export type Range = readonly [number, number];
@@ -2,14 +2,7 @@
2
2
  /** @typedef {readonly[number,number]} Range */
3
3
 
4
4
  /** @type {(range: Range) => (i: number) => boolean} */
5
- const contains = ([b, e]) => i => b <= i && i <= e
5
+ export const contains = ([b, e]) => i => b <= i && i <= e
6
6
 
7
7
  /** @type {(i: number) => Range} */
8
- const one = a => [a, a]
9
-
10
- export default {
11
- /** @readonly */
12
- contains,
13
- /** @readonly */
14
- one,
15
- }
8
+ export const one = a => [a, a]
@@ -1,4 +1,4 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
 
3
3
  export default () => {
4
4
  if (!_.contains([0, 5])(1)) { throw 1 }
@@ -1,11 +1,11 @@
1
- declare namespace _default {
2
- export { merge };
3
- export { get };
4
- export { fromRange };
5
- }
6
- export default _default;
1
+ /** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
2
+ export const merge: <T>(op: Operators<T>) => RangeMerge<T>;
3
+ /** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
4
+ export const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
5
+ /** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
6
+ export const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
7
7
  export type Entry<T> = [T, number];
8
- export type RangeMap<T> = SortedList.SortedList<Entry<T>>;
8
+ export type RangeMap<T> = sortedList.SortedList<Entry<T>>;
9
9
  export type RangeMapArray<T> = readonly Entry<T>[];
10
10
  export type Operators<T> = {
11
11
  readonly union: O.Reduce<T>;
@@ -13,13 +13,7 @@ export type Operators<T> = {
13
13
  };
14
14
  export type RangeState<T> = Option.Nullable<Entry<T>>;
15
15
  export type RangeMerge<T> = O.Reduce<RangeMap<T>>;
16
- /** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
17
- declare const merge: <T>(op: Operators<T>) => RangeMerge<T>;
18
- /** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
19
- declare const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
20
- /** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
21
- declare const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
22
- import * as SortedList from '../sorted_list/module.f.mjs';
16
+ import * as Range from '../range/module.f.mjs';
17
+ import * as sortedList from '../sorted_list/module.f.mjs';
23
18
  import * as O from '../function/operator/module.f.mjs';
24
19
  import * as Option from '../nullable/module.f.mjs';
25
- import * as Range from '../range/module.f.mjs';
@@ -1,10 +1,10 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import sortedList, * as SortedList from '../sorted_list/module.f.mjs'
2
+ import * as sortedList from '../sorted_list/module.f.mjs'
3
3
  const { genericMerge } = sortedList
4
- import list from '../list/module.f.mjs'
4
+ import * as list from '../list/module.f.mjs'
5
5
  const { next } = list
6
6
  import * as Option from '../nullable/module.f.mjs'
7
- import number from '../number/module.f.mjs'
7
+ import * as number from '../number/module.f.mjs'
8
8
  const { cmp } = number
9
9
  import * as O from '../function/operator/module.f.mjs'
10
10
  import * as Range from '../range/module.f.mjs'
@@ -16,7 +16,7 @@ import * as Range from '../range/module.f.mjs'
16
16
 
17
17
  /**
18
18
  * @template T
19
- * @typedef {SortedList.SortedList<Entry<T>>} RangeMap
19
+ * @typedef {sortedList.SortedList<Entry<T>>} RangeMap
20
20
  */
21
21
 
22
22
  /**
@@ -42,7 +42,7 @@ import * as Range from '../range/module.f.mjs'
42
42
  * @typedef {O.Reduce<RangeMap<T>>} RangeMerge
43
43
  */
44
44
 
45
- /** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) => SortedList.ReduceOp<Entry<T>, RangeState<T>>} */
45
+ /** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) => sortedList.ReduceOp<Entry<T>, RangeState<T>>} */
46
46
  const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) => {
47
47
  const sign = cmp(aMax)(bMax)
48
48
  const min = sign === 1 ? bMax : aMax
@@ -51,7 +51,7 @@ const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) =
51
51
  return [newState, sign, [u, min]]
52
52
  }
53
53
 
54
- /** @type {<T>(equal: O.Equal<T>) => SortedList.TailReduce<Entry<T>, RangeState<T>>} */
54
+ /** @type {<T>(equal: O.Equal<T>) => sortedList.TailReduce<Entry<T>, RangeState<T>>} */
55
55
  const tailReduce = equal => state => tail => {
56
56
  if (state === null) { return tail }
57
57
  const tailResult = next(tail)
@@ -61,10 +61,10 @@ const tailReduce = equal => state => tail => {
61
61
  }
62
62
 
63
63
  /** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
64
- const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
64
+ export const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null)
65
65
 
66
66
  /** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
67
- const get = def => value => rm => {
67
+ export const get = def => value => rm => {
68
68
  const len = rm.length
69
69
  let b = 0
70
70
  let e = len - 1
@@ -81,13 +81,4 @@ const get = def => value => rm => {
81
81
  }
82
82
 
83
83
  /** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
84
- const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]
85
-
86
- export default {
87
- /** @readonly */
88
- merge,
89
- /** @readonly */
90
- get,
91
- /** @readonly */
92
- fromRange,
93
- }
84
+ export const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]]