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,11 +1,12 @@
1
- import * as encoding from './module.f.mjs'
2
- import * as json from '../../json/module.f.mjs'
3
- import * as o from '../../types/object/module.f.mjs'
1
+ import * as encoding from './module.f.ts'
2
+ import * as json from '../../json/module.f.ts'
3
+ import * as o from '../../types/object/module.f.ts'
4
4
  const { sort } = o
5
- import * as list from '../../types/list/module.f.mjs'
5
+ import * as list from '../../types/list/module.f.ts'
6
6
 
7
- /** @type {(a: readonly json.Unknown[]) => string} */
8
- const stringify = a => json.stringify(sort)(a)
7
+ const stringify
8
+ : (a: readonly json.Unknown[]) => string
9
+ = a => json.stringify(sort)(a)
9
10
 
10
11
  export default {
11
12
  toCodePointList: [
@@ -1,23 +1,23 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as list from '../../types/list/module.f.mjs'
3
- import * as operator from '../../types/function/operator/module.f.mjs'
4
- import * as Array from '../../types/array/module.f.mjs'
1
+ import * as list from '../../types/list/module.f.ts'
2
+ import * as operator from '../../types/function/operator/module.f.ts'
3
+ import * as Array from '../../types/array/module.f.ts'
5
4
  const { flatMap, flat, stateScan } = list
6
5
 
7
- /** @typedef {u8|null} ByteOrEof */
6
+ type ByteOrEof = u8|null
8
7
 
9
- /** @typedef {Array.Array1<number>|Array.Array2<number>|Array.Array3<number>} Utf8NonEmptyState */
8
+ type Utf8NonEmptyState = Array.Array1<number>|Array.Array2<number>|Array.Array3<number>
10
9
 
11
- /** @typedef {null|Utf8NonEmptyState} Utf8State */
10
+ type Utf8State = null|Utf8NonEmptyState
12
11
 
13
- /** @typedef {number} u8 */
12
+ type u8 = number
14
13
 
15
- /** @typedef {number} i32 */
14
+ type i32 = number
16
15
 
17
16
  const errorMask = 0b1000_0000_0000_0000_0000_0000_0000_0000
18
17
 
19
- /** @type {(input:number) => list.List<u8>} */
20
- const codePointToUtf8 = input => {
18
+ const codePointToUtf8
19
+ : (input:number) => list.List<u8>
20
+ = input => {
21
21
  if (input >= 0x0000 && input <= 0x007f) { return [input & 0b01111_1111] }
22
22
  if (input >= 0x0080 && input <= 0x07ff) { return [input >> 6 | 0b1100_0000, input & 0b0011_1111 | 0b1000_0000] }
23
23
  if (input >= 0x0800 && input <= 0xffff) { return [input >> 12 | 0b1110_0000, input >> 6 & 0b0011_1111 | 0b1000_0000, input & 0b0011_1111 | 0b1000_0000] }
@@ -33,8 +33,9 @@ const codePointToUtf8 = input => {
33
33
 
34
34
  export const fromCodePointList = flatMap(codePointToUtf8)
35
35
 
36
- /** @type {(state: Utf8NonEmptyState) => i32}*/
37
- const utf8StateToError = state => {
36
+ const utf8StateToError
37
+ : (state: Utf8NonEmptyState) => i32
38
+ = state => {
38
39
  let x
39
40
  switch (state.length) {
40
41
  case 1: {
@@ -59,8 +60,9 @@ const utf8StateToError = state => {
59
60
  return x | errorMask
60
61
  }
61
62
 
62
- /** @type {operator.StateScan<number, Utf8State, list.List<i32>>} */
63
- const utf8ByteToCodePointOp = state => byte => {
63
+ const utf8ByteToCodePointOp
64
+ : operator.StateScan<number, Utf8State, list.List<i32>>
65
+ = state => byte => {
64
66
  if (byte < 0x00 || byte > 0xff) {
65
67
  return [[errorMask], state]
66
68
  }
@@ -95,15 +97,19 @@ const utf8ByteToCodePointOp = state => byte => {
95
97
  return [[error, byte | errorMask], null]
96
98
  }
97
99
 
98
- /** @type {(state: Utf8State) => readonly[list.List<i32>, Utf8State]} */
99
- const utf8EofToCodePointOp = state =>
100
+ const utf8EofToCodePointOp
101
+ : (state: Utf8State) => readonly[list.List<i32>, Utf8State]
102
+ = state =>
100
103
  [state === null ? null : [utf8StateToError(state)], null]
101
104
 
102
- /** @type {operator.StateScan<ByteOrEof, Utf8State, list.List<i32>>} */
103
- const utf8ByteOrEofToCodePointOp = state => input => input === null ? utf8EofToCodePointOp(state) : utf8ByteToCodePointOp(state)(input)
105
+ const utf8ByteOrEofToCodePointOp
106
+ : operator.StateScan<ByteOrEof, Utf8State, list.List<i32>>
107
+ = state => input => input === null ? utf8EofToCodePointOp(state) : utf8ByteToCodePointOp(state)(input)
104
108
 
105
- /** @type {list.List<ByteOrEof>} */
106
- const eofList = [null]
109
+ const eofList
110
+ : list.List<ByteOrEof>
111
+ = [null]
107
112
 
108
- /** @type {(input: list.List<u8>) => list.List<i32>} */
109
- export const toCodePointList = input => flat(stateScan(utf8ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
113
+ export const toCodePointList
114
+ : (input: list.List<u8>) => list.List<i32>
115
+ = input => flat(stateScan(utf8ByteOrEofToCodePointOp)(null)(flat([input, eofList])))
@@ -1,8 +1,8 @@
1
- import * as encoding from './module.f.mjs'
2
- import * as json from '../../json/module.f.mjs'
3
- import * as o from '../../types/object/module.f.mjs'
1
+ import * as encoding from './module.f.ts'
2
+ import * as json from '../../json/module.f.ts'
3
+ import * as o from '../../types/object/module.f.ts'
4
4
  const { sort } = o
5
- import * as list from '../../types/list/module.f.mjs'
5
+ import * as list from '../../types/list/module.f.ts'
6
6
 
7
7
  const stringify = json.stringify(sort)
8
8
 
package/tsconfig.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  /* Visit https://aka.ms/tsconfig.json to read more about this file */
4
+ "allowImportingTsExtensions": true,
5
+ "rewriteRelativeImportExtensions": true,
6
+ "verbatimModuleSyntax": true,
4
7
 
5
8
  /* Projects */
6
9
  // "incremental": true, /* Enable incremental compilation */
@@ -47,7 +50,7 @@
47
50
  // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
48
51
  // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
49
52
  // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
50
- "outDir": "./out", /* Specify an output folder for all emitted files. */
53
+ // "outDir": "./out", /* Specify an output folder for all emitted files. */
51
54
  // "removeComments": true, /* Disable emitting comments. */
52
55
  "noEmit": true, /* Disable emitting files from a compilation. */
53
56
  // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
@@ -0,0 +1,89 @@
1
+ import * as option from '../nullable/module.f.ts'
2
+ const { map } = option
3
+
4
+ export type Array1<T> = readonly[T]
5
+
6
+ type Index1 = 0
7
+
8
+ export type Array2<T> = readonly[T, T]
9
+
10
+ type Tuple2<T0, T1> = readonly[T0, T1]
11
+
12
+ type Index2 = 0|1
13
+
14
+ export type Array3<T> = readonly[T, T, T]
15
+
16
+ type Tuple3<T0, T1, T2> = readonly[T0, T1, T2]
17
+
18
+ export type Index3 = 0|1|2
19
+
20
+ export type Array4<T> = readonly[T, T, T, T]
21
+
22
+ type Index4 = 0|1|2|3
23
+
24
+ export type Array5<T> = readonly[T, T, T, T, T]
25
+
26
+ export type Array8<T> = readonly[T, T, T, T, T, T, T, T]
27
+
28
+ export type Array16<T> = readonly[T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T]
29
+
30
+ type Index16 = 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15
31
+
32
+ type Array1_5<T> = Array1<T>| Array2<T> | Array3<T> | Array4<T> | Array5<T>
33
+
34
+ export type Index5 = 0|1|2|3|4
35
+
36
+ export type KeyOf<T> = T extends Array1<infer _> ? Index1 :
37
+ T extends Array2<infer _> ? Index2 :
38
+ T extends Array3<infer _> ? Index3 :
39
+ T extends Array4<infer _> ? Index4 :
40
+ T extends Array5<infer _> ? Index5 :
41
+ T extends readonly (infer _)[] ? number :
42
+ never
43
+
44
+ const uncheckTail
45
+ : <T>(_: readonly T[]) => readonly T[]
46
+ = a => a.slice(1)
47
+
48
+ const uncheckHead
49
+ : <T>(_: readonly T[]) => readonly T[]
50
+ = a => a.slice(0, -1)
51
+
52
+ export const at
53
+ : (index: number) => <T>(a: readonly T[]) => T|null
54
+ = i => a => {
55
+ const r = a[i]
56
+ return r === void 0 ? null : r
57
+ }
58
+
59
+ export const first
60
+ : <T>(_: readonly T[]) => T|null
61
+ = at(0)
62
+
63
+ export const last
64
+ : <T>(_: readonly T[]) => T|null
65
+ = a => at(a.length - 1)(a)
66
+
67
+ export const tail
68
+ : <T>(_: readonly T[]) => readonly T[] | null
69
+ = a => a.length === 0 ? null : uncheckTail(a)
70
+
71
+ export const splitFirst
72
+ = <T>(a: readonly T[]): readonly[T, readonly T[]]|null => {
73
+ const split
74
+ : (_: T) => readonly[T, readonly T[]]
75
+ = first => [first, uncheckTail(a)]
76
+ return map(split)(first(a))
77
+ }
78
+
79
+ export const head
80
+ : <T>(_: readonly T[]) => readonly T[]|null
81
+ = a => a.length === 0 ? null : uncheckHead(a)
82
+
83
+ export const splitLast
84
+ : <T>(_: readonly T[]) => readonly[readonly T[], T]|null
85
+ = a => {
86
+ const lastA = last(a)
87
+ if (lastA === null) { return null }
88
+ return [uncheckHead(a), lastA]
89
+ }
@@ -1,6 +1,6 @@
1
- import * as _ from './module.f.mjs'
2
- import * as json from '../../json/module.f.mjs'
3
- import * as o from '../object/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as json from '../../json/module.f.ts'
3
+ import * as o from '../object/module.f.ts'
4
4
  const { sort } = o
5
5
 
6
6
  const stringify = json.stringify(sort)
@@ -1,16 +1,16 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as bi from '../bigint/module.f.mjs'
1
+ import * as bi from '../bigint/module.f.ts'
3
2
  const { abs, sign } = bi
4
3
 
5
- /** @typedef {readonly[bigint,number]} BigFloat */
4
+ export type BigFloat = readonly[bigint,number]
6
5
 
7
- /** @typedef {readonly[BigFloat,bigint]} BigFloatWithRemainder */
6
+ type BigFloatWithRemainder = readonly[BigFloat,bigint]
8
7
 
9
8
  const twoPow53 = 0b0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
10
9
  const twoPow54 = 0b0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000n
11
10
 
12
- /** @type {(value: BigFloat) => (min: bigint) => BigFloat} */
13
- const increaseMantissa = ([m, e]) => min => {
11
+ const increaseMantissa
12
+ : (value: BigFloat) => (min: bigint) => BigFloat
13
+ = ([m, e]) => min => {
14
14
  if (m === 0n) {
15
15
  return [m, e]
16
16
  }
@@ -25,8 +25,9 @@ const increaseMantissa = ([m, e]) => min => {
25
25
  }
26
26
  }
27
27
 
28
- /** @type {(value: BigFloat) => (max: bigint) => BigFloat} */
29
- const decreaseMantissa = ([m, e]) => max => {
28
+ const decreaseMantissa
29
+ : (value: BigFloat) => (max: bigint) => BigFloat
30
+ = ([m, e]) => max => {
30
31
  if (m === 0n) {
31
32
  return [m, e]
32
33
  }
@@ -41,19 +42,23 @@ const decreaseMantissa = ([m, e]) => max => {
41
42
  }
42
43
  }
43
44
 
44
- /** @type {(base: bigint) => (exp: number) => bigint} */
45
- const pow = base => exp => base ** BigInt(exp)
45
+ const pow
46
+ : (base: bigint) => (exp: number) => bigint
47
+ = base => exp => base ** BigInt(exp)
46
48
 
47
49
  const pow5 = pow(5n)
48
50
 
49
- /** @type {(b: BigFloat) => (mul: bigint) => BigFloat} */
50
- export const multiply = ([m, e]) => mul => [m * mul, e]
51
+ export const multiply
52
+ : (b: BigFloat) => (mul: bigint) => BigFloat
53
+ = ([m, e]) => mul => [m * mul, e]
51
54
 
52
- /** @type {(b: BigFloat) => (div: bigint) => BigFloatWithRemainder} */
53
- const divide = ([m, e]) => div => [[m / div, e], m % div]
55
+ const divide
56
+ : (b: BigFloat) => (div: bigint) => BigFloatWithRemainder
57
+ = ([m, e]) => div => [[m / div, e], m % div]
54
58
 
55
- /** @type {(b: BigFloatWithRemainder) => BigFloat} */
56
- const round53 = ([[m, e], r]) => {
59
+ const round53
60
+ : (b: BigFloatWithRemainder) => BigFloat
61
+ = ([[m, e], r]) => {
57
62
  const mabs = abs(m)
58
63
  const s = BigInt(sign(m))
59
64
  const [m54, e54] = decreaseMantissa([mabs, e])(twoPow54)
@@ -67,14 +72,14 @@ const round53 = ([[m, e], r]) => {
67
72
  return multiply([m53 + o54, e53])(s)
68
73
  }
69
74
 
70
- /** @type {(dec: BigFloat) => BigFloat} */
71
- export const decToBin = dec => {
75
+ export const decToBin
76
+ : (dec: BigFloat) => BigFloat
77
+ = dec => {
72
78
  if (dec[0] === 0n) {
73
79
  return [0n, 0]
74
80
  }
75
81
  if (dec[1] >= 0) {
76
- /** @type {BigFloat} */
77
- const bin = [dec[0] * pow5(dec[1]), dec[1]]
82
+ const bin: BigFloat = [dec[0] * pow5(dec[1]), dec[1]]
78
83
  const inc = increaseMantissa(bin)(twoPow53)
79
84
  return round53([inc, 0n])
80
85
  }
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
  const { decToBin } = _
3
3
 
4
4
  export default {
@@ -1,36 +1,37 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as compare from '../function/compare/module.f.mjs'
3
- import * as Operator from '../function/operator/module.f.mjs'
1
+ import * as compare from '../function/compare/module.f.ts'
2
+ import * as Operator from '../function/operator/module.f.ts'
4
3
  const { unsafeCmp } = compare
5
- import * as list from '../list/module.f.mjs'
4
+ import * as list from '../list/module.f.ts'
6
5
  const { reduce } = list
7
6
 
8
- /** @typedef {Operator.Unary<bigint, bigint>} Unary*/
7
+ type Unary = Operator.Unary<bigint, bigint>
9
8
 
10
- /** @type {(a: bigint) => (b: bigint) => bigint} */
11
- export const addition = a => b => a + b
9
+ export const addition
10
+ : (a: bigint) => (b: bigint) => bigint
11
+ = a => b => a + b
12
12
 
13
13
  export const sum = reduce(addition)(0n)
14
14
 
15
- /** @type {(a: bigint) => bigint} */
16
- export const abs = a => a >= 0 ? a : -a
15
+ export const abs
16
+ : (a: bigint) => bigint
17
+ = a => a >= 0 ? a : -a
17
18
 
18
- /** @type {(a: bigint) => compare.Sign} */
19
- export const sign = a => unsafeCmp(a)(0n)
19
+ export const sign
20
+ : (a: bigint) => compare.Sign
21
+ = a => unsafeCmp(a)(0n)
20
22
 
21
- /** @type {(a: bigint) => string} */
22
- export const serialize = a => `${a}n`
23
+ export const serialize
24
+ : (a: bigint) => string
25
+ = a => `${a}n`
23
26
 
24
- /**
25
- * @template T
26
- * @typedef {{
27
- * readonly 0: T
28
- * readonly add: Operator.Reduce<T>
29
- * }} Additive
30
- */
27
+ type Additive<T> = {
28
+ readonly 0: T
29
+ readonly add: Operator.Reduce<T>
30
+ }
31
31
 
32
- /** @type {<T>(a: Additive<T>) => (a: T) => (n: bigint) => T} */
33
- export const scalar_mul = ({ 0: _0, add }) => a => n => {
32
+ export const scalar_mul
33
+ : <T>(a: Additive<T>) => (a: T) => (n: bigint) => T
34
+ = ({ 0: _0, add }) => a => n => {
34
35
  let ai = a
35
36
  let ni = n
36
37
  let result = _0
@@ -54,8 +55,8 @@ export const scalar_mul = ({ 0: _0, add }) => a => n => {
54
55
  * - `log2(2n)` returns `1n`,
55
56
  * - `log2(15n)` returns `3n`.
56
57
  *
57
- * @param {bigint} v - The input BigInt.
58
- * @returns {bigint} The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
58
+ * @param v - The input BigInt.
59
+ * @returns The base-2 logarithm (floor) of the input BigInt, or `-1n` if the input is less than or equal to 0.
59
60
  *
60
61
  * @remarks
61
62
  * The function operates in two phases:
@@ -64,7 +65,7 @@ export const scalar_mul = ({ 0: _0, add }) => a => n => {
64
65
  * 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
65
66
  * determining the exact value of the logarithm.
66
67
  */
67
- export const log2 = v => {
68
+ export const log2 = (v: bigint): bigint => {
68
69
  if (v <= 0n) { return -1n }
69
70
  let result = 0n
70
71
  let i = 1n
@@ -104,14 +105,14 @@ export const log2 = v => {
104
105
  * The function handles both positive and negative numbers. For negative inputs, the bit length is calculated
105
106
  * based on the absolute value of the number. Zero has a bit length of 0.
106
107
  *
107
- * @param {bigint} v - The input BigInt.
108
- * @returns {bigint} The bit length of the input BigInt.
108
+ * @param v - The input BigInt.
109
+ * @returns The bit length of the input BigInt.
109
110
  *
110
111
  * @remark
111
112
  * The function uses the `log2` function to calculate the position of the most significant bit(MSB)
112
113
  * and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
113
114
  */
114
- export const bitLength = v => {
115
+ export const bitLength = (v: bigint): bigint => {
115
116
  if (v <= 0n) {
116
117
  if (v === 0n) { return 0n }
117
118
  v = -v
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
  const { sum, abs, serialize, log2, bitLength } = _
3
3
 
4
4
  export default {
@@ -141,4 +141,4 @@ export default {
141
141
  },
142
142
  ]
143
143
  }
144
- }
144
+ }
@@ -1,12 +1,10 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import { log2 } from '../bigint/module.f.mjs'
3
- import { flip } from '../function/module.f.mjs'
1
+ import { log2 } from '../bigint/module.f.ts'
2
+ import { flip } from '../function/module.f.ts'
4
3
 
5
4
  /**
6
5
  * A vector of bits represented as a `bigint`.
7
- *
8
- * @typedef {bigint} Vec
9
6
  */
7
+ type Vec = bigint
10
8
 
11
9
  /**
12
10
  * An empty vector of bits.
@@ -21,8 +19,6 @@ export const length = log2
21
19
  /**
22
20
  * Creates a vector of bits of the given `len` and the given unsigned integer.
23
21
  *
24
- * @type {(len: bigint) => (ui: bigint) => Vec}
25
- *
26
22
  * @example
27
23
  *
28
24
  * ```js
@@ -31,21 +27,18 @@ export const length = log2
31
27
  * const v1 = vec4(0x5FEn) // 0x1En
32
28
  * ```
33
29
  */
34
- export const vec = len => {
30
+ export const vec = (len: bigint): (ui: bigint) => Vec => {
35
31
  if (len <= 0n) { return () => empty }
36
32
  const stop = 1n << len
37
33
  const mask = stop - 1n
38
34
  return data => stop | (data & mask)
39
35
  }
40
36
 
41
- /** @type {(len: bigint) => bigint} */
42
- const mask = len => (1n << len) - 1n
37
+ const mask = (len: bigint) => (1n << len) - 1n
43
38
 
44
39
  /**
45
40
  * Returns the unsigned integer of the given vector by removing a stop bit.
46
41
  *
47
- * @type {(len: Vec) => bigint}
48
- *
49
42
  * @example
50
43
  *
51
44
  * ```js
@@ -53,13 +46,11 @@ const mask = len => (1n << len) - 1n
53
46
  * const result = uint(vector); // result is 0x5n
54
47
  * ```
55
48
  */
56
- export const uint = v => v ^ (1n << length(v))
49
+ export const uint = (v: Vec): bigint => v ^ (1n << length(v))
57
50
 
58
51
  /**
59
52
  * Extract the least significant unsigned integer from the given vector.
60
53
  *
61
- * @type {(uintLen: bigint) => (v: Vec) => bigint}
62
- *
63
54
  * @example
64
55
  *
65
56
  * ```js
@@ -68,7 +59,7 @@ export const uint = v => v ^ (1n << length(v))
68
59
  * const result2 = uintLsb(16n)(vector); // result2 is 0xF5n
69
60
  * ```
70
61
  */
71
- export const uintLsb = len => {
62
+ export const uintLsb = (len: bigint): (v: Vec) => bigint => {
72
63
  const m = mask(len)
73
64
  return v => {
74
65
  const result = v & m
@@ -79,8 +70,6 @@ export const uintLsb = len => {
79
70
  /**
80
71
  * Removes the first `len` least significant bits from the given vector.
81
72
  *
82
- * @type {(len: bigint) => (v: Vec) => Vec}
83
- *
84
73
  * @example
85
74
  *
86
75
  * ```js
@@ -89,7 +78,7 @@ export const uintLsb = len => {
89
78
  * const r2 = removeLsb(24n)(v) // 0x1n
90
79
  * ```
91
80
  */
92
- export const removeLsb = len => v => {
81
+ export const removeLsb = (len: bigint) => (v: Vec): Vec => {
93
82
  const r = v >> len
94
83
  return r === 0n ? empty : r
95
84
  }
@@ -97,8 +86,6 @@ export const removeLsb = len => v => {
97
86
  /**
98
87
  * Extracts the least significant unsigned integer and removes it from the vector.
99
88
  *
100
- * @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
101
- *
102
89
  * @example
103
90
  *
104
91
  * ```js
@@ -107,7 +94,7 @@ export const removeLsb = len => v => {
107
94
  * const [result2, rest2] = popUintLsb(16n)(vector); // result2 is 0xF5n, rest2 is 1n
108
95
  * ```
109
96
  */
110
- export const popUintLsb = len => {
97
+ export const popUintLsb = (len: bigint): (v: Vec) => readonly[bigint, Vec] => {
111
98
  const m = mask(len)
112
99
  return v => {
113
100
  const result = v & m
@@ -118,8 +105,6 @@ export const popUintLsb = len => {
118
105
  /**
119
106
  * Extract the most significant unsigned integer of the given `len` from the given vector.
120
107
  *
121
- * @type {(len: bigint) => (v: Vec) => bigint}
122
- *
123
108
  * @example
124
109
  *
125
110
  * ```js
@@ -128,7 +113,7 @@ export const popUintLsb = len => {
128
113
  * const result2 = uintMsb(16n)(vector); // result2 is 0xF500n
129
114
  * ```
130
115
  */
131
- export const uintMsb = len => {
116
+ export const uintMsb = (len: bigint): (v: Vec) => bigint => {
132
117
  const m = mask(len)
133
118
  return v => (v >> (length(v) - len)) & m
134
119
  }
@@ -136,8 +121,6 @@ export const uintMsb = len => {
136
121
  /**
137
122
  * Removes the first `len` most significant bits from the given vector.
138
123
  *
139
- * @type {(len: bigint) => (v: Vec) => Vec}
140
- *
141
124
  * @example
142
125
  *
143
126
  * ```js
@@ -146,13 +129,11 @@ export const uintMsb = len => {
146
129
  * const r2 = removeMsb(24n)(v) // 0x1n
147
130
  * ```
148
131
  */
149
- export const removeMsb = len => v => vec(length(v) - len)(v)
132
+ export const removeMsb = (len: bigint) => (v: Vec): Vec => vec(length(v) - len)(v)
150
133
 
151
134
  /**
152
135
  * Extracts the most significant unsigned integer and removes it from the vector.
153
136
  *
154
- * @type {(len: bigint) => (v: Vec) => [bigint, Vec]}
155
- *
156
137
  * @example
157
138
  *
158
139
  * ```js
@@ -161,7 +142,7 @@ export const removeMsb = len => v => vec(length(v) - len)(v)
161
142
  * const [result2, rest2] = popUintMsb(16n)(vector); // [0xF500n, 1n]
162
143
  * ```
163
144
  */
164
- export const popUintMsb = len => {
145
+ export const popUintMsb = (len: bigint): (v: Vec) => readonly[bigint, Vec] => {
165
146
  const m = mask(len)
166
147
  return v => {
167
148
  const d = length(v) - len
@@ -172,8 +153,6 @@ export const popUintMsb = len => {
172
153
  /**
173
154
  * Concat the given vectors of bits. The first vector is the least significant.
174
155
  *
175
- * @type {(a: Vec) => (b: Vec) => Vec}
176
- *
177
156
  * @example
178
157
  *
179
158
  * ```js
@@ -183,7 +162,7 @@ export const popUintMsb = len => {
183
162
  * const ab = concatLsb(a)(b) // 0x18945n
184
163
  * ```
185
164
  */
186
- export const concatLsb = a => {
165
+ export const concatLsb = (a: Vec): (b: Vec) => Vec => {
187
166
  const aLen = length(a)
188
167
  const m = mask(aLen)
189
168
  return b => (b << aLen) | (a & m)
@@ -192,8 +171,6 @@ export const concatLsb = a => {
192
171
  /**
193
172
  * Concat the given vectors of bits. The first vector is the most significant.
194
173
  *
195
- * @type {(b: Vec) => (a: Vec) => Vec}
196
- *
197
174
  * @example
198
175
  *
199
176
  * ```js
@@ -203,4 +180,6 @@ export const concatLsb = a => {
203
180
  * const ab = concatMsb(a)(b) // 0x14589n
204
181
  * ```
205
182
  */
206
- export const concatMsb = flip(concatLsb)
183
+ export const concatMsb
184
+ : (b: Vec) => (a: Vec) => Vec
185
+ = flip(concatLsb)
@@ -1,4 +1,4 @@
1
- import { empty, vec, length, concatLsb, uintLsb, uintMsb, removeLsb, concatMsb, removeMsb, uint, popUintLsb, popUintMsb } from './module.f.mjs'
1
+ import { empty, vec, length, concatLsb, uintLsb, uintMsb, removeLsb, concatMsb, removeMsb, uint, popUintLsb, popUintMsb } from './module.f.ts'
2
2
 
3
3
  export default {
4
4
  examples: {