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