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,110 +0,0 @@
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';
4
- const { scalar_mul } = bi;
5
- /** @typedef {Operator.Reduce<bigint>} Reduce */
6
- /** @typedef {Operator.Unary<bigint, bigint>} Unary*/
7
- /**
8
- * A type representing a prime field and its associated operations.
9
- *
10
- * @typedef {{
11
- * readonly p: bigint
12
- * readonly middle: bigint
13
- * readonly max: bigint
14
- * readonly neg: Unary
15
- * readonly sub: Reduce
16
- * readonly add: Reduce
17
- * readonly abs: Unary
18
- * readonly mul: Reduce
19
- * readonly reciprocal: Unary
20
- * readonly div: Reduce
21
- * readonly pow: Reduce
22
- * readonly pow2: Unary
23
- * readonly pow3: Unary
24
- * }} PrimeField
25
- */
26
- /**
27
- * Creates a prime field with the specified prime modulus and associated operations.
28
- *
29
- * @param p - A prime number to define the field.
30
- * @returns The prime field object.
31
- *
32
- * @type {(p: bigint) => PrimeField}
33
- */
34
- export const prime_field = p => {
35
- /** @type {Reduce} */
36
- const sub = a => b => {
37
- const r = a - b;
38
- return r < 0 ? r + p : r;
39
- };
40
- /** @type {Reduce} */
41
- const mul = a => b => a * b % p;
42
- /** @type {Unary} */
43
- const reciprocal = a => {
44
- if (a === 0n) {
45
- throw '1/0';
46
- }
47
- let a1 = a;
48
- let a0 = p;
49
- let f0 = 0n;
50
- let f1 = 1n;
51
- while (a1 !== 1n) {
52
- const q = a0 / a1;
53
- const a2 = a0 % a1;
54
- a0 = a1;
55
- a1 = a2;
56
- const f2 = sub(f0)(mul(f1)(q));
57
- f0 = f1;
58
- f1 = f2;
59
- }
60
- return f1;
61
- };
62
- const middle = p >> 1n;
63
- /** @type {Unary} */
64
- const pow2 = a => mul(a)(a);
65
- /** @type {Reduce} */
66
- const pow = scalar_mul({ 0: 1n, add: mul });
67
- return {
68
- p,
69
- middle,
70
- max: p - 1n,
71
- neg: a => a === 0n ? 0n : p - a,
72
- sub,
73
- add: a => b => {
74
- const r = a + b;
75
- return r < p ? r : r - p;
76
- },
77
- abs: a => middle < a ? p - a : a,
78
- mul,
79
- reciprocal,
80
- div: a => b => mul(a)(reciprocal(b)),
81
- pow,
82
- pow2,
83
- pow3: a => mul(a)(pow2(a))
84
- };
85
- };
86
- /**
87
- * Computes the square root of a number in a prime field.
88
- *
89
- * @throws If the prime modulus `p` does not satisfy `p % 4 == 3`.
90
- *
91
- * @example
92
- *
93
- * ```js
94
- * const field = prime_field(7n);
95
- * const root = sqrt(field)(4n);
96
- * if (root !== 2n) { throw root }
97
- * ```
98
- *
99
- * @type {(f: PrimeField) => (a: bigint) => bigint|null}
100
- */
101
- export const sqrt = ({ p, mul, pow }) => {
102
- if ((p & 3n) !== 3n) {
103
- throw 'sqrt';
104
- }
105
- const sqrt_k = (p + 1n) >> 2n;
106
- return a => {
107
- const result = pow(a)(sqrt_k);
108
- return mul(result)(result) === a ? result : null;
109
- };
110
- };
@@ -1,13 +0,0 @@
1
- declare namespace _default {
2
- function prime_field_test(): {
3
- neg: () => void;
4
- sub: () => void;
5
- add: () => void;
6
- mul: () => void;
7
- reciprocal: () => void;
8
- pow: () => void;
9
- sqrtExample: () => void;
10
- sqrt: () => void;
11
- };
12
- }
13
- export default _default;
@@ -1,152 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- const { prime_field, sqrt } = _;
3
- export default {
4
- prime_field_test: () => {
5
- const p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn;
6
- const f = prime_field(p);
7
- const sqrt_f = sqrt(f);
8
- return {
9
- neg: () => {
10
- if (f.neg(0n) !== 0n) {
11
- throw '-0';
12
- }
13
- if (f.neg(1n) !== p - 1n) {
14
- throw '-1';
15
- }
16
- },
17
- sub: () => {
18
- if (f.sub(10n)(4n) !== 6n) {
19
- throw '10 - 4';
20
- }
21
- if (f.sub(11n)(14n) !== p - 3n) {
22
- throw '11 - 14';
23
- }
24
- },
25
- add: () => {
26
- if (f.add(13n)(24n) !== 37n) {
27
- throw '13 + 24';
28
- }
29
- if (f.add(77n)(f.neg(12n)) !== 65n) {
30
- throw '77 + (-12)';
31
- }
32
- },
33
- mul: () => {
34
- if (f.mul(100n)(0n) !== 0n) {
35
- throw '100 * 0';
36
- }
37
- if (f.mul(101n)(205n) !== 20705n) {
38
- throw '101 * 205';
39
- }
40
- if (f.mul(304n)(f.neg(1n)) !== f.neg(304n)) {
41
- throw '304 * -1';
42
- }
43
- if (f.mul(f.neg(507n))(609n) !== f.neg(308763n)) {
44
- throw '-507 * 609';
45
- }
46
- if (f.mul(f.neg(713n))(f.neg(825n)) !== 588225n) {
47
- throw '-713 * -825';
48
- }
49
- },
50
- reciprocal: () => {
51
- let i = 1n;
52
- while (i < 10000n) {
53
- const x = f.reciprocal(i);
54
- if (f.mul(x)(i) !== 1n) {
55
- throw i;
56
- }
57
- ++i;
58
- }
59
- },
60
- pow: () => {
61
- /** @type {(a: bigint) => void} */
62
- const test = a => {
63
- if (f.pow(a)(0n) !== 1n) {
64
- throw '**0';
65
- }
66
- if (f.pow(a)(1n) !== a) {
67
- throw '**1';
68
- }
69
- // https://en.wikipedia.org/wiki/Fermat%27s_little_theorem
70
- // a^(p-1) % p = 1
71
- if (f.abs(f.pow(a)(f.middle)) !== 1n) {
72
- throw '**middle';
73
- }
74
- if (f.pow(a)(f.sub(f.max)(1n)) !== f.reciprocal(a)) {
75
- throw '**(max-1)';
76
- }
77
- if (f.pow(a)(f.max) !== 1n) {
78
- throw '**max';
79
- }
80
- };
81
- // 0
82
- if (f.pow(0n)(0n) !== 1n) {
83
- throw '0**0';
84
- }
85
- if (f.pow(0n)(f.max) !== 0n) {
86
- throw '0**max';
87
- }
88
- // 1
89
- test(1n);
90
- // 2
91
- test(2n);
92
- if (f.pow(2n)(2n) !== 4n) {
93
- throw '2**2';
94
- }
95
- if (f.pow(2n)(3n) !== 8n) {
96
- throw '2**3';
97
- }
98
- if (f.pow(2n)(128n) !== 1n << 128n) {
99
- throw '2**128';
100
- }
101
- // 3
102
- test(3n);
103
- if (f.pow(3n)(2n) !== 9n) {
104
- throw '3**2';
105
- }
106
- if (f.pow(3n)(3n) !== 27n) {
107
- throw '3**3';
108
- }
109
- if (f.pow(3n)(100n) !== 3n ** 100n) {
110
- throw '3**100';
111
- }
112
- if (f.pow(3n)(110n) !== 3n ** 110n) {
113
- throw '3**110';
114
- }
115
- if (f.pow(3n)(120n) !== 3n ** 120n) {
116
- throw '3**120';
117
- }
118
- if (f.pow(3n)(121n) !== 3n ** 121n) {
119
- throw '3**121';
120
- }
121
- //
122
- test(f.middle);
123
- test(f.max - 1n);
124
- test(f.max);
125
- },
126
- sqrtExample: () => {
127
- const field = prime_field(7n);
128
- const root = sqrt(field)(4n);
129
- if (root !== 2n) {
130
- throw root;
131
- }
132
- },
133
- sqrt: () => {
134
- /** @type {(a: bigint) => void} */
135
- const test = a => {
136
- const a2 = f.mul(a)(a);
137
- const s = sqrt_f(a2);
138
- if (s !== null && f.abs(s) !== f.abs(a)) {
139
- throw 'sqrt';
140
- }
141
- };
142
- let i = 1n;
143
- while (i < 1000n) {
144
- test(i);
145
- ++i;
146
- }
147
- test(f.middle);
148
- test(f.max);
149
- }
150
- };
151
- }
152
- };
@@ -1,110 +0,0 @@
1
- /**
2
- * A 2D point represented as a pair of `bigint` values `[x, y]`.
3
- *
4
- * @typedef {readonly[bigint, bigint]} Point2D
5
- */
6
- /**
7
- * A 2D point on an elliptic curve, represented as a pair of `bigint` values.
8
- * `null` represents the point at infinity (`O`).
9
- *
10
- * @typedef {Point2D|null} Point
11
- */
12
- /**
13
- * Initialization parameters for an elliptic curve.
14
- *
15
- * @typedef {{
16
- * readonly p: bigint
17
- * readonly a: readonly[bigint, bigint]
18
- * readonly g: readonly[bigint, bigint]
19
- * readonly n: bigint
20
- * }} Init
21
- */
22
- /**
23
- * Represents an elliptic curve and its associated operations.
24
- *
25
- * @typedef {{
26
- * readonly pf: pf.PrimeField
27
- * readonly nf: pf.PrimeField
28
- * readonly y2: (x: bigint) => bigint
29
- * readonly y: (x: bigint) => bigint|null
30
- * readonly neg: (a: Point) => Point
31
- * readonly add: Operator.Reduce<Point>
32
- * readonly mul: (a: Point) => (n: bigint) => Point
33
- * }} Curve
34
- */
35
- /**
36
- * Constructs an elliptic curve with the given initialization parameters.
37
- *
38
- * @example
39
- *
40
- * ```js
41
- * const curveParams = {
42
- * p: 23n,
43
- * a: [0n, 1n],
44
- * g: [1n, 1n],
45
- * n: 19n
46
- * };
47
- * const curveInstance = curve(curveParams);
48
- *
49
- * // Access curve operations
50
- * const point = curveInstance.add([1n, 1n])([2n, 5n]); // Add two points
51
- * const negPoint = curveInstance.neg([1n, 1n]); // Negate a point
52
- * const mulPoint = curveInstance.mul([1n, 1n])(3n); // Multiply a point by 3
53
- * ```
54
- *
55
- * @type {(i: Init) => Curve}
56
- */
57
- export const curve: (i: Init) => Curve;
58
- /** @type {(a: Point) => (b: Point) => boolean} */
59
- export const eq: (a: Point) => (b: Point) => boolean;
60
- /**
61
- * https://neuromancer.sk/std/secg/secp192r1
62
- *
63
- * @type {Init}
64
- */
65
- export const secp192r1: Init;
66
- /**
67
- * https://en.bitcoin.it/wiki/Secp256k1
68
- * https://neuromancer.sk/std/secg/secp256k1
69
- *
70
- * @type {Init}
71
- */
72
- export const secp256k1: Init;
73
- /**
74
- * https://neuromancer.sk/std/secg/secp256r1
75
- *
76
- * @type { Init }
77
- */
78
- export const secp256r1: Init;
79
- /**
80
- * A 2D point represented as a pair of `bigint` values `[x, y]`.
81
- */
82
- export type Point2D = readonly [bigint, bigint];
83
- /**
84
- * A 2D point on an elliptic curve, represented as a pair of `bigint` values.
85
- * `null` represents the point at infinity (`O`).
86
- */
87
- export type Point = Point2D | null;
88
- /**
89
- * Initialization parameters for an elliptic curve.
90
- */
91
- export type Init = {
92
- readonly p: bigint;
93
- readonly a: readonly [bigint, bigint];
94
- readonly g: readonly [bigint, bigint];
95
- readonly n: bigint;
96
- };
97
- /**
98
- * Represents an elliptic curve and its associated operations.
99
- */
100
- export type Curve = {
101
- readonly pf: pf.PrimeField;
102
- readonly nf: pf.PrimeField;
103
- readonly y2: (x: bigint) => bigint;
104
- readonly y: (x: bigint) => bigint | null;
105
- readonly neg: (a: Point) => Point;
106
- readonly add: Operator.Reduce<Point>;
107
- readonly mul: (a: Point) => (n: bigint) => Point;
108
- };
109
- import * as pf from '../prime_field/module.f.mjs';
110
- import * as Operator from '../../types/function/operator/module.f.mjs';
@@ -1,173 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as Operator from '../../types/function/operator/module.f.mjs';
3
- import * as pf from '../prime_field/module.f.mjs';
4
- import * as bi from '../../types/bigint/module.f.mjs';
5
- const { scalar_mul } = bi;
6
- const { prime_field, sqrt } = pf;
7
- /**
8
- * A 2D point represented as a pair of `bigint` values `[x, y]`.
9
- *
10
- * @typedef {readonly[bigint, bigint]} Point2D
11
- */
12
- /**
13
- * A 2D point on an elliptic curve, represented as a pair of `bigint` values.
14
- * `null` represents the point at infinity (`O`).
15
- *
16
- * @typedef {Point2D|null} Point
17
- */
18
- /**
19
- * Initialization parameters for an elliptic curve.
20
- *
21
- * @typedef {{
22
- * readonly p: bigint
23
- * readonly a: readonly[bigint, bigint]
24
- * readonly g: readonly[bigint, bigint]
25
- * readonly n: bigint
26
- * }} Init
27
- */
28
- /**
29
- * Represents an elliptic curve and its associated operations.
30
- *
31
- * @typedef {{
32
- * readonly pf: pf.PrimeField
33
- * readonly nf: pf.PrimeField
34
- * readonly y2: (x: bigint) => bigint
35
- * readonly y: (x: bigint) => bigint|null
36
- * readonly neg: (a: Point) => Point
37
- * readonly add: Operator.Reduce<Point>
38
- * readonly mul: (a: Point) => (n: bigint) => Point
39
- * }} Curve
40
- */
41
- /**
42
- * Constructs an elliptic curve with the given initialization parameters.
43
- *
44
- * @example
45
- *
46
- * ```js
47
- * const curveParams = {
48
- * p: 23n,
49
- * a: [0n, 1n],
50
- * g: [1n, 1n],
51
- * n: 19n
52
- * };
53
- * const curveInstance = curve(curveParams);
54
- *
55
- * // Access curve operations
56
- * const point = curveInstance.add([1n, 1n])([2n, 5n]); // Add two points
57
- * const negPoint = curveInstance.neg([1n, 1n]); // Negate a point
58
- * const mulPoint = curveInstance.mul([1n, 1n])(3n); // Multiply a point by 3
59
- * ```
60
- *
61
- * @type {(i: Init) => Curve}
62
- */
63
- export const curve = ({ p, a: [a0, a1], n }) => {
64
- const pf = prime_field(p);
65
- const { pow2, pow3, sub, add, mul, neg, div } = pf;
66
- const mul3 = mul(3n);
67
- const mul2 = mul(2n);
68
- const addA1 = add(a1);
69
- const mulA1 = mul(a1);
70
- const addA0 = add(a0);
71
- // y**2 = a1*x**3 + a0
72
- /** @type {(x: bigint) => bigint} */
73
- const y2 = x => addA0(add(pow3(x))(mulA1(x)));
74
- /** @type {Operator.Reduce<Point>} */
75
- const addPoint = p => q => {
76
- if (p === null) {
77
- return q;
78
- }
79
- if (q === null) {
80
- return p;
81
- }
82
- const [px, py] = p;
83
- const [qx, qy] = q;
84
- const md = px === qx
85
- // (3 * px ** 2 + a1) / (2 * py)
86
- ? py !== qy || py === 0n ? null : [addA1(mul3(pow2(px))), mul2(py)]
87
- // (py - qy) / (px - qx)
88
- : [sub(py)(qy), sub(px)(qx)];
89
- if (md === null) {
90
- return null;
91
- }
92
- const [ma, mb] = md;
93
- const m = div(ma)(mb);
94
- // m ** 2 - px - qx
95
- const rx = sub(pow2(m))(add(px)(qx));
96
- // [rx, m * (px - rx) - py]
97
- return [rx, sub(mul(m)(sub(px)(rx)))(py)];
98
- };
99
- const sqrt_p = sqrt(pf);
100
- return {
101
- pf,
102
- nf: prime_field(n),
103
- y2,
104
- y: x => sqrt_p(y2(x)),
105
- neg: p => {
106
- if (p === null) {
107
- return null;
108
- }
109
- const [x, y] = p;
110
- return [x, neg(y)];
111
- },
112
- add: addPoint,
113
- mul: scalar_mul({ 0: null, add: addPoint })
114
- };
115
- };
116
- /** @type {(a: Point) => (b: Point) => boolean} */
117
- export const eq = a => b => {
118
- if (a === null || b === null) {
119
- return a === b;
120
- }
121
- const [ax, ay] = a;
122
- const [bx, by] = b;
123
- return ax === bx && ay === by;
124
- };
125
- /**
126
- * https://neuromancer.sk/std/secg/secp192r1
127
- *
128
- * @type {Init}
129
- */
130
- export const secp192r1 = {
131
- p: 0xfffffffffffffffffffffffffffffffeffffffffffffffffn,
132
- a: [
133
- 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1n,
134
- 0xfffffffffffffffffffffffffffffffefffffffffffffffcn
135
- ],
136
- g: [
137
- 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012n,
138
- 0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811n
139
- ],
140
- n: 0xffffffffffffffffffffffff99def836146bc9b1b4d22831n,
141
- };
142
- /**
143
- * https://en.bitcoin.it/wiki/Secp256k1
144
- * https://neuromancer.sk/std/secg/secp256k1
145
- *
146
- * @type {Init}
147
- */
148
- export const secp256k1 = {
149
- p: 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,
150
- a: [7n, 0n],
151
- g: [
152
- 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,
153
- 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n
154
- ],
155
- n: 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,
156
- };
157
- /**
158
- * https://neuromancer.sk/std/secg/secp256r1
159
- *
160
- * @type { Init }
161
- */
162
- export const secp256r1 = {
163
- p: 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffffn,
164
- a: [
165
- 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604bn, //< b
166
- 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffcn, //< a
167
- ],
168
- g: [
169
- 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296n, //< x
170
- 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5n, //< y
171
- ],
172
- n: 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n,
173
- };
@@ -1,5 +0,0 @@
1
- declare namespace _default {
2
- function example(): void;
3
- function test(): void;
4
- }
5
- export default _default;
@@ -1,78 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- const { curve, secp256k1, secp192r1, secp256r1, eq } = _;
3
- export default {
4
- example: () => {
5
- /** @type {_.Init} */
6
- const curveParams = {
7
- p: 23n,
8
- a: [0n, 1n],
9
- g: [1n, 1n],
10
- n: 19n
11
- };
12
- const c = curve(curveParams);
13
- // Access curve operations
14
- const point = c.add([1n, 1n])([2n, 5n]); // Add two points
15
- const negPoint = c.neg([1n, 1n]); // Negate a point
16
- const mulPoint = c.mul([1n, 1n])(3n); // Multiply a point by 3
17
- },
18
- test: () => {
19
- /** @type {(c: _.Init) => void} */
20
- const test_curve = c => {
21
- const { g } = c;
22
- const { mul, neg, pf: { abs }, y: yf, nf: { p: n } } = curve(c);
23
- /** @type {(p: _.Point) => void} */
24
- const point_check = p => {
25
- if (p === null) {
26
- throw 'p === null';
27
- }
28
- const [x, y] = p;
29
- const ye = yf(x);
30
- if (ye === null) {
31
- throw 'ye === null';
32
- }
33
- if (abs(ye) !== abs(y)) {
34
- throw 'ye';
35
- }
36
- };
37
- point_check(g);
38
- point_check(neg(g));
39
- /** @type {(p: _.Point) => void} */
40
- const test_mul = p => {
41
- if (mul(p)(0n) !== null) {
42
- throw 'O';
43
- }
44
- if (mul(p)(1n) !== p) {
45
- throw 'p';
46
- }
47
- if (mul(p)(n) !== null) {
48
- throw 'n';
49
- }
50
- const pn = neg(p);
51
- if (!eq(mul(p)(n - 1n))(pn)) {
52
- throw 'n - 1';
53
- }
54
- /** @type {(s: bigint) => void} */
55
- const f = s => {
56
- const r = mul(p)(s);
57
- point_check(r);
58
- const rn = mul(pn)(s);
59
- point_check(rn);
60
- if (!eq(r)(neg(rn))) {
61
- throw 'r != -rn';
62
- }
63
- };
64
- f(2n);
65
- f(3n);
66
- f(4n << 128n);
67
- f((5n << 128n) + 6n);
68
- f(7n << 128n);
69
- f((8n << 128n) + 9n);
70
- };
71
- test_mul(g);
72
- test_mul(neg(g));
73
- };
74
- test_curve(secp256k1);
75
- test_curve(secp192r1);
76
- test_curve(secp256r1);
77
- }
78
- };
@@ -1,15 +0,0 @@
1
- /** @type {(input: readonly number[]) => (bits: number) => HashInput} */
2
- export const padding: (input: readonly number[]) => (bits: number) => HashInput;
3
- /** @type {(input: readonly number[]) => (bitsCount: number) => Hash8} */
4
- export const computeSha256: (input: readonly number[]) => (bitsCount: number) => Hash8;
5
- /** @type {(input: readonly number[]) => (bitsCount: number) => Hash8} */
6
- export const computeSha224: (input: readonly number[]) => (bitsCount: number) => Hash8;
7
- export const compress256: (data: Array16) => Hash8;
8
- export const compress224: (data: Array16) => Hash8;
9
- export type HashInput = {
10
- readonly f: (i: number) => number;
11
- readonly length: number;
12
- };
13
- export type Hash8 = array.Array8<number>;
14
- export type Array16 = array.Array16<number>;
15
- import * as array from '../../types/array/module.f.mjs';