functionalscript 0.1.609 → 0.2.1

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 (393) hide show
  1. package/com/cpp/module.f.mjs +20 -25
  2. package/com/cpp/testlib.f.mjs +3 -4
  3. package/com/cs/module.f.mjs +18 -23
  4. package/com/cs/testlib.f.mjs +3 -5
  5. package/com/rust/module.f.mjs +25 -30
  6. package/com/rust/testlib.f.mjs +3 -5
  7. package/com/test/build.f.mjs +2 -2
  8. package/com/test/build.mjs +4 -4
  9. package/com/types/module.f.mjs +5 -12
  10. package/commonjs/build/module.f.mjs +23 -28
  11. package/commonjs/build/test.f.mjs +4 -4
  12. package/commonjs/module/function/module.f.mjs +0 -2
  13. package/commonjs/module/module.f.mjs +2 -9
  14. package/commonjs/module.f.mjs +0 -2
  15. package/commonjs/module.mjs +2 -7
  16. package/commonjs/package/dependencies/module.f.mjs +5 -10
  17. package/commonjs/package/dependencies/test.f.mjs +1 -1
  18. package/commonjs/package/module.f.mjs +6 -13
  19. package/commonjs/package/test.f.mjs +1 -1
  20. package/commonjs/path/module.f.mjs +12 -23
  21. package/commonjs/path/test.f.mjs +11 -11
  22. package/commonjs/test.mjs +1 -1
  23. package/dev/module.f.mjs +1 -4
  24. package/dev/module.mjs +1 -1
  25. package/dev/test/module.f.mjs +4 -6
  26. package/djs/module.f.mjs +12 -19
  27. package/djs/parser/module.f.mjs +18 -24
  28. package/djs/parser/test.f.mjs +9 -9
  29. package/djs/test.f.mjs +4 -4
  30. package/djs/tokenizer/module.f.mjs +18 -23
  31. package/djs/tokenizer/test.f.mjs +6 -6
  32. package/fsc/module.f.mjs +17 -24
  33. package/fsc/test.f.mjs +3 -3
  34. package/fsm/module.f.mjs +27 -38
  35. package/fsm/test.f.mjs +8 -8
  36. package/html/module.f.mjs +14 -23
  37. package/html/test.f.mjs +4 -4
  38. package/js/tokenizer/module.f.mjs +55 -62
  39. package/js/tokenizer/test.f.mjs +6 -6
  40. package/json/module.f.mjs +18 -31
  41. package/json/parser/module.f.mjs +9 -14
  42. package/json/parser/test.f.mjs +7 -7
  43. package/json/serializer/module.f.mjs +14 -29
  44. package/json/serializer/test.f.mjs +2 -2
  45. package/json/test.f.mjs +3 -3
  46. package/json/tokenizer/module.f.mjs +14 -19
  47. package/json/tokenizer/test.f.mjs +6 -6
  48. package/jsr.json +59 -59
  49. package/nodejs/version/main.mjs +1 -1
  50. package/nodejs/version/module.f.mjs +2 -7
  51. package/nodejs/version/test.f.mjs +3 -3
  52. package/out/com/cpp/module.f.d.mts +4 -0
  53. package/out/com/cpp/module.f.mjs +123 -0
  54. package/out/com/cpp/test.f.mjs +40 -0
  55. package/out/com/cpp/testlib.f.mjs +7 -0
  56. package/out/com/cs/module.f.d.mts +4 -0
  57. package/out/com/cs/module.f.mjs +95 -0
  58. package/out/com/cs/test.f.mjs +43 -0
  59. package/out/com/cs/testlib.f.mjs +7 -0
  60. package/{com → out/com}/rust/module.f.d.mts +3 -7
  61. package/out/com/rust/module.f.mjs +213 -0
  62. package/out/com/rust/test.f.mjs +123 -0
  63. package/out/com/rust/testlib.f.mjs +7 -0
  64. package/{com → out/com}/test/build.f.d.mts +2 -2
  65. package/out/com/test/build.f.mjs +98 -0
  66. package/out/com/test/build.mjs +40 -0
  67. package/{com → out/com}/types/module.f.d.mts +5 -10
  68. package/out/com/types/module.f.mjs +51 -0
  69. package/out/com/types/testlib.f.mjs +30 -0
  70. package/out/commonjs/build/module.f.d.mts +20 -0
  71. package/out/commonjs/build/module.f.mjs +107 -0
  72. package/out/commonjs/build/test.f.mjs +102 -0
  73. package/{commonjs → out/commonjs}/module/function/module.f.d.mts +0 -2
  74. package/out/commonjs/module/function/module.f.mjs +15 -0
  75. package/{commonjs → out/commonjs}/module/module.f.d.mts +16 -21
  76. package/out/commonjs/module/module.f.mjs +48 -0
  77. package/out/commonjs/module.d.mts +3 -0
  78. package/{commonjs → out/commonjs}/module.f.d.mts +0 -2
  79. package/out/commonjs/module.f.mjs +10 -0
  80. package/out/commonjs/module.mjs +26 -0
  81. package/out/commonjs/package/dependencies/module.f.d.mts +6 -0
  82. package/out/commonjs/package/dependencies/module.f.mjs +21 -0
  83. package/out/commonjs/package/dependencies/test.f.mjs +15 -0
  84. package/out/commonjs/package/module.f.d.mts +21 -0
  85. package/out/commonjs/package/module.f.mjs +40 -0
  86. package/out/commonjs/package/test.f.mjs +27 -0
  87. package/{commonjs → out/commonjs}/path/module.f.d.mts +25 -32
  88. package/out/commonjs/path/module.f.mjs +171 -0
  89. package/out/commonjs/path/test.f.mjs +231 -0
  90. package/out/commonjs/test.mjs +87 -0
  91. package/out/dev/index.mjs +2 -0
  92. package/out/dev/module.f.d.mts +1 -0
  93. package/out/dev/module.f.mjs +2 -0
  94. package/out/dev/module.mjs +167 -0
  95. package/{dev → out/dev}/test/module.f.d.mts +2 -3
  96. package/out/dev/test/module.f.mjs +134 -0
  97. package/out/dev/test.f.mjs +58 -0
  98. package/out/dev/test.mjs +52 -0
  99. package/{djs → out/djs}/module.f.d.mts +13 -18
  100. package/out/djs/module.f.mjs +75 -0
  101. package/{djs → out/djs}/parser/module.f.d.mts +11 -15
  102. package/out/djs/parser/module.f.mjs +432 -0
  103. package/out/djs/parser/test.f.mjs +535 -0
  104. package/out/djs/test.f.mjs +84 -0
  105. package/out/djs/tokenizer/module.f.d.mts +13 -0
  106. package/out/djs/tokenizer/module.f.mjs +87 -0
  107. package/out/djs/tokenizer/test.f.mjs +480 -0
  108. package/out/fsc/module.f.d.mts +7 -0
  109. package/out/fsc/module.f.mjs +105 -0
  110. package/out/fsc/test.f.mjs +19 -0
  111. package/out/fsm/module.f.d.mts +14 -0
  112. package/out/fsm/module.f.mjs +80 -0
  113. package/out/fsm/test.f.mjs +138 -0
  114. package/out/html/module.f.d.mts +15 -0
  115. package/out/html/module.f.mjs +94 -0
  116. package/out/html/test.f.mjs +45 -0
  117. package/out/issues/test.f.mjs +66 -0
  118. package/{js → out/js}/tokenizer/module.f.d.mts +10 -15
  119. package/out/js/tokenizer/module.f.mjs +686 -0
  120. package/out/js/tokenizer/test.f.mjs +844 -0
  121. package/out/json/module.f.d.mts +33 -0
  122. package/out/json/module.f.mjs +89 -0
  123. package/{json → out/json}/parser/module.f.d.mts +9 -13
  124. package/out/json/parser/module.f.mjs +224 -0
  125. package/out/json/parser/test.f.mjs +321 -0
  126. package/out/json/serializer/module.f.d.mts +36 -0
  127. package/out/json/serializer/module.f.mjs +67 -0
  128. package/out/json/serializer/test.f.mjs +87 -0
  129. package/out/json/test.f.mjs +61 -0
  130. package/out/json/tokenizer/module.f.d.mts +13 -0
  131. package/out/json/tokenizer/module.f.mjs +78 -0
  132. package/out/json/tokenizer/test.f.mjs +420 -0
  133. package/out/nanvm-lib/tests/test.f.mjs +87 -0
  134. package/out/nodejs/version/main.mjs +3 -0
  135. package/{nodejs → out/nodejs}/version/module.f.d.mts +4 -9
  136. package/out/nodejs/version/module.f.mjs +34 -0
  137. package/out/nodejs/version/test.f.mjs +97 -0
  138. package/{prime_field → out/prime_field}/module.f.d.mts +20 -23
  139. package/out/prime_field/module.f.mjs +87 -0
  140. package/out/prime_field/test.f.mjs +145 -0
  141. package/{secp → out/secp}/module.f.d.mts +27 -28
  142. package/out/secp/module.f.mjs +113 -0
  143. package/out/secp/test.f.mjs +63 -0
  144. package/out/sha2/module.f.d.mts +15 -0
  145. package/out/sha2/module.f.mjs +172 -0
  146. package/out/sha2/test.f.mjs +86 -0
  147. package/out/text/ascii/module.f.d.mts +70 -0
  148. package/out/text/ascii/module.f.mjs +154 -0
  149. package/out/text/ascii/test.f.mjs +14 -0
  150. package/out/text/module.f.d.mts +13 -0
  151. package/out/text/module.f.mjs +19 -0
  152. package/out/text/sgr/module.f.d.mts +12 -0
  153. package/out/text/sgr/module.f.mjs +17 -0
  154. package/out/text/test.f.mjs +19 -0
  155. package/out/text/utf16/module.f.d.mts +12 -0
  156. package/out/text/utf16/module.f.mjs +86 -0
  157. package/out/text/utf16/test.f.mjs +145 -0
  158. package/out/text/utf8/module.f.d.mts +10 -0
  159. package/out/text/utf8/module.f.mjs +126 -0
  160. package/out/text/utf8/test.f.mjs +175 -0
  161. package/{types → out/types}/array/module.f.d.mts +14 -24
  162. package/out/types/array/module.f.mjs +95 -0
  163. package/out/types/array/test.f.mjs +116 -0
  164. package/out/types/bigfloat/module.f.d.mts +6 -0
  165. package/out/types/bigfloat/module.f.mjs +77 -0
  166. package/out/types/bigfloat/test.f.mjs +349 -0
  167. package/out/types/bigint/module.f.d.mts +29 -0
  168. package/{types/bigint/module.f.d.mts → out/types/bigint/module.f.mjs} +64 -27
  169. package/out/types/bigint/test.f.mjs +192 -0
  170. package/{types → out/types}/btree/find/module.f.d.mts +20 -26
  171. package/out/types/btree/find/module.f.mjs +137 -0
  172. package/out/types/btree/find/test.f.mjs +156 -0
  173. package/out/types/btree/module.f.d.mts +5 -0
  174. package/out/types/btree/module.f.mjs +34 -0
  175. package/{types → out/types}/btree/remove/module.f.d.mts +7 -12
  176. package/out/types/btree/remove/module.f.mjs +209 -0
  177. package/out/types/btree/remove/test.f.mjs +638 -0
  178. package/{types → out/types}/btree/set/module.f.d.mts +3 -7
  179. package/out/types/btree/set/module.f.mjs +114 -0
  180. package/out/types/btree/set/test.f.mjs +390 -0
  181. package/out/types/btree/test.f.mjs +83 -0
  182. package/{types → out/types}/btree/types/module.f.d.mts +0 -2
  183. package/out/types/btree/types/module.f.mjs +50 -0
  184. package/out/types/byte_set/module.f.d.mts +25 -0
  185. package/out/types/byte_set/module.f.mjs +42 -0
  186. package/out/types/byte_set/test.f.mjs +123 -0
  187. package/{types → out/types}/function/compare/module.f.d.mts +9 -15
  188. package/out/types/function/compare/module.f.mjs +22 -0
  189. package/out/types/function/compare/test.f.mjs +8 -0
  190. package/{types → out/types}/function/module.f.d.mts +20 -27
  191. package/out/types/function/module.f.mjs +44 -0
  192. package/{types → out/types}/function/operator/module.f.d.mts +28 -43
  193. package/out/types/function/operator/module.f.mjs +60 -0
  194. package/out/types/function/test.f.mjs +15 -0
  195. package/out/types/list/module.f.d.mts +82 -0
  196. package/out/types/list/module.f.mjs +269 -0
  197. package/out/types/list/test.f.mjs +401 -0
  198. package/out/types/map/module.f.d.mts +21 -0
  199. package/out/types/map/module.f.mjs +54 -0
  200. package/out/types/map/test.f.mjs +115 -0
  201. package/out/types/nibble_set/module.f.d.mts +16 -0
  202. package/out/types/nibble_set/module.f.mjs +19 -0
  203. package/out/types/nibble_set/test.f.mjs +90 -0
  204. package/out/types/nullable/module.f.d.mts +9 -0
  205. package/out/types/nullable/module.f.mjs +9 -0
  206. package/out/types/nullable/test.f.mjs +12 -0
  207. package/out/types/number/module.f.d.mts +7 -0
  208. package/out/types/number/module.f.mjs +12 -0
  209. package/out/types/number/test.f.mjs +126 -0
  210. package/out/types/object/module.f.d.mts +22 -0
  211. package/out/types/object/module.f.mjs +27 -0
  212. package/out/types/object/test.f.mjs +17 -0
  213. package/out/types/range/module.f.d.mts +6 -0
  214. package/out/types/range/module.f.mjs +6 -0
  215. package/out/types/range/test.f.mjs +18 -0
  216. package/{types → out/types}/range_map/module.f.d.mts +9 -15
  217. package/out/types/range_map/module.f.mjs +84 -0
  218. package/out/types/range_map/test.f.mjs +201 -0
  219. package/out/types/result/module.d.mts +7 -0
  220. package/{types → out/types}/result/module.f.d.mts +6 -12
  221. package/out/types/result/module.f.mjs +25 -0
  222. package/out/types/result/module.mjs +16 -0
  223. package/{types → out/types}/sorted_list/module.f.d.mts +22 -28
  224. package/out/types/sorted_list/module.f.mjs +102 -0
  225. package/out/types/sorted_list/test.f.mjs +66 -0
  226. package/{types → out/types}/sorted_set/module.f.d.mts +6 -12
  227. package/out/types/sorted_set/module.f.mjs +29 -0
  228. package/out/types/sorted_set/test.f.mjs +80 -0
  229. package/out/types/string/module.f.d.mts +9 -0
  230. package/out/types/string/module.f.mjs +17 -0
  231. package/out/types/string/test.f.mjs +58 -0
  232. package/out/types/string_set/module.f.d.mts +13 -0
  233. package/out/types/string_set/module.f.mjs +29 -0
  234. package/out/types/string_set/test.f.mjs +65 -0
  235. package/package.json +5 -4
  236. package/prime_field/module.f.mjs +9 -12
  237. package/prime_field/test.f.mjs +1 -1
  238. package/secp/module.f.mjs +38 -39
  239. package/secp/test.f.mjs +4 -4
  240. package/sha2/module.f.mjs +7 -20
  241. package/sha2/test.f.mjs +4 -4
  242. package/text/ascii/module.f.mjs +5 -10
  243. package/text/ascii/test.f.mjs +3 -3
  244. package/text/module.f.mjs +7 -14
  245. package/text/sgr/module.f.mjs +2 -4
  246. package/text/test.f.mjs +3 -3
  247. package/text/utf16/module.f.mjs +17 -28
  248. package/text/utf16/test.f.mjs +5 -5
  249. package/text/utf8/module.f.mjs +9 -16
  250. package/text/utf8/test.f.mjs +4 -4
  251. package/tsconfig.json +2 -2
  252. package/types/array/module.f.mjs +8 -25
  253. package/types/array/test.f.mjs +3 -3
  254. package/types/bigfloat/module.f.mjs +3 -10
  255. package/types/bigfloat/test.f.mjs +1 -1
  256. package/types/bigint/module.f.mjs +11 -30
  257. package/types/bigint/test.f.mjs +1 -1
  258. package/types/btree/find/module.f.mjs +8 -17
  259. package/types/btree/find/test.f.mjs +7 -7
  260. package/types/btree/module.f.mjs +6 -11
  261. package/types/btree/remove/module.f.mjs +10 -17
  262. package/types/btree/remove/test.f.mjs +5 -5
  263. package/types/btree/set/module.f.mjs +4 -9
  264. package/types/btree/set/test.f.mjs +4 -4
  265. package/types/btree/test.f.mjs +9 -9
  266. package/types/btree/types/module.f.mjs +0 -2
  267. package/types/byte_set/module.f.mjs +14 -39
  268. package/types/byte_set/test.f.mjs +5 -5
  269. package/types/function/compare/module.f.mjs +3 -12
  270. package/types/function/compare/test.f.mjs +1 -1
  271. package/types/function/module.f.mjs +4 -15
  272. package/types/function/operator/module.f.mjs +14 -41
  273. package/types/function/test.f.mjs +1 -1
  274. package/types/list/module.f.mjs +45 -114
  275. package/types/list/test.f.mjs +10 -10
  276. package/types/map/module.f.mjs +15 -30
  277. package/types/map/test.f.mjs +2 -2
  278. package/types/nibble_set/module.f.mjs +7 -24
  279. package/types/nibble_set/test.f.mjs +2 -2
  280. package/types/nullable/module.f.mjs +2 -9
  281. package/types/nullable/test.f.mjs +1 -1
  282. package/types/number/module.f.mjs +8 -19
  283. package/types/number/test.f.mjs +1 -1
  284. package/types/object/module.f.mjs +9 -20
  285. package/types/object/test.f.mjs +1 -1
  286. package/types/range/module.f.mjs +2 -9
  287. package/types/range/test.f.mjs +1 -1
  288. package/types/range_map/module.f.mjs +9 -18
  289. package/types/range_map/test.f.mjs +32 -32
  290. package/types/result/module.f.mjs +3 -12
  291. package/types/result/module.mjs +2 -2
  292. package/types/sorted_list/module.f.mjs +10 -19
  293. package/types/sorted_list/test.f.mjs +7 -7
  294. package/types/sorted_set/module.f.mjs +7 -16
  295. package/types/sorted_set/test.f.mjs +7 -7
  296. package/types/string/module.f.mjs +10 -21
  297. package/types/string/test.f.mjs +2 -2
  298. package/types/string_set/module.f.mjs +12 -27
  299. package/types/string_set/test.f.mjs +1 -1
  300. package/com/cpp/module.f.d.mts +0 -8
  301. package/com/cs/module.f.d.mts +0 -8
  302. package/commonjs/build/module.f.d.mts +0 -24
  303. package/commonjs/module.d.mts +0 -7
  304. package/commonjs/package/dependencies/module.f.d.mts +0 -10
  305. package/commonjs/package/module.f.d.mts +0 -27
  306. package/dev/module.f.d.mts +0 -4
  307. package/djs/tokenizer/module.f.d.mts +0 -17
  308. package/fsc/module.f.d.mts +0 -12
  309. package/fsm/module.f.d.mts +0 -21
  310. package/html/module.f.d.mts +0 -20
  311. package/json/module.f.d.mts +0 -41
  312. package/json/serializer/module.f.d.mts +0 -45
  313. package/json/tokenizer/module.f.d.mts +0 -17
  314. package/sha2/module.f.d.mts +0 -23
  315. package/text/ascii/module.f.d.mts +0 -73
  316. package/text/module.f.d.mts +0 -18
  317. package/text/sgr/module.f.d.mts +0 -14
  318. package/text/utf16/module.f.d.mts +0 -19
  319. package/text/utf8/module.f.d.mts +0 -15
  320. package/types/bigfloat/module.f.d.mts +0 -11
  321. package/types/btree/module.f.d.mts +0 -9
  322. package/types/byte_set/module.f.d.mts +0 -38
  323. package/types/list/module.f.d.mts +0 -117
  324. package/types/map/module.f.d.mts +0 -30
  325. package/types/nibble_set/module.f.d.mts +0 -26
  326. package/types/nullable/module.f.d.mts +0 -14
  327. package/types/number/module.f.d.mts +0 -13
  328. package/types/object/module.f.d.mts +0 -29
  329. package/types/range/module.f.d.mts +0 -11
  330. package/types/result/module.d.mts +0 -7
  331. package/types/string/module.f.d.mts +0 -15
  332. package/types/string_set/module.f.d.mts +0 -21
  333. /package/{com → out/com}/cpp/test.f.d.mts +0 -0
  334. /package/{com → out/com}/cpp/testlib.f.d.mts +0 -0
  335. /package/{com → out/com}/cs/test.f.d.mts +0 -0
  336. /package/{com → out/com}/cs/testlib.f.d.mts +0 -0
  337. /package/{com → out/com}/rust/test.f.d.mts +0 -0
  338. /package/{com → out/com}/rust/testlib.f.d.mts +0 -0
  339. /package/{com → out/com}/test/build.d.mts +0 -0
  340. /package/{com → out/com}/types/testlib.f.d.mts +0 -0
  341. /package/{commonjs → out/commonjs}/build/test.f.d.mts +0 -0
  342. /package/{commonjs → out/commonjs}/package/dependencies/test.f.d.mts +0 -0
  343. /package/{commonjs → out/commonjs}/package/test.f.d.mts +0 -0
  344. /package/{commonjs → out/commonjs}/path/test.f.d.mts +0 -0
  345. /package/{commonjs → out/commonjs}/test.d.mts +0 -0
  346. /package/{dev → out/dev}/index.d.mts +0 -0
  347. /package/{dev → out/dev}/module.d.mts +0 -0
  348. /package/{dev → out/dev}/test.d.mts +0 -0
  349. /package/{dev → out/dev}/test.f.d.mts +0 -0
  350. /package/{djs → out/djs}/parser/test.f.d.mts +0 -0
  351. /package/{djs → out/djs}/test.f.d.mts +0 -0
  352. /package/{djs → out/djs}/tokenizer/test.f.d.mts +0 -0
  353. /package/{fsc → out/fsc}/test.f.d.mts +0 -0
  354. /package/{fsm → out/fsm}/test.f.d.mts +0 -0
  355. /package/{html → out/html}/test.f.d.mts +0 -0
  356. /package/{issues → out/issues}/test.f.d.mts +0 -0
  357. /package/{js → out/js}/tokenizer/test.f.d.mts +0 -0
  358. /package/{json → out/json}/parser/test.f.d.mts +0 -0
  359. /package/{json → out/json}/serializer/test.f.d.mts +0 -0
  360. /package/{json → out/json}/test.f.d.mts +0 -0
  361. /package/{json → out/json}/tokenizer/test.f.d.mts +0 -0
  362. /package/{nanvm-lib → out/nanvm-lib}/tests/test.f.d.mts +0 -0
  363. /package/{nodejs → out/nodejs}/version/main.d.mts +0 -0
  364. /package/{nodejs → out/nodejs}/version/test.f.d.mts +0 -0
  365. /package/{prime_field → out/prime_field}/test.f.d.mts +0 -0
  366. /package/{secp → out/secp}/test.f.d.mts +0 -0
  367. /package/{sha2 → out/sha2}/test.f.d.mts +0 -0
  368. /package/{text → out/text}/ascii/test.f.d.mts +0 -0
  369. /package/{text → out/text}/test.f.d.mts +0 -0
  370. /package/{text → out/text}/utf16/test.f.d.mts +0 -0
  371. /package/{text → out/text}/utf8/test.f.d.mts +0 -0
  372. /package/{types → out/types}/array/test.f.d.mts +0 -0
  373. /package/{types → out/types}/bigfloat/test.f.d.mts +0 -0
  374. /package/{types → out/types}/bigint/test.f.d.mts +0 -0
  375. /package/{types → out/types}/btree/find/test.f.d.mts +0 -0
  376. /package/{types → out/types}/btree/remove/test.f.d.mts +0 -0
  377. /package/{types → out/types}/btree/set/test.f.d.mts +0 -0
  378. /package/{types → out/types}/btree/test.f.d.mts +0 -0
  379. /package/{types → out/types}/byte_set/test.f.d.mts +0 -0
  380. /package/{types → out/types}/function/compare/test.f.d.mts +0 -0
  381. /package/{types → out/types}/function/test.f.d.mts +0 -0
  382. /package/{types → out/types}/list/test.f.d.mts +0 -0
  383. /package/{types → out/types}/map/test.f.d.mts +0 -0
  384. /package/{types → out/types}/nibble_set/test.f.d.mts +0 -0
  385. /package/{types → out/types}/nullable/test.f.d.mts +0 -0
  386. /package/{types → out/types}/number/test.f.d.mts +0 -0
  387. /package/{types → out/types}/object/test.f.d.mts +0 -0
  388. /package/{types → out/types}/range/test.f.d.mts +0 -0
  389. /package/{types → out/types}/range_map/test.f.d.mts +0 -0
  390. /package/{types → out/types}/sorted_list/test.f.d.mts +0 -0
  391. /package/{types → out/types}/sorted_set/test.f.d.mts +0 -0
  392. /package/{types → out/types}/string/test.f.d.mts +0 -0
  393. /package/{types → out/types}/string_set/test.f.d.mts +0 -0
@@ -0,0 +1,116 @@
1
+ import * as _ from './module.f.mjs';
2
+ import * as json from '../../json/module.f.mjs';
3
+ import * as o from '../object/module.f.mjs';
4
+ const { sort } = o;
5
+ const stringify = json.stringify(sort);
6
+ export default {
7
+ stringify: () => {
8
+ const result = stringify([1, 20, 300]);
9
+ if (result !== '[1,20,300]') {
10
+ throw result;
11
+ }
12
+ },
13
+ at: [
14
+ () => {
15
+ const result = _.at(2)([1, 20, 300]);
16
+ if (result !== 300) {
17
+ throw result;
18
+ }
19
+ },
20
+ () => {
21
+ const result = _.at(3)([1, 20, 300]);
22
+ if (result !== null) {
23
+ throw result;
24
+ }
25
+ }
26
+ ],
27
+ first: [
28
+ () => {
29
+ const result = _.first([1, 20, 300]);
30
+ if (result !== 1) {
31
+ throw result;
32
+ }
33
+ },
34
+ () => {
35
+ const result = _.first([]);
36
+ if (result !== null) {
37
+ throw result;
38
+ }
39
+ }
40
+ ],
41
+ last: [
42
+ () => {
43
+ const result = _.last([1, 20, 300]);
44
+ if (result !== 300) {
45
+ throw result;
46
+ }
47
+ },
48
+ () => {
49
+ const result = _.last([]);
50
+ if (result !== null) {
51
+ throw result;
52
+ }
53
+ }
54
+ ],
55
+ head: [
56
+ () => {
57
+ const result = _.head([1, 20, 300]);
58
+ if (result === null) {
59
+ throw result;
60
+ }
61
+ const str = stringify(result);
62
+ if (str !== '[1,20]') {
63
+ throw str;
64
+ }
65
+ },
66
+ () => {
67
+ const result = _.head([]);
68
+ if (result !== null) {
69
+ throw result;
70
+ }
71
+ }
72
+ ],
73
+ tail: [
74
+ () => {
75
+ const result = _.tail([1, 20, 300]);
76
+ const str = stringify(result);
77
+ if (str !== '[20,300]') {
78
+ throw str;
79
+ }
80
+ },
81
+ () => {
82
+ const result = _.tail([]);
83
+ if (result !== null) {
84
+ throw result;
85
+ }
86
+ }
87
+ ],
88
+ splitFirst: [
89
+ () => {
90
+ const result = _.splitFirst([1, 20, 300]);
91
+ const str = stringify(result);
92
+ if (str !== '[1,[20,300]]') {
93
+ throw str;
94
+ }
95
+ },
96
+ () => {
97
+ const result = _.splitFirst([]);
98
+ if (result !== null) {
99
+ throw result;
100
+ }
101
+ },
102
+ () => {
103
+ const result = _.splitLast([1, 20, 300]);
104
+ const str = stringify(result);
105
+ if (str !== '[[1,20],300]') {
106
+ throw str;
107
+ }
108
+ },
109
+ () => {
110
+ const result = _.splitLast([]);
111
+ if (result !== null) {
112
+ throw result;
113
+ }
114
+ }
115
+ ]
116
+ };
@@ -0,0 +1,6 @@
1
+ /** @type {(b: BigFloat) => (mul: bigint) => BigFloat} */
2
+ export const multiply: (b: BigFloat) => (mul: bigint) => BigFloat;
3
+ /** @type {(dec: BigFloat) => BigFloat} */
4
+ export const decToBin: (dec: BigFloat) => BigFloat;
5
+ export type BigFloat = readonly [bigint, number];
6
+ export type BigFloatWithRemainder = readonly [BigFloat, bigint];
@@ -0,0 +1,77 @@
1
+ // @ts-self-types="./module.f.d.mts"
2
+ import * as bi from '../bigint/module.f.mjs';
3
+ const { abs, sign } = bi;
4
+ /** @typedef {readonly[bigint,number]} BigFloat */
5
+ /** @typedef {readonly[BigFloat,bigint]} BigFloatWithRemainder */
6
+ const twoPow53 = 9007199254740992n;
7
+ const twoPow54 = 18014398509481984n;
8
+ /** @type {(value: BigFloat) => (min: bigint) => BigFloat} */
9
+ const increaseMantissa = ([m, e]) => min => {
10
+ if (m === 0n) {
11
+ return [m, e];
12
+ }
13
+ const s = sign(m);
14
+ m = abs(m);
15
+ while (true) {
16
+ if (m >= min) {
17
+ return [BigInt(s) * m, e];
18
+ }
19
+ m = m << 1n;
20
+ e--;
21
+ }
22
+ };
23
+ /** @type {(value: BigFloat) => (max: bigint) => BigFloat} */
24
+ const decreaseMantissa = ([m, e]) => max => {
25
+ if (m === 0n) {
26
+ return [m, e];
27
+ }
28
+ const s = sign(m);
29
+ m = abs(m);
30
+ while (true) {
31
+ if (m < max) {
32
+ return [BigInt(s) * m, e];
33
+ }
34
+ m = m >> 1n;
35
+ e++;
36
+ }
37
+ };
38
+ /** @type {(base: bigint) => (exp: number) => bigint} */
39
+ const pow = base => exp => base ** BigInt(exp);
40
+ const pow5 = pow(5n);
41
+ /** @type {(b: BigFloat) => (mul: bigint) => BigFloat} */
42
+ export const multiply = ([m, e]) => mul => [m * mul, e];
43
+ /** @type {(b: BigFloat) => (div: bigint) => BigFloatWithRemainder} */
44
+ const divide = ([m, e]) => div => [[m / div, e], m % div];
45
+ /** @type {(b: BigFloatWithRemainder) => BigFloat} */
46
+ const round53 = ([[m, e], r]) => {
47
+ const mabs = abs(m);
48
+ const s = BigInt(sign(m));
49
+ const [m54, e54] = decreaseMantissa([mabs, e])(twoPow54);
50
+ const o54 = m54 & 1n;
51
+ const m53 = m54 >> 1n;
52
+ const e53 = e54 + 1;
53
+ if (o54 === 1n && r === 0n && mabs === m54 >> BigInt(e - e54)) {
54
+ const odd = m53 & 1n;
55
+ return multiply([m53 + odd, e53])(s);
56
+ }
57
+ return multiply([m53 + o54, e53])(s);
58
+ };
59
+ /** @type {(dec: BigFloat) => BigFloat} */
60
+ export const decToBin = dec => {
61
+ if (dec[0] === 0n) {
62
+ return [0n, 0];
63
+ }
64
+ if (dec[1] >= 0) {
65
+ /** @type {BigFloat} */
66
+ const bin = [dec[0] * pow5(dec[1]), dec[1]];
67
+ const inc = increaseMantissa(bin)(twoPow53);
68
+ return round53([inc, 0n]);
69
+ }
70
+ const p = pow5(-dec[1]);
71
+ const [m, e] = increaseMantissa(dec)(p * twoPow53);
72
+ const mAbs = abs(m);
73
+ const s = BigInt(sign(m));
74
+ const qr = divide([mAbs, e])(p);
75
+ const r53 = round53(qr);
76
+ return multiply(r53)(s);
77
+ };
@@ -0,0 +1,349 @@
1
+ import * as _ from './module.f.mjs';
2
+ const { decToBin } = _;
3
+ export default {
4
+ decToBin: [
5
+ () => {
6
+ const result = decToBin([0n, 0]);
7
+ if (result[0] !== 0n) {
8
+ throw result[0].toString(2);
9
+ }
10
+ if (result[1] !== 0) {
11
+ throw result[1];
12
+ }
13
+ },
14
+ () => {
15
+ const result = decToBin([0n, 10]);
16
+ if (result[0] !== 0n) {
17
+ throw result[0].toString(2);
18
+ }
19
+ if (result[1] !== 0) {
20
+ throw result[1];
21
+ }
22
+ },
23
+ () => {
24
+ const result = decToBin([0n, -10]);
25
+ if (result[0] !== 0n) {
26
+ throw result[0].toString(2);
27
+ }
28
+ if (result[1] !== 0) {
29
+ throw result[1];
30
+ }
31
+ },
32
+ () => {
33
+ const result = decToBin([1n, 0]);
34
+ if (result[0] !== 4503599627370496n) {
35
+ throw result[0].toString(2);
36
+ }
37
+ if (result[1] !== -52) {
38
+ throw result[1];
39
+ }
40
+ },
41
+ () => {
42
+ const result = decToBin([1n, 1]);
43
+ if (result[0] !== 5629499534213120n) {
44
+ throw result[0].toString(2);
45
+ }
46
+ if (result[1] !== -49) {
47
+ throw result[1];
48
+ }
49
+ },
50
+ () => {
51
+ const result = decToBin([1000n, -2]);
52
+ if (result[0] !== 5629499534213120n) {
53
+ throw result[0].toString(2);
54
+ }
55
+ if (result[1] !== -49) {
56
+ throw result[1];
57
+ }
58
+ },
59
+ () => {
60
+ const result = decToBin([1n, -1]);
61
+ if (result[0] !== 7205759403792794n) {
62
+ throw result[0].toString(2);
63
+ } //+1
64
+ if (result[1] !== -56) {
65
+ throw result[1];
66
+ }
67
+ },
68
+ () => {
69
+ const result = decToBin([-1n, 0]);
70
+ if (result[0] !== -4503599627370496n) {
71
+ throw result[0].toString(2);
72
+ }
73
+ if (result[1] !== -52) {
74
+ throw result[1];
75
+ }
76
+ },
77
+ () => {
78
+ const result = decToBin([-1n, 1]);
79
+ if (result[0] !== -5629499534213120n) {
80
+ throw result[0].toString(2);
81
+ }
82
+ if (result[1] !== -49) {
83
+ throw result[1];
84
+ }
85
+ },
86
+ () => {
87
+ const result = decToBin([-1000n, -2]);
88
+ if (result[0] !== -5629499534213120n) {
89
+ throw result[0].toString(2);
90
+ }
91
+ if (result[1] !== -49) {
92
+ throw result[1];
93
+ }
94
+ },
95
+ () => {
96
+ const result = decToBin([-1n, -1]);
97
+ if (result[0] !== -7205759403792794n) {
98
+ throw result[0].toString(2);
99
+ } //+1
100
+ if (result[1] !== -56) {
101
+ throw result[1];
102
+ }
103
+ },
104
+ () => {
105
+ const result = decToBin([9007199254740993n, 0]); //54bits (...0.1)
106
+ if (result[0] !== 4503599627370496n) {
107
+ throw result[0].toString(2);
108
+ }
109
+ if (result[1] !== 1) {
110
+ throw result[1];
111
+ }
112
+ },
113
+ () => {
114
+ const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
115
+ if (result[0] !== -4503599627370498n) {
116
+ throw result[0].toString(2);
117
+ }
118
+ if (result[1] !== 1) {
119
+ throw result[1];
120
+ }
121
+ },
122
+ () => {
123
+ const result = decToBin([-9007199254740993n, 0]); //54bits (...0.1)
124
+ if (result[0] !== -4503599627370496n) {
125
+ throw result[0].toString(2);
126
+ }
127
+ if (result[1] !== 1) {
128
+ throw result[1];
129
+ }
130
+ },
131
+ () => {
132
+ const result = decToBin([-9007199254740995n, 0]); //54bits (...1.1)
133
+ if (result[0] !== -4503599627370498n) {
134
+ throw result[0].toString(2);
135
+ }
136
+ if (result[1] !== 1) {
137
+ throw result[1];
138
+ }
139
+ },
140
+ () => {
141
+ const result = decToBin([18014398509481985n, 0]); //55bits (...0.01)
142
+ if (result[0] !== 4503599627370496n) {
143
+ throw result[0].toString(2);
144
+ }
145
+ if (result[1] !== 2) {
146
+ throw result[1];
147
+ }
148
+ },
149
+ () => {
150
+ const result = decToBin([18014398509481986n, 0]); //55bits (...0.10)
151
+ if (result[0] !== 4503599627370496n) {
152
+ throw result[0].toString(2);
153
+ }
154
+ if (result[1] !== 2) {
155
+ throw result[1];
156
+ }
157
+ },
158
+ () => {
159
+ const result = decToBin([18014398509481990n, 0]); //55bits (...1.10)
160
+ if (result[0] !== 4503599627370498n) {
161
+ throw result[0].toString(2);
162
+ }
163
+ if (result[1] !== 2) {
164
+ throw result[1];
165
+ }
166
+ },
167
+ () => {
168
+ const result = decToBin([18014398509481987n, 0]); //55bits (0.11)
169
+ if (result[0] !== 4503599627370497n) {
170
+ throw result[0].toString(2);
171
+ }
172
+ if (result[1] !== 2) {
173
+ throw result[1];
174
+ }
175
+ },
176
+ ],
177
+ roundingPositive: [
178
+ () => {
179
+ const result = decToBin([288230376151711745n, -1]);
180
+ // reminder = 0
181
+ // m = 11001100110011001100110011001100110011001100110011001.101
182
+ // rounding up
183
+ if (result[0] !== 7205759403792794n) {
184
+ throw result[0].toString(2);
185
+ }
186
+ if (result[1] !== 2) {
187
+ throw result[1];
188
+ }
189
+ },
190
+ () => {
191
+ const result = decToBin([288230376151711760n, -1]);
192
+ // reminder = 0
193
+ // m = 11001100110011001100110011001100110011001100110011010.000
194
+ // rounding down
195
+ if (result[0] !== 7205759403792794n) {
196
+ throw result[0].toString(2);
197
+ }
198
+ if (result[1] !== 2) {
199
+ throw result[1];
200
+ }
201
+ },
202
+ () => {
203
+ const result = decToBin([288230376151711780n, -1]);
204
+ // reminder = 0
205
+ // m = 11001100110011001100110011001100110011001100110011010.100
206
+ // rounding down (to even)
207
+ if (result[0] !== 7205759403792794n) {
208
+ throw result[0].toString(2);
209
+ }
210
+ if (result[1] !== 2) {
211
+ throw result[1];
212
+ }
213
+ },
214
+ () => {
215
+ const result = decToBin([288230376151711781n, -1]);
216
+ // reminder = 1
217
+ // m = 11001100110011001100110011001100110011001100110011010.100
218
+ // rounding up
219
+ if (result[0] !== 7205759403792795n) {
220
+ throw result[0].toString(2);
221
+ }
222
+ if (result[1] !== 2) {
223
+ throw result[1];
224
+ }
225
+ },
226
+ () => {
227
+ const result = decToBin([288230376151711785n, -1]);
228
+ // reminder = 0
229
+ // m = 11001100110011001100110011001100110011001100110011010.101
230
+ // rounding up
231
+ if (result[0] !== 7205759403792795n) {
232
+ throw result[0].toString(2);
233
+ }
234
+ if (result[1] !== 2) {
235
+ throw result[1];
236
+ }
237
+ },
238
+ () => {
239
+ const result = decToBin([288230376151711805n, -1]);
240
+ // reminder = 0
241
+ // m = 11001100110011001100110011001100110011001100110011011.001
242
+ // rounding down
243
+ if (result[0] !== 7205759403792795n) {
244
+ throw result[0].toString(2);
245
+ }
246
+ if (result[1] !== 2) {
247
+ throw result[1];
248
+ }
249
+ },
250
+ () => {
251
+ const result = decToBin([288230376151711820n, -1]);
252
+ // reminder = 0
253
+ // m = 11001100110011001100110011001100110011001100110011011.100
254
+ // rounding up (to even)
255
+ if (result[0] !== 7205759403792796n) {
256
+ throw result[0].toString(2);
257
+ }
258
+ if (result[1] !== 2) {
259
+ throw result[1];
260
+ }
261
+ }
262
+ ],
263
+ roundingNegative: [
264
+ () => {
265
+ const result = decToBin([-288230376151711745n, -1]);
266
+ // reminder = 0
267
+ // m = -11001100110011001100110011001100110011001100110011001.101
268
+ // rounding down
269
+ if (result[0] !== -7205759403792794n) {
270
+ throw result[0].toString(2);
271
+ }
272
+ if (result[1] !== 2) {
273
+ throw result[1];
274
+ }
275
+ },
276
+ () => {
277
+ const result = decToBin([-288230376151711760n, -1]);
278
+ // reminder = 0
279
+ // m = -11001100110011001100110011001100110011001100110011010.000
280
+ // rounding up
281
+ if (result[0] !== -7205759403792794n) {
282
+ throw result[0].toString(2);
283
+ }
284
+ if (result[1] !== 2) {
285
+ throw result[1];
286
+ }
287
+ },
288
+ () => {
289
+ const result = decToBin([-288230376151711780n, -1]);
290
+ // reminder = 0
291
+ // m = -11001100110011001100110011001100110011001100110011010.100
292
+ // rounding up (to even)
293
+ if (result[0] !== -7205759403792794n) {
294
+ throw result[0].toString(2);
295
+ }
296
+ if (result[1] !== 2) {
297
+ throw result[1];
298
+ }
299
+ },
300
+ () => {
301
+ const result = decToBin([-288230376151711781n, -1]);
302
+ // reminder = 1
303
+ // m = -11001100110011001100110011001100110011001100110011010.100
304
+ // rounding down
305
+ if (result[0] !== -7205759403792795n) {
306
+ throw result[0].toString(2);
307
+ }
308
+ if (result[1] !== 2) {
309
+ throw result[1];
310
+ }
311
+ },
312
+ () => {
313
+ const result = decToBin([-288230376151711785n, -1]);
314
+ // reminder = 0
315
+ // m = -11001100110011001100110011001100110011001100110011010.101
316
+ // rounding down
317
+ if (result[0] !== -7205759403792795n) {
318
+ throw result[0].toString(2);
319
+ }
320
+ if (result[1] !== 2) {
321
+ throw result[1];
322
+ }
323
+ },
324
+ () => {
325
+ const result = decToBin([-288230376151711805n, -1]);
326
+ // reminder = 0
327
+ // m = -11001100110011001100110011001100110011001100110011011.001
328
+ // rounding up
329
+ if (result[0] !== -7205759403792795n) {
330
+ throw result[0].toString(2);
331
+ }
332
+ if (result[1] !== 2) {
333
+ throw result[1];
334
+ }
335
+ },
336
+ () => {
337
+ const result = decToBin([-288230376151711820n, -1]);
338
+ // reminder = 0
339
+ // m = -11001100110011001100110011001100110011001100110011011.100
340
+ // rounding down (to even)
341
+ if (result[0] !== -7205759403792796n) {
342
+ throw result[0].toString(2);
343
+ }
344
+ if (result[1] !== 2) {
345
+ throw result[1];
346
+ }
347
+ }
348
+ ]
349
+ };
@@ -0,0 +1,29 @@
1
+ /** @typedef {Operator.Unary<bigint, bigint>} Unary*/
2
+ /** @type {(a: bigint) => (b: bigint) => bigint} */
3
+ export const addition: (a: bigint) => (b: bigint) => bigint;
4
+ export const sum: (input: list.List<bigint>) => bigint;
5
+ /** @type {(a: bigint) => bigint} */
6
+ export const abs: (a: bigint) => bigint;
7
+ /** @type {(a: bigint) => compare.Sign} */
8
+ export const sign: (a: bigint) => compare.Sign;
9
+ /** @type {(a: bigint) => string} */
10
+ export const serialize: (a: bigint) => string;
11
+ /**
12
+ * @template T
13
+ * @typedef {{
14
+ * readonly 0: T
15
+ * readonly add: Operator.Reduce<T>
16
+ * }} Additive
17
+ */
18
+ /** @type {<T>(a: Additive<T>) => (a: T) => (n: bigint) => T} */
19
+ export const scalar_mul: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T;
20
+ export function log2(v: bigint): bigint;
21
+ export function bitLength(v: bigint): bigint;
22
+ export type Unary = Operator.Unary<bigint, bigint>;
23
+ export type Additive<T> = {
24
+ readonly 0: T;
25
+ readonly add: Operator.Reduce<T>;
26
+ };
27
+ import * as list from '../list/module.f.mjs';
28
+ import * as compare from '../function/compare/module.f.mjs';
29
+ import * as Operator from '../function/operator/module.f.mjs';
@@ -1,29 +1,19 @@
1
- declare namespace _default {
2
- export { addition };
3
- export { sum };
4
- export { abs };
5
- export { sign };
6
- export { serialize };
7
- export { scalar_mul };
8
- export { log2 };
9
- export { bitLength };
10
- }
11
- export default _default;
12
- export type Unary = Operator.Unary<bigint, bigint>;
13
- export type Additive<T> = {
14
- readonly 0: T;
15
- readonly add: Operator.Reduce<T>;
16
- };
1
+ // @ts-self-types="./module.f.d.mts"
2
+ import * as compare from '../function/compare/module.f.mjs';
3
+ import * as Operator from '../function/operator/module.f.mjs';
4
+ const { unsafeCmp } = compare;
5
+ import * as list from '../list/module.f.mjs';
6
+ const { reduce } = list;
17
7
  /** @typedef {Operator.Unary<bigint, bigint>} Unary*/
18
8
  /** @type {(a: bigint) => (b: bigint) => bigint} */
19
- declare const addition: (a: bigint) => (b: bigint) => bigint;
20
- declare const sum: (input: import("../list/module.f.mjs").List<bigint>) => bigint;
9
+ export const addition = a => b => a + b;
10
+ export const sum = reduce(addition)(0n);
21
11
  /** @type {(a: bigint) => bigint} */
22
- declare const abs: (a: bigint) => bigint;
23
- /** @type {(a: bigint) => Compare.Sign} */
24
- declare const sign: (a: bigint) => Compare.Sign;
12
+ export const abs = a => a >= 0 ? a : -a;
13
+ /** @type {(a: bigint) => compare.Sign} */
14
+ export const sign = a => unsafeCmp(a)(0n);
25
15
  /** @type {(a: bigint) => string} */
26
- declare const serialize: (a: bigint) => string;
16
+ export const serialize = a => `${a}n`;
27
17
  /**
28
18
  * @template T
29
19
  * @typedef {{
@@ -32,7 +22,21 @@ declare const serialize: (a: bigint) => string;
32
22
  * }} Additive
33
23
  */
34
24
  /** @type {<T>(a: Additive<T>) => (a: T) => (n: bigint) => T} */
35
- declare const scalar_mul: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T;
25
+ export const scalar_mul = ({ 0: _0, add }) => a => n => {
26
+ let ai = a;
27
+ let ni = n;
28
+ let result = _0;
29
+ while (true) {
30
+ if ((ni & 1n) === 1n) {
31
+ result = add(result)(ai);
32
+ }
33
+ ni >>= 1n;
34
+ if (ni === 0n) {
35
+ return result;
36
+ }
37
+ ai = add(ai)(ai);
38
+ }
39
+ };
36
40
  /**
37
41
  * Calculates the base-2 logarithm (floor).
38
42
  *
@@ -51,7 +55,34 @@ declare const scalar_mul: <T>(a: Additive<T>) => (a: T) => (n: bigint) => T;
51
55
  * 2. **Binary Search Phase:** Refines the result by halving the step size and incrementally
52
56
  * determining the exact value of the logarithm.
53
57
  */
54
- declare function log2(v: bigint): bigint;
58
+ export const log2 = v => {
59
+ if (v <= 0n) {
60
+ return -1n;
61
+ }
62
+ let result = 0n;
63
+ let i = 1n;
64
+ while (true) {
65
+ const n = v >> i;
66
+ if (n === 0n) {
67
+ // overshot
68
+ break;
69
+ }
70
+ v = n;
71
+ result += i;
72
+ i <<= 1n;
73
+ }
74
+ // We know that `v` is not 0 so it doesn't make sense to check `n` when `i` is 0.
75
+ // Because of this, We check if `i` is greater than 1 before we divide it by 2.
76
+ while (i !== 1n) {
77
+ i >>= 1n;
78
+ const n = v >> i;
79
+ if (n !== 0n) {
80
+ result += i;
81
+ v = n;
82
+ }
83
+ }
84
+ return result;
85
+ };
55
86
  /**
56
87
  * Calculates the bit length of a given BigInt.
57
88
  *
@@ -72,6 +103,12 @@ declare function log2(v: bigint): bigint;
72
103
  * The function uses the `log2` function to calculate the position of the most significant bit(MSB)
73
104
  * and adds `1n` to account for the MSB itself.For negative numbers, the absolute value is used.
74
105
  */
75
- declare function bitLength(v: bigint): bigint;
76
- import * as Operator from '../function/operator/module.f.mjs';
77
- import * as Compare from '../function/compare/module.f.mjs';
106
+ export const bitLength = v => {
107
+ if (v <= 0n) {
108
+ if (v === 0n) {
109
+ return 0n;
110
+ }
111
+ v = -v;
112
+ }
113
+ return log2(v) + 1n;
114
+ };