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
@@ -0,0 +1,129 @@
1
+ import { empty, vec, length, concatLsb, uintLsb, uintMsb, removeLsb, concatMsb, removeMsb, uint, popUintLsb, popUintMsb } from './module.f.ts'
2
+
3
+ export default {
4
+ examples: {
5
+ vec: () => {
6
+ const vec4 = vec(4n)
7
+ const v0 = vec4(5n) // 0x15n
8
+ if (v0 !== 0x15n) { throw v0 }
9
+ const v1 = vec4(0x5FEn) // 0x1En
10
+ if (v1 !== 0x1En) { throw v1 }
11
+ },
12
+ uint: () => {
13
+ const vector = vec(8n)(0x5n) // 0x105n
14
+ if (vector !== 0x105n) { throw vector }
15
+ const result = uint(vector); // result is 0x5n
16
+ if (result !== 0x5n) { throw result }
17
+ },
18
+ uintLsb: () => {
19
+ const vector = vec(8n)(0xF5n) // 0x1F5n
20
+ if (vector !== 0x1F5n) { throw vector }
21
+ const result = uintLsb(4n)(vector); // result is 5n
22
+ if (result !== 5n) { throw result }
23
+ const result2 = uintLsb(16n)(vector); // result2 is 0xF5n
24
+ if (result2 !== 0xF5n) { throw result2 }
25
+ },
26
+ uintMsb: () => {
27
+ const vector = vec(8n)(0xF5n) // 0x1F5n
28
+ if (vector !== 0x1F5n) { throw vector }
29
+ const result = uintMsb(4n)(vector); // result is 0xFn
30
+ if (result !== 0xFn) { throw result }
31
+ const result2 = uintMsb(16n)(vector); // result2 is 0xF500n
32
+ if (result2 !== 0xF500n) { throw result2 }
33
+ },
34
+ popUintLsb: () => {
35
+ const vector = vec(8n)(0xF5n) // 0x1F5n
36
+ const [result, rest] = popUintLsb(4n)(vector); // result is 5n, rest is 0x1Fn
37
+ if (result !== 5n) { throw result }
38
+ if (rest !== 0x1Fn) { throw rest }
39
+ const [result2, rest2] = popUintLsb(16n)(vector); // result2 is 0xF5n, rest2 is 1n
40
+ if (result2 !== 0xF5n) { throw result2 }
41
+ if (rest2 !== 1n) { throw rest2 }
42
+ },
43
+ popUintMsb: () => {
44
+ const vector = vec(8n)(0xF5n) // 0x1F5n
45
+ const [result, rest] = popUintMsb(4n)(vector); // [0xFn, 0x15n]
46
+ if (result !== 0xFn) { throw result }
47
+ if (rest !== 0x15n) { throw rest }
48
+ const [result2, rest2] = popUintMsb(16n)(vector); // [0xF500n, 1n]
49
+ if (result2 !== 0xF500n) { throw result2 }
50
+ if (rest2 !== 1n) { throw rest2 }
51
+ },
52
+ concatLsb: () => {
53
+ const u8 = vec(8n)
54
+ const a = u8(0x45n) // 0x145n
55
+ if (a !== 0x145n) { throw a }
56
+ const b = u8(0x89n) // 0x189n
57
+ if (b !== 0x189n) { throw b }
58
+ const ab = concatLsb(a)(b) // 0x18945n
59
+ if (ab !== 0x18945n) { throw ab }
60
+ },
61
+ concatMsb: () => {
62
+ const u8 = vec(8n)
63
+ const a = u8(0x45n) // 0x145n
64
+ if (a !== 0x145n) { throw a }
65
+ const b = u8(0x89n) // 0x189n
66
+ if (b !== 0x189n) { throw b }
67
+ const ab = concatMsb(a)(b) // 0x14589n
68
+ if (ab !== 0x14589n) { throw ab }
69
+ },
70
+ removeLsb: () => {
71
+ const v = vec(16n)(0x3456n) // 0x13456n
72
+ if (v !== 0x13456n) { throw v }
73
+ const r = removeLsb(4n)(v) // 0x1345n
74
+ if (r !== 0x1345n) { throw r }
75
+ const r2 = removeLsb(24n)(v) // 0x1n
76
+ if (r2 !== 0x1n) { throw r2 }
77
+ },
78
+ removeMsb: () => {
79
+ const v = vec(16n)(0x3456n) // 0x13456n
80
+ if (v !== 0x13456n) { throw v }
81
+ const r = removeMsb(4n)(v) // 0x1456n
82
+ if (r !== 0x1456n) { throw r }
83
+ const r2 = removeMsb(24n)(v) // 0x1n
84
+ if (r2 !== 0x1n) { throw r2 }
85
+ }
86
+ },
87
+ uintLsb: () => {
88
+ const vector = 0b1110101n
89
+ const extract3Bits = uintLsb(3n)
90
+ const result = extract3Bits(vector) // result is 0b101n (5n)
91
+ if (result !== 0b101n) { throw result }
92
+ },
93
+ uintSmall: () => {
94
+ const vector = 0b11n
95
+ const extract3Bits = uintLsb(3n)(vector)
96
+ if (extract3Bits !== 0b1n) { throw extract3Bits }
97
+ },
98
+ vecExample: () => {
99
+ const createVector = vec(4n)
100
+ const vector = createVector(5n) // vector is 0b10101n
101
+ if (vector !== 0b10101n) { throw vector }
102
+ },
103
+ length: () => {
104
+ const i = length(empty)
105
+ if (i !== 0n) { throw i}
106
+ },
107
+ bitset: () => {
108
+ const v = vec(8n)(0x5FEn)
109
+ if (v !== 0x1FEn) { throw v }
110
+ if (length(v) !== 8n) { throw 'len' }
111
+ const u = uintLsb(8n)(v)
112
+ if (u !== 0xFEn) { throw v }
113
+ },
114
+ appendBack: () => {
115
+ const vec8 = vec(8n)
116
+ const a = vec8(0x345n)
117
+ const b = vec8(0x789n)
118
+ const ab = concatLsb(a)(b)
119
+ if (ab !== 0x18945n) { throw ab }
120
+ const s = length(ab)
121
+ if (s !== 16n) { throw `appendBack: ${s}` }
122
+ },
123
+ removeBack: () => {
124
+ const v = vec(17n)(0x12345n)
125
+ if (v !== 0x32345n) { throw v.toString(16) }
126
+ const r = removeLsb(9n)(v)
127
+ if (r !== 0x191n) { throw r.toString(16) }
128
+ }
129
+ }
@@ -0,0 +1,92 @@
1
+ import * as _ from '../types/module.f.ts'
2
+ import * as List from '../../list/module.f.ts'
3
+ import * as cmp from '../../function/compare/module.f.ts'
4
+ const { index3, index5 } = cmp
5
+ import * as Array from '../../array/module.f.ts'
6
+
7
+ type FirstLeaf1<T> = readonly[cmp.Index3, _.Leaf1<T>]
8
+
9
+ type FirstBranch3<T> = readonly[1, _.Branch3<T>]
10
+
11
+ type FirstLeaf2<T> = readonly[cmp.Index5, _.Leaf2<T>]
12
+
13
+ type FirstBranch5<T> = readonly[1|3, _.Branch5<T>]
14
+
15
+ type First<T> = FirstLeaf1<T> | FirstBranch3<T> | FirstLeaf2<T> | FirstBranch5<T>
16
+
17
+ type PathItem3<T> = readonly[0|2, _.Branch3<T>]
18
+
19
+ type PathItem5<T> = readonly[0|2|4, _.Branch5<T>]
20
+
21
+ export type PathItem<T> = PathItem3<T> | PathItem5<T>
22
+
23
+ const child
24
+ = <T>(item: PathItem<T>): _.TNode<T> => (item[1][item[0]] as _.TNode<T>)
25
+
26
+ export type Path<T> = List.List<PathItem<T>>
27
+
28
+ export type Result<T> = {
29
+ readonly first: First<T>,
30
+ readonly tail: Path<T>
31
+ }
32
+
33
+ export const find
34
+ = <T>(c: cmp.Compare<T>): (node: _.TNode<T>) => Result<T> => {
35
+ const i3 = index3(c)
36
+ const i5 = index5(c)
37
+ const f
38
+ = (tail: Path<T>) => (node: _.TNode<T>): Result<T> => {
39
+ const append
40
+ : (index: Array.KeyOf<typeof node>) => Result<T>
41
+ = index => {
42
+ const first = [index, node] as PathItem<T>
43
+ return f({ first, tail })(child(first))
44
+ }
45
+ const done
46
+ : (index: Array.KeyOf<typeof node>) => Result<T>
47
+ = index => ({ first: [index, node] as First<T>, tail })
48
+ switch (node.length) {
49
+ case 1: { return done(i3(node[0])) }
50
+ case 2: { return done(i5(node)) }
51
+ case 3: {
52
+ const i = i3(node[1])
53
+ switch (i) {
54
+ case 0: case 2: { return append(i) }
55
+ case 1: { return done(i) }
56
+ }
57
+ }
58
+ case 5: {
59
+ const i = i5([node[1], node[3]])
60
+ switch (i) {
61
+ case 0: case 2: case 4: { return append(i) }
62
+ case 1: case 3: { return done(i) }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ return f(null)
68
+ }
69
+
70
+ export const isFound = <T>([i]: First<T>): boolean => {
71
+ switch (i) {
72
+ case 1: case 3: { return true }
73
+ default: { return false }
74
+ }
75
+ }
76
+
77
+ export const value = <T>([i, r]: First<T>): T | null => {
78
+ switch (i) {
79
+ case 1: {
80
+ switch (r.length) {
81
+ case 1: case 2: { return r[0] }
82
+ default: { return r[1] }
83
+ }
84
+ }
85
+ case 3: {
86
+ return r.length === 2 ? r[1] : r[3]
87
+ }
88
+ default: {
89
+ return null
90
+ }
91
+ }
92
+ }
@@ -1,27 +1,31 @@
1
- import * as _ from './module.f.mjs'
2
- import * as list from '../../list/module.f.mjs'
3
- import * as json from '../../../json/module.f.mjs'
4
- import * as o from '../../object/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as list from '../../list/module.f.ts'
3
+ import * as json from '../../../json/module.f.ts'
4
+ import * as o from '../../object/module.f.ts'
5
5
  const { sort } = o
6
- import * as btree from '../types/module.f.mjs'
7
- import * as string from '../../string/module.f.mjs'
6
+ import * as btree from '../types/module.f.ts'
7
+ import * as string from '../../string/module.f.ts'
8
8
  const { cmp } = string
9
- import * as s from '../set/module.f.mjs'
9
+ import * as s from '../set/module.f.ts'
10
10
 
11
11
  const jsonStr = json.stringify(sort)
12
12
 
13
- /** @type {(node: btree.Node<string>) => (value: string) => btree.Node<string>} */
14
- const set = node => value => s.set(cmp(value))(() => value)(node)
13
+ const set
14
+ : (node: btree.TNode<string>) => (value: string) => btree.TNode<string>
15
+ = node => value => s.set(cmp(value))(() => value)(node)
15
16
 
16
- /** @type {(r: _.Result<json.Unknown>) => string} */
17
- const str = r => jsonStr(list.toArray(list.map(x => x[0])(r)))
17
+ const str
18
+ : (r: _.Result<json.Unknown>) => string
19
+ = r => jsonStr(list.toArray(list.map((x: any) => x[0])(r)))
18
20
 
19
- /** @type {(i: string) => (m: btree.Node<string>) => string} */
20
- const find = i => m => str(_.find(cmp(i))(m))
21
+ const find
22
+ : (i: string) => (m: btree.TNode<string>) => string
23
+ = i => m => str(_.find(cmp(i))(m))
21
24
 
22
25
  const test = () => {
23
- /** @type {btree.Node<string>} */
24
- let _map = ['1']
26
+ let _map
27
+ : btree.TNode<string>
28
+ = ['1']
25
29
  for (let i = 2; i <= 10; i++)
26
30
  _map = set(_map)((i * i).toString())
27
31
  {
@@ -115,4 +119,4 @@ const test = () => {
115
119
  }
116
120
  }
117
121
 
118
- export default test
122
+ export default test
@@ -1,13 +1,12 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
- import * as list from '../list/module.f.mjs'
1
+ import * as list from '../list/module.f.ts'
4
2
  const { flat } = list
5
- import * as n from '../nullable/module.f.mjs'
3
+ import * as n from '../nullable/module.f.ts'
6
4
  const { map } = n
7
- import * as _ from './types/module.f.mjs'
5
+ import * as _ from './types/module.f.ts'
8
6
 
9
- /** @type {<T>(node: _.Node<T>) => list.Thunk<T>} */
10
- const nodeValues = node => () => {
7
+ const nodeValues
8
+ : <T>(node: _.TNode<T>) => list.Thunk<T>
9
+ = node => () => {
11
10
  switch (node.length) {
12
11
  case 1: case 2: { return node }
13
12
  case 3: {
@@ -31,5 +30,6 @@ const nodeValues = node => () => {
31
30
 
32
31
  export const empty = null
33
32
 
34
- /** @type {<T>(tree: _.Tree<T>) => list.List<T>} */
35
- export const values = map(nodeValues)
33
+ export const values
34
+ : <T>(tree: _.Tree<T>) => list.List<T>
35
+ = map(nodeValues)
@@ -1,28 +1,22 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as _ from '../types/module.f.mjs'
3
- import * as Cmp from '../../function/compare/module.f.mjs'
4
- import * as find from '../find/module.f.mjs'
5
- import * as list from '../../list/module.f.mjs'
1
+ import * as _ from '../types/module.f.ts'
2
+ import * as Cmp from '../../function/compare/module.f.ts'
3
+ import * as find from '../find/module.f.ts'
4
+ import * as list from '../../list/module.f.ts'
6
5
  const { fold, concat, next } = list
7
- import * as Array from '../../array/module.f.mjs'
8
- import * as n from '../../nullable/module.f.mjs'
6
+ import * as Array from '../../array/module.f.ts'
7
+ import * as n from '../../nullable/module.f.ts'
9
8
  const { map } = n
10
9
 
11
- /**
12
- * @template T
13
- * @typedef {null | _.Leaf1<T>} Leaf01
14
- */
10
+ type Leaf01<T> = null | _.Leaf1<T>
15
11
 
16
- /**
17
- * @template T
18
- * @typedef {{
19
- * readonly first: Leaf01<T>,
20
- * readonly tail: find.Path<T>
21
- * }} RemovePath
22
- */
12
+ type RemovePath<T> = {
13
+ readonly first: Leaf01<T>,
14
+ readonly tail: find.Path<T>
15
+ }
23
16
 
24
- /** @type {<T>(tail: find.Path<T>) => (n: _.Node<T>) => readonly[T, RemovePath<T>]} */
25
- const path = tail => n => {
17
+ const path
18
+ : <T>(tail: find.Path<T>) => (n: _.TNode<T>) => readonly[T, RemovePath<T>]
19
+ = tail => n => {
26
20
  switch (n.length) {
27
21
  case 1: { return [n[0], { first: null, tail }] }
28
22
  case 2: { return [n[0], { first: [n[1]], tail }] }
@@ -31,13 +25,11 @@ const path = tail => n => {
31
25
  }
32
26
  }
33
27
 
34
- /**
35
- * @template T
36
- * @typedef {_.Branch1<T> | _.Branch3<T> | _.Branch5<T>} Branch
37
- */
28
+ type Branch<T> = _.Branch1<T> | _.Branch3<T> | _.Branch5<T>
38
29
 
39
- /** @type {<T>(a: Branch<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} */
40
- const reduceValue0 = a => n => {
30
+ const reduceValue0
31
+ : <T>(a: Branch<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>
32
+ = a => n => {
41
33
  const [, v1, n2] = n
42
34
  if (a.length === 1) {
43
35
  switch (n2.length) {
@@ -50,8 +42,9 @@ const reduceValue0 = a => n => {
50
42
  }
51
43
  }
52
44
 
53
- /** @type {<T>(a: Branch<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} */
54
- const reduceValue2 = a => n => {
45
+ const reduceValue2
46
+ : <T>(a: Branch<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>
47
+ = a => n => {
55
48
  const [n0, v1, ] = n
56
49
  if (a.length === 1) {
57
50
  switch (n0.length) {
@@ -64,8 +57,9 @@ const reduceValue2 = a => n => {
64
57
  }
65
58
  }
66
59
 
67
- /** @type {<T>(a: Leaf01<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} */
68
- const initValue0 = a => n => {
60
+ const initValue0
61
+ : <T>(a: Leaf01<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>
62
+ = a => n => {
69
63
  const [, v1, n2] = n
70
64
  if (a === null) {
71
65
  switch (n2.length) {
@@ -78,8 +72,9 @@ const initValue0 = a => n => {
78
72
  }
79
73
  }
80
74
 
81
- /** @type {<T>(a: Leaf01<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} */
82
- const initValue1 = a => n => {
75
+ const initValue1
76
+ : <T>(a: Leaf01<T>) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>
77
+ = a => n => {
83
78
  const [n0, v1] = n
84
79
  if (a === null) {
85
80
  switch (n0.length) {
@@ -90,19 +85,14 @@ const initValue1 = a => n => {
90
85
  } else { return [n0, v1, a] }
91
86
  }
92
87
 
93
- /**
94
- * @template A,T
95
- * @typedef {(a: A) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>} Merge
96
- */
88
+ type Merge<A, T> = (a: A) => (n: _.Branch3<T>) => _.Branch1<T> | _.Branch3<T>
97
89
 
98
- /** @type {<A, T>(ms: Array.Array2<Merge<A, T>>) => (i: find.PathItem<T>) => (a: A) => Branch<T>} */
99
- const reduceX = ms => ([i, n]) => a => {
90
+ const reduceX
91
+ = <A, T>(ms: Array.Array2<Merge<A, T>>) => ([i, n]: find.PathItem<T>) => (a: A): Branch<T> => {
100
92
  const [m0, m2] = ms
101
- /** @typedef {typeof ms extends Array.Array2<Merge<infer A, infer T>> ? [A,T] : never} AT */
102
- /** @typedef {AT[0]} A */
103
- /** @typedef {AT[1]} T */
104
- /** @type {(m: Merge<A, T>) => Branch<T>} */
105
- const f = m => {
93
+ const f
94
+ : (m: Merge<A, T>) => Branch<T>
95
+ = m => {
106
96
  const ra = m(a)
107
97
  return n.length === 3 ? ra(n) : [...ra([n[0], n[1], n[2]]), n[3], n[4]]
108
98
  }
@@ -117,15 +107,14 @@ const reduce = fold(reduceX([reduceValue0, reduceValue2]))
117
107
 
118
108
  const initReduce = reduceX([initValue0, initValue1])
119
109
 
120
- /** @type {<T>(c: Cmp.Compare<T>) => (node: _.Node<T>) => _.Tree<T>} */
121
- export const nodeRemove = c => node => {
122
- /** @typedef {typeof c extends Cmp.Compare<infer T> ? T : never} T */
123
- /** @type {() => null | RemovePath<T>} */
124
- const f = () => {
110
+ export const nodeRemove
111
+ = <T>(c: Cmp.Compare<T>) => (node: _.TNode<T>): _.Tree<T> => {
112
+ const f = (): null | RemovePath<T> => {
125
113
  const { first, tail } = find.find(c)(node)
126
- /** @type {(n: _.Node<T>) => (f: (v: T) => find.PathItem<T>) => RemovePath<T>} */
127
- const branch = n => f => {
128
- const [v, p] = path(/** @type {find.Path<T>} */(null))(n)
114
+ const branch
115
+ : (n: _.TNode<T>) => (f: (v: T) => find.PathItem<T>) => RemovePath<T>
116
+ = n => f => {
117
+ const [v, p] = path(null as find.Path<T>)(n)
129
118
  return { first: p.first, tail: concat(p.tail)({ first: f(v), tail }) }
130
119
  }
131
120
  const [i, n] = first
@@ -157,5 +146,6 @@ export const nodeRemove = c => node => {
157
146
  return result.length === 1 ? result[0] : result
158
147
  }
159
148
 
160
- /** @type {<T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>} */
161
- export const remove = c => map(nodeRemove(c))
149
+ export const remove
150
+ : <T>(c: Cmp.Compare<T>) => (tree: _.Tree<T>) => _.Tree<T>
151
+ = c => map(nodeRemove(c))
@@ -1,23 +1,26 @@
1
- import * as _ from './module.f.mjs'
2
- import * as BTree from '../types/module.f.mjs'
3
- import * as s from '../set/module.f.mjs'
4
- import * as str from '../../string/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as BTree from '../types/module.f.ts'
3
+ import * as s from '../set/module.f.ts'
4
+ import * as str from '../../string/module.f.ts'
5
5
  const { cmp } = str
6
- import * as json from '../../../json/module.f.mjs'
7
- import * as o from '../../object/module.f.mjs'
6
+ import * as json from '../../../json/module.f.ts'
7
+ import * as o from '../../object/module.f.ts'
8
8
  const { sort } = o
9
9
 
10
- /** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
11
- const set = node => value => s.set(cmp(value))(() => value)(node)
10
+ const set
11
+ : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string>
12
+ = node => value => s.set(cmp(value))(() => value)(node)
12
13
 
13
- /** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string> | null} */
14
- const remove = node => value => _.nodeRemove(cmp(value))(node)
14
+ const remove
15
+ : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string> | null
16
+ = node => value => _.nodeRemove(cmp(value))(node)
15
17
 
16
18
  const jsonStr = json.stringify(sort)
17
19
 
18
20
  const test = () => {
19
- /** @type {BTree.Node<string> | null} */
20
- let _map = ['1']
21
+ let _map
22
+ : BTree.TNode<string> | null
23
+ = ['1']
21
24
  for (let i = 2; i <= 38; i++)
22
25
  _map = set(_map)((i * i).toString())
23
26
  {
@@ -411,8 +414,9 @@ const test = () => {
411
414
  }
412
415
 
413
416
  const test2 = () => {
414
- /** @type {BTree.Node<string>|null} */
415
- let _map = ['1']
417
+ let _map
418
+ : BTree.TNode<string>|null
419
+ = ['1']
416
420
  for (let i = 2; i <= 10; i++)
417
421
  _map = set(_map)((i * i).toString())
418
422
  if (_map.length !== 3) { throw _map }
@@ -491,4 +495,4 @@ const test2 = () => {
491
495
  export default {
492
496
  test,
493
497
  test2,
494
- }
498
+ }
@@ -1,21 +1,19 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as _ from '../types/module.f.mjs'
3
- import * as btreeFind from '../find/module.f.mjs'
1
+ import * as _ from '../types/module.f.ts'
2
+ import * as btreeFind from '../find/module.f.ts'
4
3
  const { find } = btreeFind
5
- import * as Cmp from '../../function/compare/module.f.mjs'
6
- import * as list from '../../list/module.f.mjs'
4
+ import * as Cmp from '../../function/compare/module.f.ts'
5
+ import * as list from '../../list/module.f.ts'
7
6
  const { fold } = list
8
7
 
9
- /**
10
- * @template T
11
- * @typedef {_.Branch1<T> | _.Branch3<T>} Branch1To3
12
- */
8
+ type Branch1To3<T> = _.Branch1<T> | _.Branch3<T>
13
9
 
14
- /** @type {<T>(b: _.Branch5<T> | _.Branch7<T>) => Branch1To3<T>} */
15
- const b57 = b => b.length === 5 ? [b] : [[b[0], b[1], b[2]], b[3], [b[4], b[5], b[6]]]
10
+ const b57
11
+ : <T>(b: _.Branch5<T> | _.Branch7<T>) => Branch1To3<T>
12
+ = b => b.length === 5 ? [b] : [[b[0], b[1], b[2]], b[3], [b[4], b[5], b[6]]]
16
13
 
17
- /** @type {<T>(i: btreeFind.PathItem<T>) => (a: Branch1To3<T>) => Branch1To3<T>} */
18
- const reduceOp = ([i, x]) => a => {
14
+ const reduceOp
15
+ : <T>(i: btreeFind.PathItem<T>) => (a: Branch1To3<T>) => Branch1To3<T>
16
+ = ([i, x]) => a => {
19
17
  switch (i) {
20
18
  case 0: {
21
19
  switch (x.length) {
@@ -37,13 +35,11 @@ const reduceOp = ([i, x]) => a => {
37
35
 
38
36
  const reduceBranch = fold(reduceOp)
39
37
 
40
- /** @type {<T>(c: Cmp.Compare<T>) => (g: (value: T | null) => T) => (node: _.Node<T>) => _.Node<T>} */
41
- const nodeSet = c => g => node => {
38
+ const nodeSet
39
+ = <T>(c: Cmp.Compare<T>) => (g: (value: T | null) => T) => (node: _.TNode<T>): _.TNode<T> => {
42
40
  const { first, tail } = find(c)(node)
43
41
  const [i, x] = first;
44
- /** @typedef {typeof c extends Cmp.Compare<infer T> ? T : never} T */
45
- /** @type {() => Branch1To3<T>} */
46
- const f = () => {
42
+ const f = (): Branch1To3<T> => {
47
43
  switch (i) {
48
44
  case 0: {
49
45
  // insert
@@ -88,5 +84,6 @@ const nodeSet = c => g => node => {
88
84
  return r.length === 1 ? r[0] : r
89
85
  }
90
86
 
91
- /** @type {<T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.Node<T>} */
92
- export const set = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)
87
+ export const set
88
+ : <T>(c: Cmp.Compare<T>) => (f: (value: T|null) => T) => (tree: _.Tree<T>) => _.TNode<T>
89
+ = c => f => tree => tree === null ? [f(null)] : nodeSet(c)(f)(tree)