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,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';