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,14 +1,15 @@
1
- import * as _ from './module.f.mjs'
2
- import * as map from '../../types/map/module.f.mjs'
3
- import * as Module from '../module/module.f.mjs'
4
- import * as ModuleFunction from '../module/function/module.f.mjs'
5
- import * as Result from '../../types/result/module.f.mjs'
6
- import * as Package from '../package/module.f.mjs'
7
- import * as o from '../../types/object/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as map from '../../types/map/module.f.ts'
3
+ import * as Module from '../module/module.f.ts'
4
+ import * as ModuleFunction from '../module/function/module.f.ts'
5
+ import * as Result from '../../types/result/module.f.ts'
6
+ import * as Package from '../package/module.f.ts'
7
+ import * as o from '../../types/object/module.f.ts'
8
8
  const { at } = o
9
9
 
10
- /** @type {{ readonly [k in string]?: Result.Result<ModuleFunction.Function_, unknown> }} */
11
- const compileMap = {
10
+ const compileMap
11
+ : { readonly [k in string]?: Result.Result<ModuleFunction.Function_, unknown> }
12
+ = {
12
13
  ':index.js': [
13
14
  'ok',
14
15
  require_ => m0 => {
@@ -31,13 +32,15 @@ const compileMap = {
31
32
  () => m0 => [['ok', 'x:r.js'], m0]],
32
33
  }
33
34
 
34
- /** @type {ModuleFunction.Compile} */
35
- const compile = source => compileMap[source] ?? ['error', 'invalid source']
35
+ const compile
36
+ : ModuleFunction.Compile
37
+ = source => compileMap[source] ?? ['error', 'invalid source']
36
38
 
37
- /** @typedef {{ readonly [k in string]: string }} StringMap */
39
+ type StringMap = { readonly [k in string]: string }
38
40
 
39
- /** @type {{ readonly [k in string]: { readonly dependencies: StringMap, readonly files: StringMap }}} */
40
- const packageMap = {
41
+ const packageMap
42
+ : { readonly [k in string]: { readonly dependencies: StringMap, readonly files: StringMap }}
43
+ = {
41
44
  '': {
42
45
  dependencies: {
43
46
  'x': '/node_modules/x'
@@ -56,8 +59,9 @@ const packageMap = {
56
59
  },
57
60
  }
58
61
 
59
- /** @type {Package.Get} */
60
- const packageGet = packageId => {
62
+ const packageGet
63
+ : Package.Get
64
+ = packageId => {
61
65
  const p = at(packageId)(packageMap)
62
66
  return p === null ? null :
63
67
  {
@@ -69,7 +73,7 @@ const packageGet = packageId => {
69
73
  const getOrBuild = _.getOrBuild
70
74
  (compile)
71
75
  (packageGet)
72
- (/** @type {Module.MapInterface<map.Map<Module.State>>} */(map))
76
+ (map as Module.MapInterface<map.Map<Module.State>>)
73
77
 
74
78
  export default () => {
75
79
  let [r, m] = getOrBuild({ package: '', path: ['index.js'] })(map.empty)
@@ -0,0 +1,13 @@
1
+ /**
2
+ * An IO interface for creating and running module functions.
3
+ */
4
+
5
+ import * as TypesResult from '../../../types/result/module.f.ts'
6
+
7
+ export type Function_ = <M>(require: Require<M>) => (prior: M) => Result<M>
8
+
9
+ export type Result<M> = readonly[TypesResult.Result<unknown, unknown>, M]
10
+
11
+ export type Require<M> = (path: string) => (prior: M) => Result<M>
12
+
13
+ export type Compile = (source: string) => TypesResult.Result<Function_, unknown>
@@ -0,0 +1,41 @@
1
+ import * as O from '../../types/object/module.f.ts'
2
+
3
+ export type MapInterface<M> = {
4
+ readonly at: (moduleId: string) => (moduleMap: M) => State | null
5
+ readonly setReplace: (moduleId: string) => (moduleState: State) => (moduleMap: M) => M
6
+ }
7
+
8
+ export type State = |
9
+ readonly['ok', Module] |
10
+ readonly['error', Error]
11
+
12
+ type Module = {
13
+ readonly exports: unknown
14
+ readonly requireMap: O.Map<string>
15
+ }
16
+
17
+ export type Error = |
18
+ ['file not found'] |
19
+ ['compilation error', unknown] |
20
+ ['runtime error', unknown] |
21
+ ['circular reference']
22
+
23
+ export type Id = {
24
+ readonly package: string
25
+ readonly path: readonly string[]
26
+ }
27
+
28
+ export const dir
29
+ : (id: Id) => Id | null
30
+ = id => {
31
+ const len = id.path.length
32
+ if (len < 1) { return null }
33
+ return {
34
+ package: id.package,
35
+ path: id.path.slice(0, len - 1)
36
+ }
37
+ }
38
+
39
+ export const idToString
40
+ : (id: Id) => string
41
+ = id => `${id.package}/${id.path.join('/')}`
@@ -0,0 +1,7 @@
1
+ type PackageMap = (packageName: string) => PackageMap|Package|null
2
+
3
+ type Package = readonly[
4
+ string,
5
+ PackageMap,
6
+ (fileName: string) => string|null
7
+ ]
@@ -1,13 +1,15 @@
1
- import unsafeResult from '../types/result/module.mjs'
1
+ import unsafeResult from '../types/result/module.ts'
2
2
  const { tryCatch } = unsafeResult
3
- import * as result from '../types/result/module.f.mjs'
3
+ import * as result from '../types/result/module.f.ts'
4
4
  const { unwrap } = result
5
- import * as ModuleFunction from './module/function/module.f.mjs'
5
+ import * as ModuleFunction from './module/function/module.f.ts'
6
6
 
7
- /** @type {(f: Function) => ModuleFunction.Function_} */
8
- const build = f => immutableRequire => mutableData => {
9
- /** @type {(path: string) => unknown} */
10
- const mutableRequire = path => {
7
+ const build
8
+ : (f: Function) => ModuleFunction.Function_
9
+ = f => immutableRequire => mutableData => {
10
+ const mutableRequire
11
+ : (path: string) => unknown
12
+ = path => {
11
13
  const [result, data] = immutableRequire(path)(mutableData)
12
14
  // Side effect: setting a variable from a nested function (closure)
13
15
  // is not allowed in FunctionalScript.
@@ -22,7 +24,8 @@ const build = f => immutableRequire => mutableData => {
22
24
  return [result, mutableData]
23
25
  }
24
26
 
25
- /** @type {ModuleFunction.Compile} */
26
- export const compile = source =>
27
+ export const compile
28
+ : ModuleFunction.Compile
29
+ = source =>
27
30
  // Side effect: a `Function` constructor is not allowed in FunctionalScript.
28
31
  tryCatch(() => build(Function('module', 'require', `"use strict";${source}`)))
@@ -0,0 +1,22 @@
1
+ import * as json from '../../../json/module.f.ts'
2
+ const { isObject } = json
3
+ import * as list from '../../../types/list/module.f.ts'
4
+ const { map, every } = list
5
+ const { entries } = Object
6
+
7
+ type DependencyJson = readonly[string, string]
8
+
9
+ type DependencyMapJson = {readonly[k in string]: string}
10
+
11
+ export type DependenciesJson = DependencyMapJson|null
12
+
13
+ const isDependencyJson
14
+ : (entry: json.Entry) => boolean
15
+ = ([, v]) => typeof v === 'string'
16
+
17
+ export const isDependenciesJson
18
+ = (j: json.Unknown): j is DependenciesJson => {
19
+ if (j === null) { return true }
20
+ if (!isObject(j)) { return false }
21
+ return every(map(isDependencyJson)(entries(j)))
22
+ }
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
 
3
3
  export default () => {
4
4
  if (!_.isDependenciesJson(null)) { throw 'error' }
@@ -0,0 +1,31 @@
1
+ import * as json from '../../json/module.f.ts'
2
+ const { isObject } = json
3
+ import * as dependencies from './dependencies/module.f.ts'
4
+ const { isDependenciesJson } = dependencies
5
+ import * as o from '../../types/object/module.f.ts'
6
+ const { at } = o
7
+
8
+ type PackageJson = {
9
+ readonly name: string
10
+ readonly version: string
11
+ readonly dependencies?: dependencies.DependenciesJson
12
+ }
13
+
14
+ export const isPackageJson
15
+ = (j: json.Unknown): j is PackageJson => {
16
+ if (!isObject(j)) { return false }
17
+ if (typeof j.name !== 'string') { return false }
18
+ if (typeof j.version !== 'string') { return false }
19
+ if (!isDependenciesJson(at('dependencies')(j))) { return false }
20
+ return true
21
+ }
22
+
23
+ export type Package = {
24
+ readonly dependency: (localPackageId: string) => string | null
25
+ readonly file: (localFileId: string) => string | null
26
+ }
27
+
28
+ /**
29
+ * @note Current package has an empty string '' as a packageId.
30
+ */
31
+ export type Get = (packageId: string) => Package | null
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
 
3
3
  export default () => {
4
4
  if (_.isPackageJson(null)) { throw 'error' }
@@ -1,28 +1,27 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as list from '../../types/list/module.f.ts'
3
2
  const { next, fold, reverse, first, flat, toArray, filterMap, isEmpty, concat } = list
4
- import * as string from '../../types/string/module.f.mjs'
3
+ import * as string from '../../types/string/module.f.ts'
5
4
  const { join } = string
6
- import * as Package from '../package/module.f.mjs'
7
- import * as Module from '../module/module.f.mjs'
5
+ import * as Package from '../package/module.f.ts'
6
+ import * as Module from '../module/module.f.ts'
8
7
 
9
- /** @typedef {readonly string[]} Items */
8
+ type Items = readonly string[]
10
9
 
11
- /**
12
- * @typedef {{
13
- * readonly external: boolean
14
- * readonly dir: boolean
15
- * readonly items: Items
16
- * }} LocalPath
17
- */
10
+ type LocalPath = {
11
+ readonly external: boolean
12
+ readonly dir: boolean
13
+ readonly items: Items
14
+ }
18
15
 
19
- /** @type {(path: string) => readonly string[]} */
20
- const split = path => path.split('/')
16
+ const split
17
+ : (path: string) => readonly string[]
18
+ = path => path.split('/')
21
19
 
22
- /** @typedef {readonly[list.List<string>] | null} OptionList */
20
+ type OptionList = readonly[list.List<string>] | null
23
21
 
24
- /** @type {(items: string) => (prior: OptionList) => OptionList} */
25
- const normItemsOp = first => prior => {
22
+ const normItemsOp
23
+ : (items: string) => (prior: OptionList) => OptionList
24
+ = first => prior => {
26
25
  if (prior === null) { return null }
27
26
  const tail = prior[0]
28
27
  switch (first) {
@@ -38,21 +37,24 @@ const normItemsOp = first => prior => {
38
37
  }
39
38
  }
40
39
 
41
- /** @type {(items: list.List<string>) => OptionList} */
42
- const normItems = items => {
40
+ const normItems
41
+ : (items: list.List<string>) => OptionList
42
+ = items => {
43
43
  const result = fold(normItemsOp)([list.empty])(items)
44
44
  return result === null ? result : [reverse(result[0])]
45
45
  }
46
46
 
47
47
  const firstNull = first(null)
48
48
 
49
- /** @type {(local: string) => (path: string) => LocalPath|null} */
50
- export const parseLocal = local => {
51
- /** @type {(path: string) => readonly[boolean, boolean, list.List<string>]} */
52
- const fSeq = path => {
49
+ export const parseLocal
50
+ : (local: string) => (path: string) => LocalPath|null
51
+ = local => {
52
+ const fSeq
53
+ : (path: string) => readonly[boolean, boolean, list.List<string>]
54
+ = path => {
53
55
  const pathSeq = split(path)
54
56
  const dir = [null, '', '.', '..'].includes(pathSeq[pathSeq.length - 1])
55
- return /** @type {readonly (string|null)[]} */(['.', '..']).includes(firstNull(pathSeq)) ?
57
+ return (['.', '..'] as readonly (string|null)[]).includes(firstNull(pathSeq)) ?
56
58
  [false, dir, flat([split(local), pathSeq])] :
57
59
  [true, dir, pathSeq]
58
60
  }
@@ -69,40 +71,44 @@ export const parseLocal = local => {
69
71
  }
70
72
  }
71
73
 
72
- /** @typedef {readonly[string, list.List<string>]} IdPath */
74
+ type IdPath = readonly[string, list.List<string>]
73
75
 
74
- /** @type {(prior: readonly[string|null, list.List<string>]) => list.Thunk<IdPath>} */
75
- const variants = prior => () => {
76
+ /** @type {} */
77
+ const variants
78
+ : (prior: readonly[string|null, list.List<string>]) => list.Thunk<IdPath>
79
+ = prior => () => {
76
80
  const [a, b] = prior
77
81
  const r = next(b)
78
82
  if (r === list.empty) { return list.empty }
79
83
  const { first, tail } = r
80
- /** @type {IdPath} */
81
- const n = [a === null ? first : `${a}/${first}`, tail]
84
+ const n
85
+ : IdPath
86
+ = [a === null ? first : `${a}/${first}`, tail]
82
87
  return { first: n, tail: variants(n) }
83
88
  }
84
89
 
85
- /** @type {(d: (local: string) => string|null) => (p: IdPath) => IdPath|null} */
86
- const mapDependency = d => ([external, internal]) => {
90
+ const mapDependency
91
+ : (d: (local: string) => string|null) => (p: IdPath) => IdPath|null
92
+ = d => ([external, internal]) => {
87
93
  const id = d(external)
88
94
  return id === null ? null : [id, internal]
89
95
  }
90
96
 
91
- /**
92
- * @typedef {{
93
- * readonly package: string,
94
- * readonly items: Items,
95
- * readonly dir: boolean,
96
- * }} Path
97
- */
97
+ type Path = {
98
+ readonly package: string,
99
+ readonly items: Items,
100
+ readonly dir: boolean,
101
+ }
98
102
 
99
103
  /**
100
- * @type {(d: (local: string) => string|null) =>
101
- * (dir: boolean) =>
102
- * (items: list.List<string>) =>
103
- * Path|null}
104
+ * @type {}
104
105
  */
105
- export const parseGlobal = dependencies =>
106
+ export const parseGlobal
107
+ : (d: (local: string) => string|null) =>
108
+ (dir: boolean) =>
109
+ (items: list.List<string>) =>
110
+ Path|null
111
+ = dependencies =>
106
112
  {
107
113
  const fMap = filterMap(mapDependency(dependencies))
108
114
  return dir => items => {
@@ -114,13 +120,15 @@ export const parseGlobal = dependencies =>
114
120
  }
115
121
 
116
122
  /**
117
- * @type {(packageId: string) =>
118
- * (dependencies: (local: string) => string|null) =>
119
- * (local: string) =>
120
- * (path: string) =>
121
- * Path|null }
123
+ * @type { }
122
124
  */
123
- export const parse = packageId => dependencies => {
125
+ export const parse
126
+ : (packageId: string) =>
127
+ (dependencies: (local: string) => string|null) =>
128
+ (local: string) =>
129
+ (path: string) =>
130
+ Path|null
131
+ = packageId => dependencies => {
124
132
  const pg = parseGlobal(dependencies)
125
133
  return local => path => {
126
134
  const parsed = parseLocal(local)(path)
@@ -131,31 +139,28 @@ export const parse = packageId => dependencies => {
131
139
  }
132
140
  }
133
141
 
134
- /**
135
- * @typedef {{
136
- * readonly id: Module.Id
137
- * readonly source: string
138
- * }} FoundResult
139
- */
142
+ type FoundResult = {
143
+ readonly id: Module.Id
144
+ readonly source: string
145
+ }
140
146
 
141
- /** @typedef {FoundResult| null} Result */
147
+ type Result = FoundResult| null
142
148
 
143
- /**
144
- * @type {(packageGet: Package.Get) =>
145
- * (moduleId: Module.Id) =>
146
- * (path: string) =>
147
- * Result
148
- * }
149
- */
150
- export const parseAndFind = packageGet => moduleId => path => {
149
+ export const parseAndFind
150
+ : (packageGet: Package.Get) =>
151
+ (moduleId: Module.Id) =>
152
+ (path: string) =>
153
+ Result
154
+ = packageGet => moduleId => path => {
151
155
  const currentPack = packageGet(moduleId.package)
152
156
  if (currentPack === null) { return null }
153
157
  const p = parse(moduleId.package)(currentPack.dependency)(moduleId.path.join('/'))(path)
154
158
  if (p === null) { return null }
155
159
  const pack = packageGet(p.package)
156
160
  if (pack === null) { return null }
157
- /** @type {(file: string) => FoundResult | null } */
158
- const tryFile = file => {
161
+ const tryFile
162
+ : (file: string) => FoundResult | null
163
+ = file => {
159
164
  const source = pack.file(file)
160
165
  return source === null ? null : { id: { package: p.package, path: file.split('/') }, source }
161
166
  }
@@ -1,18 +1,20 @@
1
- import * as _ from './module.f.mjs'
2
- import * as dev from '../../dev/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as dev from '../../dev/module.f.ts'
3
3
  const { todo } = dev
4
- import * as json from '../../json/module.f.mjs'
5
- import * as f from '../../types/function/module.f.mjs'
4
+ import * as json from '../../json/module.f.ts'
5
+ import * as f from '../../types/function/module.f.ts'
6
6
  const { identity } = f
7
- import * as object from '../../types/object/module.f.mjs'
7
+ import * as object from '../../types/object/module.f.ts'
8
8
  const { at } = object
9
- import * as Package from '../package/module.f.mjs'
9
+ import * as Package from '../package/module.f.ts'
10
10
 
11
- /** @type {<T>(o: object.Map<T>) => (s: string) => T|null} */
12
- const i = o => s => at(s)(o)
11
+ const i
12
+ : <T>(o: object.Map<T>) => (s: string) => T|null
13
+ = o => s => at(s)(o)
13
14
 
14
- /** @type {(g: json.Unknown) => string} */
15
- const stringify = json.stringify(identity)
15
+ const stringify
16
+ : (g: json.Unknown) => string
17
+ = json.stringify(identity)
16
18
 
17
19
  export default {
18
20
  0: () => {
@@ -70,8 +72,9 @@ export default {
70
72
  },
71
73
  },
72
74
  9: () => {
73
- /** @type {object.Map<Package.Package>} */
74
- const packages = {
75
+ const packages
76
+ : object.Map<Package.Package>
77
+ = {
75
78
  '': {
76
79
  dependency: () => todo(),
77
80
  file: i({ 'a/c': 'return "a/c"' }),
@@ -81,8 +84,9 @@ export default {
81
84
  if (result !== '{"id":{"package":"","path":["a","c"]},"source":"return \\"a/c\\""}') { throw result }
82
85
  },
83
86
  10: () => {
84
- /** @type {object.Map<Package.Package>} */
85
- const packages = {
87
+ const packages
88
+ : object.Map<Package.Package>
89
+ = {
86
90
  '': {
87
91
  dependency: x => {
88
92
  const path = `node_modules/${x}`
@@ -131,8 +135,9 @@ export default {
131
135
  }
132
136
  },
133
137
  11: () => {
134
- /** @type {object.Map<Package.Package>} */
135
- const packages = {
138
+ const packages
139
+ : object.Map<Package.Package>
140
+ = {
136
141
  '': {
137
142
  dependency: x => {
138
143
  const path = `node_modules/${x}`
@@ -158,8 +163,9 @@ export default {
158
163
  }
159
164
  },
160
165
  12: () => {
161
- /** @type {object.Map<Package.Package>} */
162
- const packages = {
166
+ const packages
167
+ : object.Map<Package.Package>
168
+ = {
163
169
  '': {
164
170
  dependency: x => {
165
171
  const path = `node_modules/${x}`
@@ -179,4 +185,4 @@ export default {
179
185
  const result = stringify(_.parseAndFind(i(packages))({ package: '', path: ['a', 'b'] })('z/a/c'))
180
186
  if (result !== '{"id":{"package":"node_modules/z/a/c","path":["index.js"]},"source":"return \\"a/c\\""}') { throw result }
181
187
  }
182
- }
188
+ }
@@ -1,5 +1,5 @@
1
- import * as _ from './module.mjs'
2
- import * as Run from './module/function/module.f.mjs'
1
+ import * as _ from './module.ts'
2
+ import * as Run from './module/function/module.f.ts'
3
3
 
4
4
  export default {
5
5
  ok: () => {
@@ -32,8 +32,9 @@ export default {
32
32
  const d = _.compile(depSource)
33
33
  if (d[0] !== 'ok') { throw d }
34
34
 
35
- /** @type {Run.Require<number>} */
36
- const req = path => prior => {
35
+ const req
36
+ : Run.Require<number>
37
+ = path => prior => {
37
38
  if (path !== 'm') { throw path }
38
39
  return d[1](req)(prior + 1)
39
40
  }
@@ -1,50 +1,51 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as Operator from '../../types/function/operator/module.f.mjs'
3
- import * as bi from '../../types/bigint/module.f.mjs'
1
+ import * as Operator from '../../types/function/operator/module.f.ts'
2
+ import * as bi from '../../types/bigint/module.f.ts'
4
3
  const { scalar_mul } = bi
5
4
 
6
- /** @typedef {Operator.Reduce<bigint>} Reduce */
5
+ type Reduce = Operator.Reduce<bigint>
7
6
 
8
- /** @typedef {Operator.Unary<bigint, bigint>} Unary*/
7
+ type Unary = Operator.Unary<bigint, bigint>
9
8
 
10
9
  /**
11
10
  * A type representing a prime field and its associated operations.
12
- *
13
- * @typedef {{
14
- * readonly p: bigint
15
- * readonly middle: bigint
16
- * readonly max: bigint
17
- * readonly neg: Unary
18
- * readonly sub: Reduce
19
- * readonly add: Reduce
20
- * readonly abs: Unary
21
- * readonly mul: Reduce
22
- * readonly reciprocal: Unary
23
- * readonly div: Reduce
24
- * readonly pow: Reduce
25
- * readonly pow2: Unary
26
- * readonly pow3: Unary
27
- * }} PrimeField
28
11
  */
12
+ export type PrimeField = {
13
+ readonly p: bigint
14
+ readonly middle: bigint
15
+ readonly max: bigint
16
+ readonly neg: Unary
17
+ readonly sub: Reduce
18
+ readonly add: Reduce
19
+ readonly abs: Unary
20
+ readonly mul: Reduce
21
+ readonly reciprocal: Unary
22
+ readonly div: Reduce
23
+ readonly pow: Reduce
24
+ readonly pow2: Unary
25
+ readonly pow3: Unary
26
+ }
29
27
 
30
28
  /**
31
29
  * Creates a prime field with the specified prime modulus and associated operations.
32
30
  *
33
31
  * @param p - A prime number to define the field.
34
32
  * @returns The prime field object.
35
- *
36
- * @type {(p: bigint) => PrimeField}
37
33
  */
38
- export const prime_field = p => {
39
- /** @type {Reduce} */
40
- const sub = a => b => {
34
+ export const prime_field
35
+ : (p: bigint) => PrimeField
36
+ = p => {
37
+ const sub
38
+ : Reduce
39
+ = a => b => {
41
40
  const r = a - b
42
41
  return r < 0 ? r + p : r
43
42
  }
44
- /** @type {Reduce} */
45
- const mul = a => b => a * b % p
46
- /** @type {Unary} */
47
- const reciprocal = a => {
43
+ const mul
44
+ : Reduce
45
+ = a => b => a * b % p
46
+ const reciprocal
47
+ : Unary
48
+ = a => {
48
49
  if (a === 0n) { throw '1/0' }
49
50
  let a1 = a
50
51
  let a0 = p
@@ -62,10 +63,12 @@ export const prime_field = p => {
62
63
  return f1
63
64
  }
64
65
  const middle = p >> 1n
65
- /** @type {Unary} */
66
- const pow2 = a => mul(a)(a)
67
- /** @type {Reduce} */
68
- const pow = scalar_mul({ 0: 1n, add: mul })
66
+ const pow2
67
+ : Unary
68
+ = a => mul(a)(a)
69
+ const pow
70
+ : Reduce
71
+ = scalar_mul({ 0: 1n, add: mul })
69
72
  return {
70
73
  p,
71
74
  middle,
@@ -98,10 +101,10 @@ export const prime_field = p => {
98
101
  * const root = sqrt(field)(4n);
99
102
  * if (root !== 2n) { throw root }
100
103
  * ```
101
- *
102
- * @type {(f: PrimeField) => (a: bigint) => bigint|null}
103
104
  */
104
- export const sqrt = ({p, mul, pow }) => {
105
+ export const sqrt
106
+ : (f: PrimeField) => (a: bigint) => bigint|null
107
+ = ({p, mul, pow }) => {
105
108
  if ((p & 3n) !== 3n) { throw 'sqrt' }
106
109
  const sqrt_k = (p + 1n) >> 2n
107
110
  return a => {