functionalscript 0.2.6 → 0.3.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 (428) hide show
  1. package/.github/workflows/ci.yml +19 -4
  2. package/CHANGELOG.md +5 -0
  3. package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
  4. package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
  5. package/com/cpp/testlib.f.ts +8 -0
  6. package/com/cs/{module.f.mjs → module.f.ts} +47 -38
  7. package/com/cs/{test.f.mjs → test.f.ts} +2 -2
  8. package/com/cs/testlib.f.ts +8 -0
  9. package/com/rust/module.f.ts +287 -0
  10. package/com/rust/{test.f.mjs → test.f.ts} +1 -1
  11. package/com/rust/testlib.f.ts +8 -0
  12. package/com/test/{build.f.mjs → build.f.ts} +47 -45
  13. package/com/test/{build.mjs → build.ts} +7 -6
  14. package/com/types/module.f.ts +62 -0
  15. package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
  16. package/commonjs/build/module.f.ts +100 -0
  17. package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
  18. package/commonjs/module/function/module.f.ts +13 -0
  19. package/commonjs/module/module.f.ts +41 -0
  20. package/commonjs/module.f.ts +7 -0
  21. package/commonjs/{module.mjs → module.ts} +12 -9
  22. package/commonjs/package/dependencies/module.f.ts +22 -0
  23. package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
  24. package/commonjs/package/module.f.ts +31 -0
  25. package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
  26. package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
  27. package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
  28. package/commonjs/{test.mjs → test.ts} +5 -4
  29. package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
  30. package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
  31. package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
  32. package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
  33. package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
  34. package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
  35. package/deno.json +71 -0
  36. package/dev/README.md +8 -0
  37. package/dev/index.ts +3 -0
  38. package/dev/{module.f.mjs → module.f.ts} +0 -2
  39. package/dev/{module.mjs → module.ts} +65 -60
  40. package/dev/test/{module.f.mjs → module.f.ts} +57 -70
  41. package/dev/{test.f.mjs → test.f.ts} +7 -5
  42. package/dev/test.ts +53 -0
  43. package/djs/{module.f.mjs → module.f.ts} +31 -31
  44. package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
  45. package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
  46. package/djs/serializer/module.f.ts +90 -0
  47. package/djs/{test.f.mjs → test.f.ts} +4 -4
  48. package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
  49. package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  50. package/fsc/{module.f.mjs → module.f.ts} +41 -44
  51. package/fsc/{test.f.mjs → test.f.ts} +8 -6
  52. package/fsm/module.f.ts +107 -0
  53. package/fsm/{test.f.mjs → test.f.ts} +10 -9
  54. package/html/module.f.ts +108 -0
  55. package/html/{test.f.mjs → test.f.ts} +10 -7
  56. package/issues/lang/3110-function.md +25 -1
  57. package/issues/{test.f.mjs → test.f.ts} +3 -2
  58. package/js/tokenizer/module.f.ts +882 -0
  59. package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
  60. package/json/module.f.ts +94 -0
  61. package/json/parser/{module.f.mjs → module.f.ts} +113 -109
  62. package/json/parser/{test.f.mjs → test.f.ts} +10 -9
  63. package/json/serializer/module.f.ts +70 -0
  64. package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
  65. package/json/{test.f.mjs → test.f.ts} +3 -3
  66. package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
  67. package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  68. package/nanvm-lib/src/extension.rs +15 -4
  69. package/nanvm-lib/src/interface.rs +7 -10
  70. package/nanvm-lib/src/lib.rs +3 -3
  71. package/nanvm-lib/src/naive.rs +10 -3
  72. package/nanvm-lib/src/nanenum.rs +5 -1
  73. package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
  74. package/nodejs/version/{main.mjs → main.ts} +1 -1
  75. package/nodejs/version/module.f.ts +42 -0
  76. package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
  77. package/package.json +9 -9
  78. package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
  79. package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
  80. package/text/module.f.ts +30 -0
  81. package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
  82. package/text/{test.f.mjs → test.f.ts} +5 -4
  83. package/text/utf16/module.f.ts +108 -0
  84. package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
  85. package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
  86. package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
  87. package/tsconfig.json +4 -1
  88. package/types/array/module.f.ts +89 -0
  89. package/types/array/{test.f.mjs → test.f.ts} +3 -3
  90. package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
  91. package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
  92. package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
  93. package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
  94. package/types/bit_vec/{module.f.mjs → module.f.ts} +16 -37
  95. package/types/bit_vec/{test.f.mjs → test.f.ts} +1 -1
  96. package/types/btree/find/module.f.ts +92 -0
  97. package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
  98. package/types/btree/{module.f.mjs → module.f.ts} +9 -9
  99. package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
  100. package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
  101. package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
  102. package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
  103. package/types/btree/{test.f.mjs → test.f.ts} +34 -26
  104. package/types/btree/types/module.f.ts +27 -0
  105. package/types/byte_set/module.f.ts +70 -0
  106. package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
  107. package/types/function/compare/module.f.ts +26 -0
  108. package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
  109. package/types/function/module.f.ts +43 -0
  110. package/types/function/operator/module.f.ts +63 -0
  111. package/types/function/test.f.ts +20 -0
  112. package/types/list/module.f.ts +345 -0
  113. package/types/list/{test.f.mjs → test.f.ts} +30 -24
  114. package/types/map/module.f.ts +65 -0
  115. package/types/map/{test.f.mjs → test.f.ts} +6 -5
  116. package/types/nibble_set/module.f.ts +34 -0
  117. package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
  118. package/types/nullable/module.f.ts +9 -0
  119. package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
  120. package/types/number/module.f.ts +16 -0
  121. package/types/number/{test.f.mjs → test.f.ts} +7 -5
  122. package/types/object/module.f.ts +30 -0
  123. package/types/object/{test.f.mjs → test.f.ts} +2 -2
  124. package/types/range/module.f.ts +10 -0
  125. package/types/range/{test.f.mjs → test.f.ts} +1 -1
  126. package/types/range_map/module.f.ts +70 -0
  127. package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
  128. package/types/result/module.f.ts +20 -0
  129. package/types/result/{module.mjs → module.ts} +4 -3
  130. package/types/sorted_list/module.f.ts +83 -0
  131. package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
  132. package/types/sorted_set/module.f.ts +36 -0
  133. package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
  134. package/types/string/module.f.ts +24 -0
  135. package/types/string/{test.f.mjs → test.f.ts} +2 -2
  136. package/types/string_set/module.f.ts +37 -0
  137. package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
  138. package/com/cpp/testlib.f.mjs +0 -8
  139. package/com/cs/testlib.f.mjs +0 -8
  140. package/com/rust/module.f.mjs +0 -272
  141. package/com/rust/testlib.f.mjs +0 -8
  142. package/com/types/module.f.mjs +0 -67
  143. package/commonjs/build/module.f.mjs +0 -100
  144. package/commonjs/module/function/module.f.mjs +0 -21
  145. package/commonjs/module/module.f.mjs +0 -53
  146. package/commonjs/module.f.mjs +0 -11
  147. package/commonjs/package/dependencies/module.f.mjs +0 -22
  148. package/commonjs/package/module.f.mjs +0 -36
  149. package/dev/index.mjs +0 -3
  150. package/dev/test.mjs +0 -60
  151. package/fsm/module.f.mjs +0 -99
  152. package/html/module.f.mjs +0 -102
  153. package/js/tokenizer/module.f.mjs +0 -872
  154. package/json/module.f.mjs +0 -89
  155. package/json/serializer/module.f.mjs +0 -87
  156. package/jsr.json +0 -66
  157. package/nodejs/version/module.f.mjs +0 -47
  158. package/out/com/cpp/module.f.d.mts +0 -7
  159. package/out/com/cpp/module.f.mjs +0 -130
  160. package/out/com/cpp/test.f.d.mts +0 -2
  161. package/out/com/cpp/test.f.mjs +0 -40
  162. package/out/com/cpp/testlib.f.d.mts +0 -2
  163. package/out/com/cpp/testlib.f.mjs +0 -7
  164. package/out/com/cs/module.f.d.mts +0 -7
  165. package/out/com/cs/module.f.mjs +0 -104
  166. package/out/com/cs/test.f.d.mts +0 -2
  167. package/out/com/cs/test.f.mjs +0 -43
  168. package/out/com/cs/testlib.f.d.mts +0 -2
  169. package/out/com/cs/testlib.f.mjs +0 -7
  170. package/out/com/rust/module.f.d.mts +0 -23
  171. package/out/com/rust/module.f.mjs +0 -224
  172. package/out/com/rust/test.f.d.mts +0 -2
  173. package/out/com/rust/test.f.mjs +0 -123
  174. package/out/com/rust/testlib.f.d.mts +0 -2
  175. package/out/com/rust/testlib.f.mjs +0 -7
  176. package/out/com/test/build.d.mts +0 -1
  177. package/out/com/test/build.f.d.mts +0 -26
  178. package/out/com/test/build.f.mjs +0 -98
  179. package/out/com/test/build.mjs +0 -40
  180. package/out/com/types/module.f.d.mts +0 -23
  181. package/out/com/types/module.f.mjs +0 -51
  182. package/out/com/types/testlib.f.d.mts +0 -44
  183. package/out/com/types/testlib.f.mjs +0 -30
  184. package/out/commonjs/build/module.f.d.mts +0 -20
  185. package/out/commonjs/build/module.f.mjs +0 -107
  186. package/out/commonjs/build/test.f.d.mts +0 -3
  187. package/out/commonjs/build/test.f.mjs +0 -102
  188. package/out/commonjs/module/function/module.f.d.mts +0 -5
  189. package/out/commonjs/module/function/module.f.mjs +0 -15
  190. package/out/commonjs/module/module.f.d.mts +0 -52
  191. package/out/commonjs/module/module.f.mjs +0 -48
  192. package/out/commonjs/module.d.mts +0 -3
  193. package/out/commonjs/module.f.d.mts +0 -2
  194. package/out/commonjs/module.f.mjs +0 -10
  195. package/out/commonjs/module.mjs +0 -26
  196. package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
  197. package/out/commonjs/package/dependencies/module.f.mjs +0 -21
  198. package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
  199. package/out/commonjs/package/dependencies/test.f.mjs +0 -15
  200. package/out/commonjs/package/module.f.d.mts +0 -21
  201. package/out/commonjs/package/module.f.mjs +0 -40
  202. package/out/commonjs/package/test.f.d.mts +0 -2
  203. package/out/commonjs/package/test.f.mjs +0 -27
  204. package/out/commonjs/path/module.f.d.mts +0 -60
  205. package/out/commonjs/path/module.f.mjs +0 -171
  206. package/out/commonjs/path/test.f.d.mts +0 -25
  207. package/out/commonjs/path/test.f.mjs +0 -231
  208. package/out/commonjs/test.d.mts +0 -8
  209. package/out/commonjs/test.mjs +0 -87
  210. package/out/crypto/prime_field/module.f.d.mts +0 -67
  211. package/out/crypto/prime_field/module.f.mjs +0 -110
  212. package/out/crypto/prime_field/test.f.d.mts +0 -13
  213. package/out/crypto/prime_field/test.f.mjs +0 -152
  214. package/out/crypto/secp/module.f.d.mts +0 -110
  215. package/out/crypto/secp/module.f.mjs +0 -173
  216. package/out/crypto/secp/test.f.d.mts +0 -5
  217. package/out/crypto/secp/test.f.mjs +0 -78
  218. package/out/crypto/sha2/module.f.d.mts +0 -15
  219. package/out/crypto/sha2/module.f.mjs +0 -172
  220. package/out/crypto/sha2/test.f.d.mts +0 -10
  221. package/out/crypto/sha2/test.f.mjs +0 -86
  222. package/out/dev/index.d.mts +0 -1
  223. package/out/dev/index.mjs +0 -2
  224. package/out/dev/module.d.mts +0 -26
  225. package/out/dev/module.f.d.mts +0 -1
  226. package/out/dev/module.f.mjs +0 -2
  227. package/out/dev/module.mjs +0 -167
  228. package/out/dev/test/module.f.d.mts +0 -25
  229. package/out/dev/test/module.f.mjs +0 -134
  230. package/out/dev/test.d.mts +0 -3
  231. package/out/dev/test.f.d.mts +0 -9
  232. package/out/dev/test.f.mjs +0 -58
  233. package/out/dev/test.mjs +0 -52
  234. package/out/djs/module.f.d.mts +0 -20
  235. package/out/djs/module.f.mjs +0 -79
  236. package/out/djs/parser/module.f.d.mts +0 -56
  237. package/out/djs/parser/module.f.mjs +0 -448
  238. package/out/djs/parser/test.f.d.mts +0 -13
  239. package/out/djs/parser/test.f.mjs +0 -569
  240. package/out/djs/test.f.d.mts +0 -12
  241. package/out/djs/test.f.mjs +0 -84
  242. package/out/djs/tokenizer/module.f.d.mts +0 -13
  243. package/out/djs/tokenizer/module.f.mjs +0 -91
  244. package/out/djs/tokenizer/test.f.d.mts +0 -7
  245. package/out/djs/tokenizer/test.f.mjs +0 -530
  246. package/out/fsc/module.f.d.mts +0 -7
  247. package/out/fsc/module.f.mjs +0 -105
  248. package/out/fsc/test.f.d.mts +0 -4
  249. package/out/fsc/test.f.mjs +0 -19
  250. package/out/fsm/module.f.d.mts +0 -14
  251. package/out/fsm/module.f.mjs +0 -80
  252. package/out/fsm/test.f.d.mts +0 -5
  253. package/out/fsm/test.f.mjs +0 -138
  254. package/out/html/module.f.d.mts +0 -17
  255. package/out/html/module.f.mjs +0 -80
  256. package/out/html/test.f.d.mts +0 -10
  257. package/out/html/test.f.mjs +0 -45
  258. package/out/issues/test.f.d.mts +0 -16
  259. package/out/issues/test.f.mjs +0 -66
  260. package/out/js/tokenizer/module.f.d.mts +0 -163
  261. package/out/js/tokenizer/module.f.mjs +0 -729
  262. package/out/js/tokenizer/test.f.d.mts +0 -9
  263. package/out/js/tokenizer/test.f.mjs +0 -906
  264. package/out/json/module.f.d.mts +0 -33
  265. package/out/json/module.f.mjs +0 -89
  266. package/out/json/parser/module.f.d.mts +0 -32
  267. package/out/json/parser/module.f.mjs +0 -224
  268. package/out/json/parser/test.f.d.mts +0 -5
  269. package/out/json/parser/test.f.mjs +0 -329
  270. package/out/json/serializer/module.f.d.mts +0 -36
  271. package/out/json/serializer/module.f.mjs +0 -67
  272. package/out/json/serializer/test.f.d.mts +0 -8
  273. package/out/json/serializer/test.f.mjs +0 -87
  274. package/out/json/test.f.d.mts +0 -8
  275. package/out/json/test.f.mjs +0 -61
  276. package/out/json/tokenizer/module.f.d.mts +0 -13
  277. package/out/json/tokenizer/module.f.mjs +0 -78
  278. package/out/json/tokenizer/test.f.d.mts +0 -6
  279. package/out/json/tokenizer/test.f.mjs +0 -420
  280. package/out/nanvm-lib/tests/test.f.d.mts +0 -36
  281. package/out/nanvm-lib/tests/test.f.mjs +0 -87
  282. package/out/nodejs/version/main.d.mts +0 -1
  283. package/out/nodejs/version/main.mjs +0 -3
  284. package/out/nodejs/version/module.f.d.mts +0 -12
  285. package/out/nodejs/version/module.f.mjs +0 -34
  286. package/out/nodejs/version/test.f.d.mts +0 -2
  287. package/out/nodejs/version/test.f.mjs +0 -97
  288. package/out/text/ascii/module.f.d.mts +0 -70
  289. package/out/text/ascii/module.f.mjs +0 -154
  290. package/out/text/ascii/test.f.d.mts +0 -4
  291. package/out/text/ascii/test.f.mjs +0 -14
  292. package/out/text/module.f.d.mts +0 -13
  293. package/out/text/module.f.mjs +0 -19
  294. package/out/text/sgr/module.f.d.mts +0 -12
  295. package/out/text/sgr/module.f.mjs +0 -17
  296. package/out/text/test.f.d.mts +0 -2
  297. package/out/text/test.f.mjs +0 -19
  298. package/out/text/utf16/module.f.d.mts +0 -12
  299. package/out/text/utf16/module.f.mjs +0 -86
  300. package/out/text/utf16/test.f.d.mts +0 -6
  301. package/out/text/utf16/test.f.mjs +0 -145
  302. package/out/text/utf8/module.f.d.mts +0 -10
  303. package/out/text/utf8/module.f.mjs +0 -126
  304. package/out/text/utf8/test.f.d.mts +0 -6
  305. package/out/text/utf8/test.f.mjs +0 -175
  306. package/out/types/array/module.f.d.mts +0 -31
  307. package/out/types/array/module.f.mjs +0 -95
  308. package/out/types/array/test.f.d.mts +0 -10
  309. package/out/types/array/test.f.mjs +0 -116
  310. package/out/types/bigfloat/module.f.d.mts +0 -6
  311. package/out/types/bigfloat/module.f.mjs +0 -77
  312. package/out/types/bigfloat/test.f.d.mts +0 -6
  313. package/out/types/bigfloat/test.f.mjs +0 -349
  314. package/out/types/bigint/module.f.d.mts +0 -29
  315. package/out/types/bigint/module.f.mjs +0 -114
  316. package/out/types/bigint/test.f.d.mts +0 -16
  317. package/out/types/bigint/test.f.mjs +0 -199
  318. package/out/types/bit_vec/module.f.d.mts +0 -158
  319. package/out/types/bit_vec/module.f.mjs +0 -194
  320. package/out/types/bit_vec/test.f.d.mts +0 -23
  321. package/out/types/bit_vec/test.f.mjs +0 -210
  322. package/out/types/btree/find/module.f.d.mts +0 -36
  323. package/out/types/btree/find/module.f.mjs +0 -137
  324. package/out/types/btree/find/test.f.d.mts +0 -2
  325. package/out/types/btree/find/test.f.mjs +0 -156
  326. package/out/types/btree/module.f.d.mts +0 -5
  327. package/out/types/btree/module.f.mjs +0 -34
  328. package/out/types/btree/remove/module.f.d.mts +0 -14
  329. package/out/types/btree/remove/module.f.mjs +0 -209
  330. package/out/types/btree/remove/test.f.d.mts +0 -7
  331. package/out/types/btree/remove/test.f.mjs +0 -638
  332. package/out/types/btree/set/module.f.d.mts +0 -5
  333. package/out/types/btree/set/module.f.mjs +0 -114
  334. package/out/types/btree/set/test.f.d.mts +0 -2
  335. package/out/types/btree/set/test.f.mjs +0 -390
  336. package/out/types/btree/test.f.d.mts +0 -13
  337. package/out/types/btree/test.f.mjs +0 -83
  338. package/out/types/btree/types/module.f.d.mts +0 -14
  339. package/out/types/btree/types/module.f.mjs +0 -50
  340. package/out/types/byte_set/module.f.d.mts +0 -25
  341. package/out/types/byte_set/module.f.mjs +0 -42
  342. package/out/types/byte_set/test.f.d.mts +0 -13
  343. package/out/types/byte_set/test.f.mjs +0 -123
  344. package/out/types/function/compare/module.f.d.mts +0 -23
  345. package/out/types/function/compare/module.f.mjs +0 -22
  346. package/out/types/function/compare/test.f.d.mts +0 -2
  347. package/out/types/function/compare/test.f.mjs +0 -8
  348. package/out/types/function/module.f.d.mts +0 -51
  349. package/out/types/function/module.f.mjs +0 -44
  350. package/out/types/function/operator/module.f.d.mts +0 -60
  351. package/out/types/function/operator/module.f.mjs +0 -60
  352. package/out/types/function/test.f.d.mts +0 -2
  353. package/out/types/function/test.f.mjs +0 -15
  354. package/out/types/list/module.f.d.mts +0 -82
  355. package/out/types/list/module.f.mjs +0 -269
  356. package/out/types/list/test.f.d.mts +0 -38
  357. package/out/types/list/test.f.mjs +0 -401
  358. package/out/types/map/module.f.d.mts +0 -21
  359. package/out/types/map/module.f.mjs +0 -54
  360. package/out/types/map/test.f.d.mts +0 -5
  361. package/out/types/map/test.f.mjs +0 -115
  362. package/out/types/nibble_set/module.f.d.mts +0 -16
  363. package/out/types/nibble_set/module.f.mjs +0 -19
  364. package/out/types/nibble_set/test.f.d.mts +0 -13
  365. package/out/types/nibble_set/test.f.mjs +0 -90
  366. package/out/types/nullable/module.f.d.mts +0 -9
  367. package/out/types/nullable/module.f.mjs +0 -9
  368. package/out/types/nullable/test.f.d.mts +0 -2
  369. package/out/types/nullable/test.f.mjs +0 -12
  370. package/out/types/number/module.f.d.mts +0 -7
  371. package/out/types/number/module.f.mjs +0 -12
  372. package/out/types/number/test.f.d.mts +0 -11
  373. package/out/types/number/test.f.mjs +0 -126
  374. package/out/types/object/module.f.d.mts +0 -22
  375. package/out/types/object/module.f.mjs +0 -27
  376. package/out/types/object/test.f.d.mts +0 -5
  377. package/out/types/object/test.f.mjs +0 -17
  378. package/out/types/range/module.f.d.mts +0 -6
  379. package/out/types/range/module.f.mjs +0 -6
  380. package/out/types/range/test.f.d.mts +0 -2
  381. package/out/types/range/test.f.mjs +0 -18
  382. package/out/types/range_map/module.f.d.mts +0 -19
  383. package/out/types/range_map/module.f.mjs +0 -84
  384. package/out/types/range_map/test.f.d.mts +0 -6
  385. package/out/types/range_map/test.f.mjs +0 -201
  386. package/out/types/result/module.d.mts +0 -7
  387. package/out/types/result/module.f.d.mts +0 -22
  388. package/out/types/result/module.f.mjs +0 -25
  389. package/out/types/result/module.mjs +0 -16
  390. package/out/types/sorted_list/module.f.d.mts +0 -53
  391. package/out/types/sorted_list/module.f.mjs +0 -102
  392. package/out/types/sorted_list/test.f.d.mts +0 -5
  393. package/out/types/sorted_list/test.f.mjs +0 -66
  394. package/out/types/sorted_set/module.f.d.mts +0 -19
  395. package/out/types/sorted_set/module.f.mjs +0 -29
  396. package/out/types/sorted_set/test.f.d.mts +0 -6
  397. package/out/types/sorted_set/test.f.mjs +0 -80
  398. package/out/types/string/module.f.d.mts +0 -9
  399. package/out/types/string/module.f.mjs +0 -17
  400. package/out/types/string/test.f.d.mts +0 -15
  401. package/out/types/string/test.f.mjs +0 -58
  402. package/out/types/string_set/module.f.d.mts +0 -13
  403. package/out/types/string_set/module.f.mjs +0 -29
  404. package/out/types/string_set/test.f.d.mts +0 -5
  405. package/out/types/string_set/test.f.mjs +0 -65
  406. package/text/module.f.mjs +0 -27
  407. package/text/utf16/module.f.mjs +0 -96
  408. package/types/array/module.f.mjs +0 -119
  409. package/types/btree/find/module.f.mjs +0 -125
  410. package/types/btree/types/module.f.mjs +0 -64
  411. package/types/byte_set/module.f.mjs +0 -61
  412. package/types/function/compare/module.f.mjs +0 -29
  413. package/types/function/module.f.mjs +0 -50
  414. package/types/function/operator/module.f.mjs +0 -78
  415. package/types/function/test.f.mjs +0 -17
  416. package/types/list/module.f.mjs +0 -320
  417. package/types/map/module.f.mjs +0 -67
  418. package/types/nibble_set/module.f.mjs +0 -28
  419. package/types/nullable/module.f.mjs +0 -11
  420. package/types/number/module.f.mjs +0 -16
  421. package/types/object/module.f.mjs +0 -33
  422. package/types/range/module.f.mjs +0 -8
  423. package/types/range_map/module.f.mjs +0 -84
  424. package/types/result/module.f.mjs +0 -28
  425. package/types/sorted_list/module.f.mjs +0 -107
  426. package/types/sorted_set/module.f.mjs +0 -38
  427. package/types/string/module.f.mjs +0 -22
  428. package/types/string_set/module.f.mjs +0 -36
@@ -1,115 +1,89 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
- import * as result from '../../types/result/module.f.mjs'
4
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as result from '../../types/result/module.f.ts'
2
+ import * as list from '../../types/list/module.f.ts'
5
3
  const { fold, first, drop, toArray, map: listMap, length } = list
6
- import * as Operator from '../../types/function/operator/module.f.mjs'
7
- import * as tokenizerT from '../tokenizer/module.f.mjs'
8
- import * as map from '../../types/map/module.f.mjs'
4
+ import * as Operator from '../../types/function/operator/module.f.ts'
5
+ import * as tokenizerT from '../tokenizer/module.f.ts'
6
+ import * as map from '../../types/map/module.f.ts'
9
7
  const { setReplace, at } = map
10
- import * as o from '../../types/object/module.f.mjs'
8
+ import * as o from '../../types/object/module.f.ts'
11
9
  const { fromMap } = o
12
10
 
13
- /** @typedef {[readonly string[], readonly DjsConst[]] } DjsModule */
14
-
15
- /** @typedef {boolean|string|number|null|bigint|undefined|DjsModuleRef|DjsArray|DjsObject} DjsConst */
16
-
17
- /** @typedef {['aref' | 'cref', number]} DjsModuleRef */
18
-
19
- /** @typedef {['array', readonly DjsConst[]]} DjsArray */
20
-
21
- /**
22
- * @typedef {{
23
- * readonly [k in string]: DjsConst
24
- * }} DjsObject
25
- */
26
-
27
- /** @typedef {['array', list.List<DjsConst>]} DjsStackArray */
28
-
29
- /** @typedef {['object', map.Map<DjsConst>, string]} DjsStackObject */
30
-
31
-
32
- /**
33
- * @typedef {|
34
- * DjsStackArray |
35
- * DjsStackObject
36
- * } DjsStackElement
37
- */
38
-
39
- /** @typedef {list.List<DjsStackElement>} DjsStack */
40
-
41
- /** @typedef {InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState} ParserState */
42
-
43
- /**
44
- * @typedef {{
45
- * readonly refs: map.Map<DjsModuleRef>
46
- * readonly modules: list.List<string>
47
- * readonly consts: list.List<DjsConst>
48
- * }} ModuleState
49
- */
50
-
51
- /**
52
- * @typedef {{
53
- * readonly state: ''
54
- * readonly module: ModuleState
55
- * }} InitialState
56
- */
57
-
58
- /**
59
- * @typedef {{
60
- * readonly state: 'nl'
61
- * readonly module: ModuleState
62
- * }} NewLineRequiredState
63
- */
64
-
65
- /**
66
- * @typedef {{
67
- * readonly state: 'import' | 'import+name' | 'import+from'
68
- * readonly module: ModuleState
69
- * }} ImportState
70
- */
71
-
72
- /**
73
- * @typedef {{
74
- * readonly state: 'const' | 'const+name'
75
- * readonly module: ModuleState
76
- * }} ConstState
77
- */
78
-
79
- /**
80
- * @typedef {{
81
- * readonly state: 'export'
82
- * readonly module: ModuleState
83
- * }} ExportState
84
- */
85
-
86
- /**
87
- * @typedef {{
88
- * readonly state: 'constValue' | 'exportValue'
89
- * readonly module: ModuleState
90
- * readonly valueState: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
91
- * readonly top: DjsStackElement | null
92
- * readonly stack: DjsStack
93
- * }} ParseValueState
94
- */
95
-
96
- /**
97
- * @typedef {{
98
- * readonly state: 'result'
99
- * readonly module: ModuleState
100
- * }} ResultState
101
- */
102
-
103
- /**
104
- * @typedef {{
105
- * readonly state: 'error'
106
- * readonly message: string
107
- * }} ErrorState
108
- */
109
-
110
-
111
- /** @type {(token: tokenizerT.DjsToken) => (state: InitialState) => ParserState}} */
112
- const parseInitialOp = token => state => {
11
+ export type DjsModule = [readonly string[], readonly DjsConst[]]
12
+
13
+ export type DjsConst = boolean|string|number|null|bigint|undefined|DjsModuleRef|DjsArray|DjsObject
14
+
15
+ type DjsModuleRef = ['aref' | 'cref', number]
16
+
17
+ type DjsArray = ['array', readonly DjsConst[]]
18
+
19
+ export type DjsObject = {
20
+ readonly [k in string]: DjsConst
21
+ }
22
+
23
+ type DjsStackArray = ['array', list.List<DjsConst>]
24
+
25
+ type DjsStackObject = ['object', map.Map<DjsConst>, string]
26
+
27
+ type DjsStackElement = |
28
+ DjsStackArray |
29
+ DjsStackObject
30
+
31
+ type DjsStack = list.List<DjsStackElement>
32
+
33
+ type ParserState = InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState
34
+
35
+ type ModuleState = {
36
+ readonly refs: map.Map<DjsModuleRef>
37
+ readonly modules: list.List<string>
38
+ readonly consts: list.List<DjsConst>
39
+ }
40
+
41
+ type InitialState = {
42
+ readonly state: ''
43
+ readonly module: ModuleState
44
+ }
45
+
46
+ type NewLineRequiredState = {
47
+ readonly state: 'nl'
48
+ readonly module: ModuleState
49
+ }
50
+
51
+ type ImportState = {
52
+ readonly state: 'import' | 'import+name' | 'import+from'
53
+ readonly module: ModuleState
54
+ }
55
+
56
+ type ConstState = {
57
+ readonly state: 'const' | 'const+name'
58
+ readonly module: ModuleState
59
+ }
60
+
61
+ type ExportState = {
62
+ readonly state: 'export'
63
+ readonly module: ModuleState
64
+ }
65
+
66
+ type ParseValueState = {
67
+ readonly state: 'constValue' | 'exportValue'
68
+ readonly module: ModuleState
69
+ readonly valueState: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
70
+ readonly top: DjsStackElement | null
71
+ readonly stack: DjsStack
72
+ }
73
+
74
+ type ResultState = {
75
+ readonly state: 'result'
76
+ readonly module: ModuleState
77
+ }
78
+
79
+ type ErrorState = {
80
+ readonly state: 'error'
81
+ readonly message: string
82
+ }
83
+
84
+ const parseInitialOp
85
+ : (token: tokenizerT.DjsToken) => (state: InitialState) => ParserState
86
+ = token => state => {
113
87
  switch (token.kind)
114
88
  {
115
89
  case 'ws':
@@ -127,10 +101,11 @@ const parseInitialOp = token => state => {
127
101
  return { state: 'error', message: 'unexpected token' }
128
102
  }
129
103
 
130
- /** @type {(token: tokenizerT.DjsToken) => (state: NewLineRequiredState) => ParserState}} */
131
- const parseNewLineRequiredOp = token => state => {
104
+ const parseNewLineRequiredOp
105
+ : (token: tokenizerT.DjsToken) => (state: NewLineRequiredState) => ParserState
106
+ = token => state => {
132
107
  switch (token.kind) {
133
- case 'ws':
108
+ case 'ws':
134
109
  case '//':
135
110
  case '/*': return state
136
111
  case 'nl': return { ... state, state: '' }
@@ -138,8 +113,9 @@ const parseNewLineRequiredOp = token => state => {
138
113
  }
139
114
  }
140
115
 
141
- /** @type {(token: tokenizerT.DjsToken) => (state: ExportState) => ParserState}} */
142
- const parseExportOp = token => state => {
116
+ const parseExportOp
117
+ : (token: tokenizerT.DjsToken) => (state: ExportState) => ParserState
118
+ = token => state => {
143
119
  switch (token.kind) {
144
120
  case 'ws':
145
121
  case 'nl':
@@ -152,8 +128,9 @@ const parseExportOp = token => state => {
152
128
  return { state: 'error', message: 'unexpected token' }
153
129
  }
154
130
 
155
- /** @type {(token: tokenizerT.DjsToken) => (state: ResultState) => ParserState}} */
156
- const parseResultOp = token => state => {
131
+ const parseResultOp
132
+ : (token: tokenizerT.DjsToken) => (state: ResultState) => ParserState
133
+ = token => state => {
157
134
  switch (token.kind) {
158
135
  case 'ws':
159
136
  case 'nl':
@@ -163,8 +140,9 @@ const parseResultOp = token => state => {
163
140
  }
164
141
  }
165
142
 
166
- /** @type {(token: tokenizerT.DjsToken) => (state: ConstState) => ParserState}} */
167
- const parseConstOp = token => state => {
143
+ const parseConstOp
144
+ : (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
145
+ = token => state => {
168
146
  switch (token.kind) {
169
147
  case 'ws':
170
148
  case 'nl':
@@ -173,8 +151,9 @@ const parseConstOp = token => state => {
173
151
  case 'id': {
174
152
  if (map.at(token.value)(state.module.refs) !== null)
175
153
  return { state: 'error', message: 'duplicate id' }
176
- /** @type {DjsModuleRef} */
177
- let cref = ['cref', length(state.module.consts)]
154
+ let cref
155
+ : DjsModuleRef
156
+ = ['cref', length(state.module.consts)]
178
157
  let refs = map.setReplace(token.value)(cref)(state.module.refs)
179
158
  return { ... state, state: 'const+name', module: { ...state.module, refs: refs } }
180
159
  }
@@ -182,8 +161,9 @@ const parseConstOp = token => state => {
182
161
  }
183
162
  }
184
163
 
185
- /** @type {(token: tokenizerT.DjsToken) => (state: ConstState) => ParserState}} */
186
- const parseConstNameOp = token => state => {
164
+ const parseConstNameOp
165
+ : (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
166
+ = token => state => {
187
167
  switch (token.kind) {
188
168
  case 'ws':
189
169
  case 'nl':
@@ -194,18 +174,21 @@ const parseConstNameOp = token => state => {
194
174
  }
195
175
  }
196
176
 
197
- /** @type {(token: tokenizerT.DjsToken) => (state: ImportState) => ParserState}} */
198
- const parseImportOp = token => state => {
177
+ const parseImportOp
178
+ : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
179
+ = token => state => {
199
180
  switch (token.kind) {
200
181
  case 'ws':
201
182
  case 'nl':
202
183
  case '//':
203
184
  case '/*': return state
204
185
  case 'id': {
205
- if (map.at(token.value)(state.module.refs) !== null)
186
+ if (map.at(token.value)(state.module.refs) !== null) {
206
187
  return { state: 'error', message: 'duplicate id' }
207
- /** @type {DjsModuleRef} */
208
- let aref = ['aref', length(state.module.modules)]
188
+ }
189
+ let aref
190
+ : DjsModuleRef
191
+ = ['aref', length(state.module.modules)]
209
192
  let refs = map.setReplace(token.value)(aref)(state.module.refs)
210
193
  return { ... state, state: 'import+name', module: { ...state.module, refs: refs } }
211
194
  }
@@ -213,8 +196,9 @@ const parseImportOp = token => state => {
213
196
  }
214
197
  }
215
198
 
216
- /** @type {(token: tokenizerT.DjsToken) => (state: ImportState) => ParserState}} */
217
- const parseImportNameOp = token => state => {
199
+ const parseImportNameOp
200
+ : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
201
+ = token => state => {
218
202
  switch (token.kind) {
219
203
  case 'ws':
220
204
  case 'nl':
@@ -227,8 +211,9 @@ const parseImportNameOp = token => state => {
227
211
  return { state: 'error', message: 'unexpected token' }
228
212
  }
229
213
 
230
- /** @type {(token: tokenizerT.DjsToken) => (state: ImportState) => ParserState}} */
231
- const parseImportFromOp = token => state => {
214
+ const parseImportFromOp
215
+ : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
216
+ = token => state => {
232
217
  switch (token.kind) {
233
218
  case 'ws':
234
219
  case 'nl':
@@ -242,23 +227,28 @@ const parseImportFromOp = token => state => {
242
227
  }
243
228
  }
244
229
 
245
- /** @type {(obj: DjsStackObject) => (key: string) => DjsStackObject} */
246
- const addKeyToObject = obj => key => ([ 'object', obj[1], key])
230
+ const addKeyToObject
231
+ : (obj: DjsStackObject) => (key: string) => DjsStackObject
232
+ = obj => key => ([ 'object', obj[1], key])
247
233
 
248
- /** @type {(obj: DjsStackObject) => (value: DjsConst) => DjsStackObject} */
249
- const addValueToObject = obj => value => ([ 'object', setReplace(obj[2])(value)(obj[1]), '' ])
234
+ const addValueToObject
235
+ : (obj: DjsStackObject) => (value: DjsConst) => DjsStackObject
236
+ = obj => value => ([ 'object', setReplace(obj[2])(value)(obj[1]), '' ])
250
237
 
251
- /** @type {(array: DjsStackArray) => (value: DjsConst) => DjsStackArray} */
252
- const addToArray = array => value => ([ 'array', list.concat(array[1])([value]) ])
238
+ const addToArray
239
+ : (array: DjsStackArray) => (value: DjsConst) => DjsStackArray
240
+ = array => value => ([ 'array', list.concat(array[1])([value]) ])
253
241
 
254
- /** @type {(state: ParseValueState) => (key: string) => ParserState} */
255
- const pushKey = state => key => {
242
+ const pushKey
243
+ : (state: ParseValueState) => (key: string) => ParserState
244
+ = state => key => {
256
245
  if (state.top?.[0] === 'object') { return { ... state, valueState: '{k', top: addKeyToObject(state.top)(key), stack: state.stack } }
257
246
  return { state: 'error', message: 'error' }
258
247
  }
259
248
 
260
- /** @type {(state: ParseValueState) => (value: DjsConst) => ParserState} */
261
- const pushValue = state => value => {
249
+ const pushValue
250
+ : (state: ParseValueState) => (value: DjsConst) => ParserState
251
+ = state => value => {
262
252
  if (state.top === null) {
263
253
  let consts = list.concat(state.module.consts)([value])
264
254
  switch(state.state)
@@ -271,50 +261,59 @@ const pushValue = state => value => {
271
261
  return { ... state, valueState: '{v', top: addValueToObject(state.top)(value), stack: state.stack }
272
262
  }
273
263
 
274
- /** @type {(state: ParseValueState) => (name: string) => ParserState} */
275
- const pushRef = state => name => {
264
+ const pushRef
265
+ : (state: ParseValueState) => (name: string) => ParserState
266
+ = state => name => {
276
267
  const ref = at(name)(state.module.refs)
277
268
  if (ref === null)
278
269
  return { state: 'error', message: 'const not found' }
279
270
  return pushValue(state)(ref)
280
271
  }
281
272
 
282
- /** @type {(state: ParseValueState) => ParserState} */
283
- const startArray = state => {
273
+ const startArray
274
+ : (state: ParseValueState) => ParserState
275
+ = state => {
284
276
  const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
285
277
  return { ... state, valueState: '[', top: ['array', null ], stack: newStack }
286
278
  }
287
279
 
288
- /** @type {(state: ParseValueState) => ParserState} */
289
- const endArray = state => {
280
+ const endArray
281
+ : (state: ParseValueState) => ParserState
282
+ = state => {
290
283
  const top = state.top;
291
- /** @type {ParseValueState} */
292
- const newState = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
284
+ const newState
285
+ : ParseValueState
286
+ = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
293
287
  if (top !== null && top[0] === 'array')
294
288
  {
295
- /** @type {DjsArray} */
296
- const array = ['array', toArray(top[1])];
289
+ const array
290
+ : DjsArray
291
+ = ['array', toArray(top[1])];
297
292
  return pushValue(newState)(array)
298
293
  }
299
294
  return pushValue(newState)(null)
300
295
  }
301
296
 
302
- /** @type {(state: ParseValueState) => ParserState} */
303
- const startObject = state => {
297
+ const startObject
298
+ : (state: ParseValueState) => ParserState
299
+ = state => {
304
300
  const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
305
301
  return { ... state, valueState: '{', top: ['object', null, ''], stack: newStack }
306
302
  }
307
303
 
308
- /** @type {(state: ParseValueState) => ParserState} */
309
- const endObject = state => {
304
+ const endObject
305
+ : (state: ParseValueState) => ParserState
306
+ = state => {
310
307
  const obj = state?.top !== null && state?.top[0] === 'object' ? fromMap(state.top[1]) : null;
311
- /** @type {ParseValueState} */
312
- const newState = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
308
+ const newState
309
+ : ParseValueState
310
+ = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
313
311
  return pushValue(newState)(obj)
314
312
  }
315
313
 
316
- /** @type {(token: tokenizerT.DjsToken) => DjsConst} */
317
- const tokenToValue = token => {
314
+ const tokenToValue
315
+ : (token: tokenizerT.DjsToken) => DjsConst
316
+ = token => {
318
317
  switch (token.kind) {
319
318
  case 'null': return null
320
319
  case 'false': return false
@@ -327,8 +326,9 @@ const tokenToValue = token => {
327
326
  }
328
327
  }
329
328
 
330
- /** @type {(token: tokenizerT.DjsToken) => boolean} */
331
- const isValueToken = token => {
329
+ const isValueToken
330
+ : (token: tokenizerT.DjsToken) => boolean
331
+ = token => {
332
332
  switch (token.kind) {
333
333
  case 'null':
334
334
  case 'false':
@@ -341,8 +341,9 @@ const isValueToken = token => {
341
341
  }
342
342
  }
343
343
 
344
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
345
- const parseValueOp = token => state => {
344
+ const parseValueOp
345
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
346
+ = token => state => {
346
347
  if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
347
348
  switch (token.kind)
348
349
  {
@@ -357,8 +358,9 @@ const parseValueOp = token => state => {
357
358
  }
358
359
  }
359
360
 
360
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
361
- const parseArrayStartOp = token => state => {
361
+ const parseArrayStartOp
362
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
363
+ = token => state => {
362
364
  if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
363
365
  switch (token.kind)
364
366
  {
@@ -374,8 +376,9 @@ const parseArrayStartOp = token => state => {
374
376
  }
375
377
  }
376
378
 
377
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
378
- const parseArrayValueOp = token => state => {
379
+ const parseArrayValueOp
380
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
381
+ = token => state => {
379
382
  switch (token.kind)
380
383
  {
381
384
  case ']': return endArray(state)
@@ -388,11 +391,12 @@ const parseArrayValueOp = token => state => {
388
391
  }
389
392
  }
390
393
 
391
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
392
- const parseObjectStartOp = token => state => {
394
+ const parseObjectStartOp
395
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
396
+ = token => state => {
393
397
  switch (token.kind)
394
398
  {
395
- case 'string': return pushKey(state)(token.value)
399
+ case 'string': return pushKey(state)(token.value)
396
400
  case '}': return endObject(state)
397
401
  case 'ws':
398
402
  case 'nl':
@@ -402,8 +406,9 @@ const parseObjectStartOp = token => state => {
402
406
  }
403
407
  }
404
408
 
405
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
406
- const parseObjectKeyOp = token => state => {
409
+ const parseObjectKeyOp
410
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
411
+ = token => state => {
407
412
  switch (token.kind)
408
413
  {
409
414
  case ':': return { ... state, valueState: '{:', top: state.top, stack: state.stack }
@@ -415,8 +420,9 @@ const parseObjectKeyOp = token => state => {
415
420
  }
416
421
  }
417
422
 
418
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
419
- const parseObjectColonOp = token => state => {
423
+ const parseObjectColonOp
424
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
425
+ = token => state => {
420
426
  if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
421
427
  switch (token.kind)
422
428
  {
@@ -431,8 +437,9 @@ const parseObjectColonOp = token => state => {
431
437
  }
432
438
  }
433
439
 
434
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
435
- const parseObjectNextOp = token => state => {
440
+ const parseObjectNextOp
441
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
442
+ = token => state => {
436
443
  switch (token.kind)
437
444
  {
438
445
  case '}': return endObject(state)
@@ -445,8 +452,9 @@ const parseObjectNextOp = token => state => {
445
452
  }
446
453
  }
447
454
 
448
- /** @type {(token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState}} */
449
- const parseObjectCommaOp = token => state => {
455
+ const parseObjectCommaOp
456
+ : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
457
+ = token => state => {
450
458
  switch (token.kind)
451
459
  {
452
460
  case 'string': return pushKey(state)(token.value)
@@ -458,8 +466,9 @@ const parseObjectCommaOp = token => state => {
458
466
  }
459
467
  }
460
468
 
461
- /** @type {Operator.Fold<tokenizerT.DjsToken, ParserState>} */
462
- const foldOp = token => state => {
469
+ const foldOp
470
+ : Operator.Fold<tokenizerT.DjsToken, ParserState>
471
+ = token => state => {
463
472
  switch (state.state) {
464
473
  case '': return parseInitialOp(token)(state)
465
474
  case 'nl': return parseNewLineRequiredOp(token)(state)
@@ -490,11 +499,10 @@ const foldOp = token => state => {
490
499
  }
491
500
  }
492
501
 
493
- /** @type {(tokenList: list.List<tokenizerT.DjsToken>) => result.Result<DjsModule, string>} */
494
- export const parse = tokenList => {
502
+ export const parse = (tokenList: list.List<tokenizerT.DjsToken>): result.Result<DjsModule, string> => {
495
503
  const state = fold(foldOp)({ state: '', module: { refs: null, modules: null, consts: null }})(tokenList)
496
504
  switch (state.state) {
497
- case 'result': return result.ok([ toArray(state.module.modules), toArray(state.module.consts) ])
505
+ case 'result': return result.ok<DjsModule>([ toArray(state.module.modules), toArray(state.module.consts) ])
498
506
  case 'error': return result.error(state.message)
499
507
  default: return result.error('unexpected end')
500
508
  }