functionalscript 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.github/workflows/ci.yml +19 -4
  2. package/CHANGELOG.md +9 -0
  3. package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
  4. package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
  5. package/com/cpp/testlib.f.ts +8 -0
  6. package/com/cs/{module.f.mjs → module.f.ts} +47 -38
  7. package/com/cs/{test.f.mjs → test.f.ts} +2 -2
  8. package/com/cs/testlib.f.ts +8 -0
  9. package/com/rust/module.f.ts +287 -0
  10. package/com/rust/{test.f.mjs → test.f.ts} +1 -1
  11. package/com/rust/testlib.f.ts +8 -0
  12. package/com/test/{build.f.mjs → build.f.ts} +47 -45
  13. package/com/test/{build.mjs → build.ts} +7 -6
  14. package/com/types/module.f.ts +62 -0
  15. package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
  16. package/commonjs/build/module.f.ts +100 -0
  17. package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
  18. package/commonjs/module/function/module.f.ts +13 -0
  19. package/commonjs/module/module.f.ts +41 -0
  20. package/commonjs/module.f.ts +7 -0
  21. package/commonjs/{module.mjs → module.ts} +12 -9
  22. package/commonjs/package/dependencies/module.f.ts +22 -0
  23. package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
  24. package/commonjs/package/module.f.ts +31 -0
  25. package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
  26. package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
  27. package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
  28. package/commonjs/{test.mjs → test.ts} +5 -4
  29. package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
  30. package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
  31. package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
  32. package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
  33. package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
  34. package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
  35. package/deno.json +71 -0
  36. package/dev/README.md +8 -0
  37. package/dev/index.ts +3 -0
  38. package/dev/{module.f.mjs → module.f.ts} +0 -2
  39. package/dev/{module.mjs → module.ts} +65 -60
  40. package/dev/test/{module.f.mjs → module.f.ts} +57 -70
  41. package/dev/{test.f.mjs → test.f.ts} +7 -5
  42. package/dev/test.ts +53 -0
  43. package/djs/{module.f.mjs → module.f.ts} +31 -31
  44. package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
  45. package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
  46. package/djs/serializer/module.f.ts +90 -0
  47. package/djs/{test.f.mjs → test.f.ts} +4 -4
  48. package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
  49. package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  50. package/fsc/{module.f.mjs → module.f.ts} +41 -44
  51. package/fsc/{test.f.mjs → test.f.ts} +8 -6
  52. package/fsm/module.f.ts +107 -0
  53. package/fsm/{test.f.mjs → test.f.ts} +10 -9
  54. package/html/README.md +10 -9
  55. package/html/module.f.ts +108 -0
  56. package/html/{test.f.mjs → test.f.ts} +10 -7
  57. package/issues/README.md +3 -0
  58. package/issues/lang/3110-function.md +25 -1
  59. package/issues/{test.f.mjs → test.f.ts} +3 -2
  60. package/js/tokenizer/module.f.ts +882 -0
  61. package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
  62. package/json/module.f.ts +94 -0
  63. package/json/parser/{module.f.mjs → module.f.ts} +113 -109
  64. package/json/parser/{test.f.mjs → test.f.ts} +10 -9
  65. package/json/serializer/module.f.ts +70 -0
  66. package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
  67. package/json/{test.f.mjs → test.f.ts} +3 -3
  68. package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
  69. package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  70. package/nanvm-lib/src/extension.rs +15 -4
  71. package/nanvm-lib/src/interface.rs +7 -10
  72. package/nanvm-lib/src/lib.rs +3 -3
  73. package/nanvm-lib/src/naive.rs +10 -3
  74. package/nanvm-lib/src/nanenum.rs +5 -1
  75. package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
  76. package/nodejs/version/{main.mjs → main.ts} +1 -1
  77. package/nodejs/version/module.f.ts +42 -0
  78. package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
  79. package/package.json +9 -9
  80. package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
  81. package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
  82. package/text/module.f.ts +30 -0
  83. package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
  84. package/text/{test.f.mjs → test.f.ts} +5 -4
  85. package/text/utf16/module.f.ts +108 -0
  86. package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
  87. package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
  88. package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
  89. package/tsconfig.json +4 -1
  90. package/types/array/module.f.ts +89 -0
  91. package/types/array/{test.f.mjs → test.f.ts} +3 -3
  92. package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
  93. package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
  94. package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
  95. package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
  96. package/types/bit_vec/README.md +18 -0
  97. package/types/bit_vec/module.f.ts +185 -0
  98. package/types/bit_vec/test.f.ts +129 -0
  99. package/types/btree/find/module.f.ts +92 -0
  100. package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
  101. package/types/btree/{module.f.mjs → module.f.ts} +9 -9
  102. package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
  103. package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
  104. package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
  105. package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
  106. package/types/btree/{test.f.mjs → test.f.ts} +34 -26
  107. package/types/btree/types/module.f.ts +27 -0
  108. package/types/byte_set/module.f.ts +70 -0
  109. package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
  110. package/types/function/compare/module.f.ts +26 -0
  111. package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
  112. package/types/function/module.f.ts +43 -0
  113. package/types/function/operator/module.f.ts +63 -0
  114. package/types/function/test.f.ts +20 -0
  115. package/types/list/module.f.ts +345 -0
  116. package/types/list/{test.f.mjs → test.f.ts} +30 -24
  117. package/types/map/module.f.ts +65 -0
  118. package/types/map/{test.f.mjs → test.f.ts} +6 -5
  119. package/types/nibble_set/module.f.ts +34 -0
  120. package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
  121. package/types/nullable/module.f.ts +9 -0
  122. package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
  123. package/types/number/module.f.ts +16 -0
  124. package/types/number/{test.f.mjs → test.f.ts} +7 -5
  125. package/types/object/module.f.ts +30 -0
  126. package/types/object/{test.f.mjs → test.f.ts} +2 -2
  127. package/types/range/module.f.ts +10 -0
  128. package/types/range/{test.f.mjs → test.f.ts} +1 -1
  129. package/types/range_map/module.f.ts +70 -0
  130. package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
  131. package/types/result/module.f.ts +20 -0
  132. package/types/result/{module.mjs → module.ts} +4 -3
  133. package/types/sorted_list/module.f.ts +83 -0
  134. package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
  135. package/types/sorted_set/module.f.ts +36 -0
  136. package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
  137. package/types/string/module.f.ts +24 -0
  138. package/types/string/{test.f.mjs → test.f.ts} +2 -2
  139. package/types/string_set/module.f.ts +37 -0
  140. package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
  141. package/com/cpp/testlib.f.mjs +0 -8
  142. package/com/cs/testlib.f.mjs +0 -8
  143. package/com/rust/module.f.mjs +0 -272
  144. package/com/rust/testlib.f.mjs +0 -8
  145. package/com/types/module.f.mjs +0 -67
  146. package/commonjs/build/module.f.mjs +0 -100
  147. package/commonjs/module/function/module.f.mjs +0 -21
  148. package/commonjs/module/module.f.mjs +0 -53
  149. package/commonjs/module.f.mjs +0 -11
  150. package/commonjs/package/dependencies/module.f.mjs +0 -22
  151. package/commonjs/package/module.f.mjs +0 -36
  152. package/dev/index.mjs +0 -3
  153. package/dev/test.mjs +0 -60
  154. package/fsm/module.f.mjs +0 -99
  155. package/html/module.f.mjs +0 -102
  156. package/js/tokenizer/module.f.mjs +0 -872
  157. package/json/module.f.mjs +0 -89
  158. package/json/serializer/module.f.mjs +0 -87
  159. package/jsr.json +0 -66
  160. package/nodejs/version/module.f.mjs +0 -47
  161. package/out/com/cpp/module.f.d.mts +0 -7
  162. package/out/com/cpp/module.f.mjs +0 -130
  163. package/out/com/cpp/test.f.d.mts +0 -2
  164. package/out/com/cpp/test.f.mjs +0 -40
  165. package/out/com/cpp/testlib.f.d.mts +0 -2
  166. package/out/com/cpp/testlib.f.mjs +0 -7
  167. package/out/com/cs/module.f.d.mts +0 -7
  168. package/out/com/cs/module.f.mjs +0 -104
  169. package/out/com/cs/test.f.d.mts +0 -2
  170. package/out/com/cs/test.f.mjs +0 -43
  171. package/out/com/cs/testlib.f.d.mts +0 -2
  172. package/out/com/cs/testlib.f.mjs +0 -7
  173. package/out/com/rust/module.f.d.mts +0 -23
  174. package/out/com/rust/module.f.mjs +0 -224
  175. package/out/com/rust/test.f.d.mts +0 -2
  176. package/out/com/rust/test.f.mjs +0 -123
  177. package/out/com/rust/testlib.f.d.mts +0 -2
  178. package/out/com/rust/testlib.f.mjs +0 -7
  179. package/out/com/test/build.d.mts +0 -1
  180. package/out/com/test/build.f.d.mts +0 -26
  181. package/out/com/test/build.f.mjs +0 -98
  182. package/out/com/test/build.mjs +0 -40
  183. package/out/com/types/module.f.d.mts +0 -23
  184. package/out/com/types/module.f.mjs +0 -51
  185. package/out/com/types/testlib.f.d.mts +0 -44
  186. package/out/com/types/testlib.f.mjs +0 -30
  187. package/out/commonjs/build/module.f.d.mts +0 -20
  188. package/out/commonjs/build/module.f.mjs +0 -107
  189. package/out/commonjs/build/test.f.d.mts +0 -3
  190. package/out/commonjs/build/test.f.mjs +0 -102
  191. package/out/commonjs/module/function/module.f.d.mts +0 -5
  192. package/out/commonjs/module/function/module.f.mjs +0 -15
  193. package/out/commonjs/module/module.f.d.mts +0 -52
  194. package/out/commonjs/module/module.f.mjs +0 -48
  195. package/out/commonjs/module.d.mts +0 -3
  196. package/out/commonjs/module.f.d.mts +0 -2
  197. package/out/commonjs/module.f.mjs +0 -10
  198. package/out/commonjs/module.mjs +0 -26
  199. package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
  200. package/out/commonjs/package/dependencies/module.f.mjs +0 -21
  201. package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
  202. package/out/commonjs/package/dependencies/test.f.mjs +0 -15
  203. package/out/commonjs/package/module.f.d.mts +0 -21
  204. package/out/commonjs/package/module.f.mjs +0 -40
  205. package/out/commonjs/package/test.f.d.mts +0 -2
  206. package/out/commonjs/package/test.f.mjs +0 -27
  207. package/out/commonjs/path/module.f.d.mts +0 -60
  208. package/out/commonjs/path/module.f.mjs +0 -171
  209. package/out/commonjs/path/test.f.d.mts +0 -25
  210. package/out/commonjs/path/test.f.mjs +0 -231
  211. package/out/commonjs/test.d.mts +0 -8
  212. package/out/commonjs/test.mjs +0 -87
  213. package/out/crypto/prime_field/module.f.d.mts +0 -67
  214. package/out/crypto/prime_field/module.f.mjs +0 -110
  215. package/out/crypto/prime_field/test.f.d.mts +0 -13
  216. package/out/crypto/prime_field/test.f.mjs +0 -152
  217. package/out/crypto/secp/module.f.d.mts +0 -110
  218. package/out/crypto/secp/module.f.mjs +0 -173
  219. package/out/crypto/secp/test.f.d.mts +0 -5
  220. package/out/crypto/secp/test.f.mjs +0 -78
  221. package/out/crypto/sha2/module.f.d.mts +0 -15
  222. package/out/crypto/sha2/module.f.mjs +0 -172
  223. package/out/crypto/sha2/test.f.d.mts +0 -10
  224. package/out/crypto/sha2/test.f.mjs +0 -86
  225. package/out/dev/index.d.mts +0 -1
  226. package/out/dev/index.mjs +0 -2
  227. package/out/dev/module.d.mts +0 -26
  228. package/out/dev/module.f.d.mts +0 -1
  229. package/out/dev/module.f.mjs +0 -2
  230. package/out/dev/module.mjs +0 -167
  231. package/out/dev/test/module.f.d.mts +0 -25
  232. package/out/dev/test/module.f.mjs +0 -134
  233. package/out/dev/test.d.mts +0 -3
  234. package/out/dev/test.f.d.mts +0 -9
  235. package/out/dev/test.f.mjs +0 -58
  236. package/out/dev/test.mjs +0 -52
  237. package/out/djs/module.f.d.mts +0 -20
  238. package/out/djs/module.f.mjs +0 -79
  239. package/out/djs/parser/module.f.d.mts +0 -56
  240. package/out/djs/parser/module.f.mjs +0 -448
  241. package/out/djs/parser/test.f.d.mts +0 -13
  242. package/out/djs/parser/test.f.mjs +0 -569
  243. package/out/djs/test.f.d.mts +0 -12
  244. package/out/djs/test.f.mjs +0 -84
  245. package/out/djs/tokenizer/module.f.d.mts +0 -13
  246. package/out/djs/tokenizer/module.f.mjs +0 -91
  247. package/out/djs/tokenizer/test.f.d.mts +0 -7
  248. package/out/djs/tokenizer/test.f.mjs +0 -530
  249. package/out/fsc/module.f.d.mts +0 -7
  250. package/out/fsc/module.f.mjs +0 -105
  251. package/out/fsc/test.f.d.mts +0 -4
  252. package/out/fsc/test.f.mjs +0 -19
  253. package/out/fsm/module.f.d.mts +0 -14
  254. package/out/fsm/module.f.mjs +0 -80
  255. package/out/fsm/test.f.d.mts +0 -5
  256. package/out/fsm/test.f.mjs +0 -138
  257. package/out/html/module.f.d.mts +0 -17
  258. package/out/html/module.f.mjs +0 -80
  259. package/out/html/test.f.d.mts +0 -10
  260. package/out/html/test.f.mjs +0 -45
  261. package/out/issues/test.f.d.mts +0 -16
  262. package/out/issues/test.f.mjs +0 -66
  263. package/out/js/tokenizer/module.f.d.mts +0 -163
  264. package/out/js/tokenizer/module.f.mjs +0 -729
  265. package/out/js/tokenizer/test.f.d.mts +0 -9
  266. package/out/js/tokenizer/test.f.mjs +0 -906
  267. package/out/json/module.f.d.mts +0 -33
  268. package/out/json/module.f.mjs +0 -89
  269. package/out/json/parser/module.f.d.mts +0 -32
  270. package/out/json/parser/module.f.mjs +0 -224
  271. package/out/json/parser/test.f.d.mts +0 -5
  272. package/out/json/parser/test.f.mjs +0 -329
  273. package/out/json/serializer/module.f.d.mts +0 -36
  274. package/out/json/serializer/module.f.mjs +0 -67
  275. package/out/json/serializer/test.f.d.mts +0 -8
  276. package/out/json/serializer/test.f.mjs +0 -87
  277. package/out/json/test.f.d.mts +0 -8
  278. package/out/json/test.f.mjs +0 -61
  279. package/out/json/tokenizer/module.f.d.mts +0 -13
  280. package/out/json/tokenizer/module.f.mjs +0 -78
  281. package/out/json/tokenizer/test.f.d.mts +0 -6
  282. package/out/json/tokenizer/test.f.mjs +0 -420
  283. package/out/nanvm-lib/tests/test.f.d.mts +0 -36
  284. package/out/nanvm-lib/tests/test.f.mjs +0 -87
  285. package/out/nodejs/version/main.d.mts +0 -1
  286. package/out/nodejs/version/main.mjs +0 -3
  287. package/out/nodejs/version/module.f.d.mts +0 -12
  288. package/out/nodejs/version/module.f.mjs +0 -34
  289. package/out/nodejs/version/test.f.d.mts +0 -2
  290. package/out/nodejs/version/test.f.mjs +0 -97
  291. package/out/text/ascii/module.f.d.mts +0 -70
  292. package/out/text/ascii/module.f.mjs +0 -154
  293. package/out/text/ascii/test.f.d.mts +0 -4
  294. package/out/text/ascii/test.f.mjs +0 -14
  295. package/out/text/module.f.d.mts +0 -13
  296. package/out/text/module.f.mjs +0 -19
  297. package/out/text/sgr/module.f.d.mts +0 -12
  298. package/out/text/sgr/module.f.mjs +0 -17
  299. package/out/text/test.f.d.mts +0 -2
  300. package/out/text/test.f.mjs +0 -19
  301. package/out/text/utf16/module.f.d.mts +0 -12
  302. package/out/text/utf16/module.f.mjs +0 -86
  303. package/out/text/utf16/test.f.d.mts +0 -6
  304. package/out/text/utf16/test.f.mjs +0 -145
  305. package/out/text/utf8/module.f.d.mts +0 -10
  306. package/out/text/utf8/module.f.mjs +0 -126
  307. package/out/text/utf8/test.f.d.mts +0 -6
  308. package/out/text/utf8/test.f.mjs +0 -175
  309. package/out/types/array/module.f.d.mts +0 -31
  310. package/out/types/array/module.f.mjs +0 -95
  311. package/out/types/array/test.f.d.mts +0 -10
  312. package/out/types/array/test.f.mjs +0 -116
  313. package/out/types/bigfloat/module.f.d.mts +0 -6
  314. package/out/types/bigfloat/module.f.mjs +0 -77
  315. package/out/types/bigfloat/test.f.d.mts +0 -6
  316. package/out/types/bigfloat/test.f.mjs +0 -349
  317. package/out/types/bigint/module.f.d.mts +0 -29
  318. package/out/types/bigint/module.f.mjs +0 -114
  319. package/out/types/bigint/test.f.d.mts +0 -16
  320. package/out/types/bigint/test.f.mjs +0 -199
  321. package/out/types/bit_vec/module.f.d.mts +0 -72
  322. package/out/types/bit_vec/module.f.mjs +0 -83
  323. package/out/types/bit_vec/test.f.d.mts +0 -9
  324. package/out/types/bit_vec/test.f.mjs +0 -60
  325. package/out/types/btree/find/module.f.d.mts +0 -36
  326. package/out/types/btree/find/module.f.mjs +0 -137
  327. package/out/types/btree/find/test.f.d.mts +0 -2
  328. package/out/types/btree/find/test.f.mjs +0 -156
  329. package/out/types/btree/module.f.d.mts +0 -5
  330. package/out/types/btree/module.f.mjs +0 -34
  331. package/out/types/btree/remove/module.f.d.mts +0 -14
  332. package/out/types/btree/remove/module.f.mjs +0 -209
  333. package/out/types/btree/remove/test.f.d.mts +0 -7
  334. package/out/types/btree/remove/test.f.mjs +0 -638
  335. package/out/types/btree/set/module.f.d.mts +0 -5
  336. package/out/types/btree/set/module.f.mjs +0 -114
  337. package/out/types/btree/set/test.f.d.mts +0 -2
  338. package/out/types/btree/set/test.f.mjs +0 -390
  339. package/out/types/btree/test.f.d.mts +0 -13
  340. package/out/types/btree/test.f.mjs +0 -83
  341. package/out/types/btree/types/module.f.d.mts +0 -14
  342. package/out/types/btree/types/module.f.mjs +0 -50
  343. package/out/types/byte_set/module.f.d.mts +0 -25
  344. package/out/types/byte_set/module.f.mjs +0 -42
  345. package/out/types/byte_set/test.f.d.mts +0 -13
  346. package/out/types/byte_set/test.f.mjs +0 -123
  347. package/out/types/function/compare/module.f.d.mts +0 -23
  348. package/out/types/function/compare/module.f.mjs +0 -22
  349. package/out/types/function/compare/test.f.d.mts +0 -2
  350. package/out/types/function/compare/test.f.mjs +0 -8
  351. package/out/types/function/module.f.d.mts +0 -51
  352. package/out/types/function/module.f.mjs +0 -44
  353. package/out/types/function/operator/module.f.d.mts +0 -60
  354. package/out/types/function/operator/module.f.mjs +0 -60
  355. package/out/types/function/test.f.d.mts +0 -2
  356. package/out/types/function/test.f.mjs +0 -15
  357. package/out/types/list/module.f.d.mts +0 -82
  358. package/out/types/list/module.f.mjs +0 -269
  359. package/out/types/list/test.f.d.mts +0 -38
  360. package/out/types/list/test.f.mjs +0 -401
  361. package/out/types/map/module.f.d.mts +0 -21
  362. package/out/types/map/module.f.mjs +0 -54
  363. package/out/types/map/test.f.d.mts +0 -5
  364. package/out/types/map/test.f.mjs +0 -115
  365. package/out/types/nibble_set/module.f.d.mts +0 -16
  366. package/out/types/nibble_set/module.f.mjs +0 -19
  367. package/out/types/nibble_set/test.f.d.mts +0 -13
  368. package/out/types/nibble_set/test.f.mjs +0 -90
  369. package/out/types/nullable/module.f.d.mts +0 -9
  370. package/out/types/nullable/module.f.mjs +0 -9
  371. package/out/types/nullable/test.f.d.mts +0 -2
  372. package/out/types/nullable/test.f.mjs +0 -12
  373. package/out/types/number/module.f.d.mts +0 -7
  374. package/out/types/number/module.f.mjs +0 -12
  375. package/out/types/number/test.f.d.mts +0 -11
  376. package/out/types/number/test.f.mjs +0 -126
  377. package/out/types/object/module.f.d.mts +0 -22
  378. package/out/types/object/module.f.mjs +0 -27
  379. package/out/types/object/test.f.d.mts +0 -5
  380. package/out/types/object/test.f.mjs +0 -17
  381. package/out/types/range/module.f.d.mts +0 -6
  382. package/out/types/range/module.f.mjs +0 -6
  383. package/out/types/range/test.f.d.mts +0 -2
  384. package/out/types/range/test.f.mjs +0 -18
  385. package/out/types/range_map/module.f.d.mts +0 -19
  386. package/out/types/range_map/module.f.mjs +0 -84
  387. package/out/types/range_map/test.f.d.mts +0 -6
  388. package/out/types/range_map/test.f.mjs +0 -201
  389. package/out/types/result/module.d.mts +0 -7
  390. package/out/types/result/module.f.d.mts +0 -22
  391. package/out/types/result/module.f.mjs +0 -25
  392. package/out/types/result/module.mjs +0 -16
  393. package/out/types/sorted_list/module.f.d.mts +0 -53
  394. package/out/types/sorted_list/module.f.mjs +0 -102
  395. package/out/types/sorted_list/test.f.d.mts +0 -5
  396. package/out/types/sorted_list/test.f.mjs +0 -66
  397. package/out/types/sorted_set/module.f.d.mts +0 -19
  398. package/out/types/sorted_set/module.f.mjs +0 -29
  399. package/out/types/sorted_set/test.f.d.mts +0 -6
  400. package/out/types/sorted_set/test.f.mjs +0 -80
  401. package/out/types/string/module.f.d.mts +0 -9
  402. package/out/types/string/module.f.mjs +0 -17
  403. package/out/types/string/test.f.d.mts +0 -15
  404. package/out/types/string/test.f.mjs +0 -58
  405. package/out/types/string_set/module.f.d.mts +0 -13
  406. package/out/types/string_set/module.f.mjs +0 -29
  407. package/out/types/string_set/test.f.d.mts +0 -5
  408. package/out/types/string_set/test.f.mjs +0 -65
  409. package/text/module.f.mjs +0 -27
  410. package/text/utf16/module.f.mjs +0 -96
  411. package/types/array/module.f.mjs +0 -119
  412. package/types/bit_vec/module.f.mjs +0 -90
  413. package/types/bit_vec/test.f.mjs +0 -41
  414. package/types/btree/find/module.f.mjs +0 -125
  415. package/types/btree/types/module.f.mjs +0 -64
  416. package/types/byte_set/module.f.mjs +0 -61
  417. package/types/function/compare/module.f.mjs +0 -29
  418. package/types/function/module.f.mjs +0 -50
  419. package/types/function/operator/module.f.mjs +0 -78
  420. package/types/function/test.f.mjs +0 -17
  421. package/types/list/module.f.mjs +0 -320
  422. package/types/map/module.f.mjs +0 -67
  423. package/types/nibble_set/module.f.mjs +0 -28
  424. package/types/nullable/module.f.mjs +0 -11
  425. package/types/number/module.f.mjs +0 -16
  426. package/types/object/module.f.mjs +0 -33
  427. package/types/range/module.f.mjs +0 -8
  428. package/types/range_map/module.f.mjs +0 -84
  429. package/types/result/module.f.mjs +0 -28
  430. package/types/sorted_list/module.f.mjs +0 -107
  431. package/types/sorted_set/module.f.mjs +0 -38
  432. package/types/string/module.f.mjs +0 -22
  433. package/types/string_set/module.f.mjs +0 -36
@@ -1,19 +0,0 @@
1
- /** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
2
- export const merge: <T>(op: Operators<T>) => RangeMerge<T>;
3
- /** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
4
- export const get: <T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T;
5
- /** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
6
- export const fromRange: <T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>;
7
- export type Entry<T> = [T, number];
8
- export type RangeMap<T> = sortedList.SortedList<Entry<T>>;
9
- export type RangeMapArray<T> = readonly Entry<T>[];
10
- export type Operators<T> = {
11
- readonly union: O.Reduce<T>;
12
- readonly equal: O.Equal<T>;
13
- };
14
- export type RangeState<T> = Option.Nullable<Entry<T>>;
15
- export type RangeMerge<T> = O.Reduce<RangeMap<T>>;
16
- import * as Range from '../range/module.f.mjs';
17
- import * as sortedList from '../sorted_list/module.f.mjs';
18
- import * as O from '../function/operator/module.f.mjs';
19
- import * as Option from '../nullable/module.f.mjs';
@@ -1,84 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as sortedList from '../sorted_list/module.f.mjs';
3
- const { genericMerge } = sortedList;
4
- import * as list from '../list/module.f.mjs';
5
- const { next } = list;
6
- import * as Option from '../nullable/module.f.mjs';
7
- import * as number from '../number/module.f.mjs';
8
- const { cmp } = number;
9
- import * as O from '../function/operator/module.f.mjs';
10
- import * as Range from '../range/module.f.mjs';
11
- /**
12
- * @template T
13
- * @typedef {[T, number]} Entry
14
- */
15
- /**
16
- * @template T
17
- * @typedef {sortedList.SortedList<Entry<T>>} RangeMap
18
- */
19
- /**
20
- * @template T
21
- * @typedef {readonly Entry<T>[]} RangeMapArray
22
- */
23
- /**
24
- * @template T
25
- * @typedef {{
26
- * readonly union: O.Reduce<T>
27
- * readonly equal: O.Equal<T>
28
- * }} Operators
29
- */
30
- /**
31
- * @template T
32
- * @typedef {Option.Nullable<Entry<T>>} RangeState
33
- */
34
- /**
35
- * @template T
36
- * @typedef {O.Reduce<RangeMap<T>>} RangeMerge
37
- */
38
- /** @type {<T>(union: O.Reduce<T>) => (equal: O.Equal<T>) => sortedList.ReduceOp<Entry<T>, RangeState<T>>} */
39
- const reduceOp = union => equal => state => ([aItem, aMax]) => ([bItem, bMax]) => {
40
- const sign = cmp(aMax)(bMax);
41
- const min = sign === 1 ? bMax : aMax;
42
- const u = union(aItem)(bItem);
43
- const newState = state !== null && equal(state[0])(u) ? null : state;
44
- return [newState, sign, [u, min]];
45
- };
46
- /** @type {<T>(equal: O.Equal<T>) => sortedList.TailReduce<Entry<T>, RangeState<T>>} */
47
- const tailReduce = equal => state => tail => {
48
- if (state === null) {
49
- return tail;
50
- }
51
- const tailResult = next(tail);
52
- if (tailResult === null) {
53
- return [state];
54
- }
55
- if (equal(state[0])(tailResult.first[0])) {
56
- return tailResult;
57
- }
58
- return { first: state, tail: tailResult };
59
- };
60
- /** @type {<T>(op: Operators<T>) => RangeMerge<T>} */
61
- export const merge = ({ union, equal }) => genericMerge({ reduceOp: reduceOp(union)(equal), tailReduce: tailReduce(equal) })(null);
62
- /** @type {<T>(def: T) => (value: number) => (rm: RangeMapArray<T>) => T} */
63
- export const get = def => value => rm => {
64
- const len = rm.length;
65
- let b = 0;
66
- let e = len - 1;
67
- while (true) {
68
- if (b >= len) {
69
- return def;
70
- }
71
- if (e - b < 0) {
72
- return rm[b][0];
73
- }
74
- const mid = b + (e - b >> 1);
75
- if (value <= rm[mid][1]) {
76
- e = mid - 1;
77
- }
78
- else {
79
- b = mid + 1;
80
- }
81
- }
82
- };
83
- /** @type {<T>(def: T) => (r: Range.Range) => (value: T) => RangeMapArray<T>} */
84
- export const fromRange = def => ([a, b]) => v => [[def, a - 1], [v, b]];
@@ -1,6 +0,0 @@
1
- declare namespace _default {
2
- let merge: (() => void)[];
3
- function get(): (() => void)[];
4
- function fromRange(): (() => void)[];
5
- }
6
- export default _default;
@@ -1,201 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- import * as compare from '../function/compare/module.f.mjs';
3
- const { unsafeCmp } = compare;
4
- import * as json from '../../json/module.f.mjs';
5
- import * as object from '../object/module.f.mjs';
6
- const { sort } = object;
7
- import * as sortedSet from '../sorted_set/module.f.mjs';
8
- import * as list from '../list/module.f.mjs';
9
- import * as operator from '../function/operator/module.f.mjs';
10
- /** @type {(a: readonly json.Unknown[]) => string} */
11
- const stringify = json.stringify(sort);
12
- /** @type {_.Operators<sortedSet.SortedSet<string>>} */
13
- const op = { union: sortedSet.union(unsafeCmp), equal: list.equal(operator.strictEqual) };
14
- export default {
15
- merge: [
16
- () => {
17
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
18
- const a = [[['a'], 1], [['b'], 2]];
19
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
20
- const b = null;
21
- const merged = _.merge(op)(a)(b);
22
- const result = stringify(list.toArray(merged));
23
- if (result !== '[[["a"],1],[["b"],2]]') {
24
- throw result;
25
- }
26
- },
27
- () => {
28
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
29
- const a = null;
30
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
31
- const b = [[['a'], 1], [['b'], 2]];
32
- const merged = _.merge(op)(a)(b);
33
- const result = stringify(list.toArray(merged));
34
- if (result !== '[[["a"],1],[["b"],2]]') {
35
- throw result;
36
- }
37
- },
38
- () => {
39
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
40
- const a = [[['a'], 1], [['b'], 2]];
41
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
42
- const b = [[['a'], 1], [['b'], 2]];
43
- const merged = _.merge(op)(a)(b);
44
- const result = stringify(list.toArray(merged));
45
- if (result !== '[[["a"],1],[["b"],2]]') {
46
- throw result;
47
- }
48
- },
49
- () => {
50
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
51
- const a = [[['a'], 1], [['c'], 3]];
52
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
53
- const b = [[['b'], 2], [['d'], 4]];
54
- const merged = _.merge(op)(a)(b);
55
- const result = stringify(list.toArray(merged));
56
- if (result !== '[[["a","b"],1],[["b","c"],2],[["c","d"],3],[["d"],4]]') {
57
- throw result;
58
- }
59
- },
60
- () => {
61
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
62
- const a = [[['a'], 1], [['d'], 4]];
63
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
64
- const b = [[['b'], 2], [['c'], 3]];
65
- const merged = _.merge(op)(a)(b);
66
- const result = stringify(list.toArray(merged));
67
- if (result !== '[[["a","b"],1],[["b","d"],2],[["c","d"],3],[["d"],4]]') {
68
- throw result;
69
- }
70
- },
71
- () => {
72
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
73
- const a = [[['a'], 1], [['b'], 2]];
74
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
75
- const b = [[['b'], 1], [['a'], 2]];
76
- const merged = _.merge(op)(a)(b);
77
- const result = stringify(list.toArray(merged));
78
- if (result !== '[[["a","b"],2]]') {
79
- throw result;
80
- }
81
- },
82
- () => {
83
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
84
- const a = [[['a'], 1], [['b'], 2], [['a'], 3]];
85
- /** @type {_.RangeMap<sortedSet.SortedSet<string>>} */
86
- const b = [[['a'], 5]];
87
- const merged = _.merge(op)(a)(b);
88
- const result = stringify(list.toArray(merged));
89
- if (result !== '[[["a"],1],[["a","b"],2],[["a"],5]]') {
90
- throw result;
91
- }
92
- }
93
- ],
94
- get: () => {
95
- /** @type {sortedSet.SortedSet<string>} */
96
- const sortedSetEmpty = [];
97
- const get = _.get(sortedSetEmpty);
98
- return [
99
- () => {
100
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
101
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
102
- const result = stringify(get(5)(rm));
103
- if (result !== '["a"]') {
104
- throw result;
105
- }
106
- },
107
- () => {
108
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
109
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
110
- const result = stringify(get(10)(rm));
111
- if (result !== '["a"]') {
112
- throw result;
113
- }
114
- },
115
- () => {
116
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
117
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
118
- const result = stringify(get(15)(rm));
119
- if (result !== '["b"]') {
120
- throw result;
121
- }
122
- },
123
- () => {
124
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
125
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
126
- const result = stringify(get(20)(rm));
127
- if (result !== '["b"]') {
128
- throw result;
129
- }
130
- },
131
- () => {
132
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
133
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
134
- const result = stringify(get(25)(rm));
135
- if (result !== '["c"]') {
136
- throw result;
137
- }
138
- },
139
- () => {
140
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
141
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
142
- const result = stringify(get(30)(rm));
143
- if (result !== '["c"]') {
144
- throw result;
145
- }
146
- },
147
- () => {
148
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
149
- const rm = [[['a'], 10], [['b'], 20], [['c'], 30]];
150
- const result = stringify(get(35)(rm));
151
- if (result !== '[]') {
152
- throw result;
153
- }
154
- },
155
- () => {
156
- /** @type {_.RangeMapArray<sortedSet.SortedSet<string>>} */
157
- const rm = [];
158
- const result = stringify(get(10)(rm));
159
- if (result !== '[]') {
160
- throw result;
161
- }
162
- }
163
- ];
164
- },
165
- fromRange: () => {
166
- const def = -1;
167
- const rm = _.fromRange(def)([1, 7])(42);
168
- return [
169
- () => {
170
- const result = _.get(def)(0)(rm);
171
- if (result !== -1) {
172
- throw result;
173
- }
174
- },
175
- () => {
176
- const result = _.get(def)(1)(rm);
177
- if (result !== 42) {
178
- throw result;
179
- }
180
- },
181
- () => {
182
- const result = _.get(def)(3)(rm);
183
- if (result !== 42) {
184
- throw result;
185
- }
186
- },
187
- () => {
188
- const result = _.get(def)(7)(rm);
189
- if (result !== 42) {
190
- throw result;
191
- }
192
- },
193
- () => {
194
- const result = _.get(def)(9)(rm);
195
- if (result !== -1) {
196
- throw result;
197
- }
198
- },
199
- ];
200
- }
201
- };
@@ -1,7 +0,0 @@
1
- declare namespace _default {
2
- export { tryCatch };
3
- }
4
- export default _default;
5
- /** @type {<T>(f: () => T) => result.Result<T, unknown>} */
6
- declare const tryCatch: <T>(f: () => T) => result.Result<T, unknown>;
7
- import * as result from './module.f.mjs';
@@ -1,22 +0,0 @@
1
- /**
2
- * @template T
3
- * @typedef {readonly['ok', T]} Ok
4
- */
5
- /**
6
- * @template E
7
- * @typedef {readonly['error', E]} Error
8
- */
9
- /**
10
- * @template T
11
- * @template E
12
- * @typedef {Ok<T>|Error<E>} Result
13
- */
14
- /** @type {<T>(value: T) => Ok<T>} */
15
- export const ok: <T>(value: T) => Ok<T>;
16
- /** @type {<E>(e: E) => Error<E>} */
17
- export const error: <E>(e: E) => Error<E>;
18
- /** @type {<T, E>(r: Result<T, E>) => T} */
19
- export const unwrap: <T, E>(r: Result<T, E>) => T;
20
- export type Ok<T> = readonly ["ok", T];
21
- export type Error<E> = readonly ["error", E];
22
- export type Result<T, E> = Ok<T> | Error<E>;
@@ -1,25 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- /**
3
- * @template T
4
- * @typedef {readonly['ok', T]} Ok
5
- */
6
- /**
7
- * @template E
8
- * @typedef {readonly['error', E]} Error
9
- */
10
- /**
11
- * @template T
12
- * @template E
13
- * @typedef {Ok<T>|Error<E>} Result
14
- */
15
- /** @type {<T>(value: T) => Ok<T>} */
16
- export const ok = value => ['ok', value];
17
- /** @type {<E>(e: E) => Error<E>} */
18
- export const error = e => ['error', e];
19
- /** @type {<T, E>(r: Result<T, E>) => T} */
20
- export const unwrap = ([kind, v]) => {
21
- if (kind === 'error') {
22
- throw v;
23
- }
24
- return v;
25
- };
@@ -1,16 +0,0 @@
1
- import * as result from './module.f.mjs';
2
- const { ok, error } = result;
3
- /** @type {<T>(f: () => T) => result.Result<T, unknown>} */
4
- const tryCatch = f => {
5
- // Side effect: `try catch` is not allowed in FunctionalScript.
6
- try {
7
- return ok(f());
8
- }
9
- catch (e) {
10
- return error(e);
11
- }
12
- };
13
- export default {
14
- /** @readonly */
15
- tryCatch,
16
- };
@@ -1,53 +0,0 @@
1
- /**
2
- * @template T
3
- * @typedef {list.List<T>} SortedList
4
- */
5
- /**
6
- * @template T
7
- * @typedef {readonly T[]} SortedArray
8
- */
9
- /**
10
- * @template T
11
- * @typedef {(a: T) => (b: T) => compare.Sign} Cmp
12
- */
13
- /**
14
- * @template T
15
- * @template S
16
- * @typedef {(state: S) => (a: T) => (b: T) => readonly[option.Nullable<T>, compare.Sign, S]} ReduceOp
17
- */
18
- /**
19
- * @template T
20
- * @template S
21
- * @typedef {(state: S) => (tail: list.List<T>) => list.List<T>} TailReduce
22
- */
23
- /**
24
- * @template T
25
- * @template S
26
- * @typedef {{
27
- * readonly reduceOp: ReduceOp<T,S>
28
- * readonly tailReduce: TailReduce<T,S>
29
- * }} MergeReduce
30
- */
31
- /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
32
- export const genericMerge: <T, S>(reduce: MergeReduce<T, S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>;
33
- /**
34
- * @template T
35
- * @typedef {ReduceOp<T, null>} CmpReduceOp
36
- */
37
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>} */
38
- export const merge: <T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>;
39
- /** @type {<T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T|null} */
40
- export const find: <T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T | null;
41
- export type SortedList<T> = list.List<T>;
42
- export type SortedArray<T> = readonly T[];
43
- export type Cmp<T> = (a: T) => (b: T) => compare.Sign;
44
- export type ReduceOp<T, S> = (state: S) => (a: T) => (b: T) => readonly [option.Nullable<T>, compare.Sign, S];
45
- export type TailReduce<T, S> = (state: S) => (tail: list.List<T>) => list.List<T>;
46
- export type MergeReduce<T, S> = {
47
- readonly reduceOp: ReduceOp<T, S>;
48
- readonly tailReduce: TailReduce<T, S>;
49
- };
50
- export type CmpReduceOp<T> = ReduceOp<T, null>;
51
- import * as list from '../list/module.f.mjs';
52
- import * as compare from '../function/compare/module.f.mjs';
53
- import * as option from '../nullable/module.f.mjs';
@@ -1,102 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as compare from '../function/compare/module.f.mjs';
3
- import * as list from '../list/module.f.mjs';
4
- import * as option from '../nullable/module.f.mjs';
5
- const { next } = list;
6
- import * as f from '../function/module.f.mjs';
7
- const { identity } = f;
8
- /**
9
- * @template T
10
- * @typedef {list.List<T>} SortedList
11
- */
12
- /**
13
- * @template T
14
- * @typedef {readonly T[]} SortedArray
15
- */
16
- /**
17
- * @template T
18
- * @typedef {(a: T) => (b: T) => compare.Sign} Cmp
19
- */
20
- /**
21
- * @template T
22
- * @template S
23
- * @typedef {(state: S) => (a: T) => (b: T) => readonly[option.Nullable<T>, compare.Sign, S]} ReduceOp
24
- */
25
- /**
26
- * @template T
27
- * @template S
28
- * @typedef {(state: S) => (tail: list.List<T>) => list.List<T>} TailReduce
29
- */
30
- /**
31
- * @template T
32
- * @template S
33
- * @typedef {{
34
- * readonly reduceOp: ReduceOp<T,S>
35
- * readonly tailReduce: TailReduce<T,S>
36
- * }} MergeReduce
37
- */
38
- /** @type {<T,S>(reduce: MergeReduce<T,S>) => (state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
39
- export const genericMerge = ({ reduceOp, tailReduce }) => {
40
- /** @typedef {typeof reduceOp extends ReduceOp<infer T, infer S> ? [T, S] : never} TS */
41
- /** @typedef {TS[0]} T */
42
- /** @typedef {TS[1]} S */
43
- /** @type {(state: S) => (a: list.List<T>) => (b: list.List<T>) => list.List<T>} */
44
- const f = state => a => b => () => {
45
- const aResult = next(a);
46
- if (aResult === null) {
47
- return tailReduce(state)(b);
48
- }
49
- const bResult = next(b);
50
- if (bResult === null) {
51
- return tailReduce(state)(aResult);
52
- }
53
- const [first, sign, stateNext] = reduceOp(state)(aResult.first)(bResult.first);
54
- const aNext = sign === 1 ? a : aResult.tail;
55
- const bNext = sign === -1 ? b : bResult.tail;
56
- const tail = f(stateNext)(aNext)(bNext);
57
- return first === null ? tail : { first, tail };
58
- };
59
- return f;
60
- };
61
- /**
62
- * @template T
63
- * @typedef {ReduceOp<T, null>} CmpReduceOp
64
- */
65
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedList<T>) => (b: SortedList<T>) => SortedList<T>} */
66
- export const merge = cmp => {
67
- /** @typedef {typeof cmp extends Cmp<infer T> ? T : never} T*/
68
- /** @type {TailReduce<T, null>} */
69
- const tailReduce = mergeTail;
70
- return genericMerge({ reduceOp: cmpReduce(cmp), tailReduce })(null);
71
- };
72
- /** @type {<T>(cmp: Cmp<T>) => CmpReduceOp<T>} */
73
- const cmpReduce = cmp => () => a => b => {
74
- const sign = cmp(a)(b);
75
- return [sign === 1 ? b : a, sign, null];
76
- };
77
- /** @type {() => <T>(tail: list.List<T>) => list.List<T>} */
78
- const mergeTail = () => identity;
79
- /** @type {<T>(cmp: Cmp<T>) => (value: T) => (array: SortedArray<T>) => T|null} */
80
- export const find = cmp => value => array => {
81
- let b = 0;
82
- let e = array.length - 1;
83
- while (true) {
84
- if (e - b < 0)
85
- return null;
86
- const mid = b + (e - b >> 1);
87
- const sign = cmp(value)(array[mid]);
88
- switch (sign) {
89
- case -1: {
90
- e = mid - 1;
91
- break;
92
- }
93
- case 0: {
94
- return value;
95
- }
96
- case 1: {
97
- b = mid + 1;
98
- break;
99
- }
100
- }
101
- }
102
- };
@@ -1,5 +0,0 @@
1
- declare namespace _default {
2
- let sortedMergre: (() => void)[];
3
- let find: (() => void)[];
4
- }
5
- export default _default;
@@ -1,66 +0,0 @@
1
- import * as _ from './module.f.mjs';
2
- import * as compare from '../function/compare/module.f.mjs';
3
- const { unsafeCmp } = compare;
4
- import * as json from '../../json/module.f.mjs';
5
- import * as object from '../object/module.f.mjs';
6
- const { sort } = object;
7
- import * as list from '../list/module.f.mjs';
8
- const { toArray, countdown, length } = list;
9
- import * as Map from '../map/module.f.mjs';
10
- import * as f from '../function/module.f.mjs';
11
- const { flip } = f;
12
- /** @type {(a: readonly json.Unknown[]) => string} */
13
- const stringify = json.stringify(sort);
14
- /** @type {<T>(a: T) => (b: T) => Map.Sign} */
15
- const reverseCmp = flip(unsafeCmp);
16
- export default {
17
- sortedMergre: [
18
- () => {
19
- const result = stringify(toArray(_.merge(unsafeCmp)([2, 3, 4])([1, 3, 5])));
20
- if (result !== '[1,2,3,4,5]') {
21
- throw result;
22
- }
23
- },
24
- () => {
25
- const result = stringify(toArray(_.merge(unsafeCmp)([1, 2, 3])([])));
26
- if (result !== '[1,2,3]') {
27
- throw result;
28
- }
29
- },
30
- () => {
31
- const n = 10_000;
32
- const list = countdown(n);
33
- const result = _.merge(reverseCmp)(list)(list);
34
- const len = length(result);
35
- if (len != n) {
36
- throw result;
37
- }
38
- }
39
- ],
40
- find: [
41
- () => {
42
- const result = _.find(unsafeCmp)(0)([0, 10, 20, 30, 40, 50, 60, 70, 80, 90]);
43
- if (result !== 0) {
44
- throw result;
45
- }
46
- },
47
- () => {
48
- const result = _.find(unsafeCmp)(3)([0, 10, 20, 30, 40, 50, 60, 70, 80, 90]);
49
- if (result !== null) {
50
- throw result;
51
- }
52
- },
53
- () => {
54
- const result = _.find(unsafeCmp)(77)([0, 10, 20, 30, 40, 50, 60, 70, 80, 90]);
55
- if (result !== null) {
56
- throw result;
57
- }
58
- },
59
- () => {
60
- const result = _.find(unsafeCmp)(80)([0, 10, 20, 30, 40, 50, 60, 70, 80, 90]);
61
- if (result !== 80) {
62
- throw result;
63
- }
64
- }
65
- ]
66
- };
@@ -1,19 +0,0 @@
1
- /**
2
- * @template T
3
- * @typedef {readonly T[]} SortedSet
4
- */
5
- /**
6
- * @template T
7
- * @typedef {(a: T) => (b: T) => Compare.Sign} Cmp
8
- */
9
- /** @typedef {number} Byte */
10
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
11
- export const union: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
12
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
13
- export const intersect: <T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>;
14
- /** @type {<T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean} */
15
- export const has: <T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean;
16
- export type SortedSet<T> = readonly T[];
17
- export type Cmp<T> = (a: T) => (b: T) => Compare.Sign;
18
- export type Byte = number;
19
- import * as Compare from '../function/compare/module.f.mjs';
@@ -1,29 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as Compare from '../function/compare/module.f.mjs';
3
- import * as list from "../list/module.f.mjs";
4
- const { toArray } = list;
5
- import * as sortedList from '../sorted_list/module.f.mjs';
6
- const { merge, genericMerge, find } = sortedList;
7
- /**
8
- * @template T
9
- * @typedef {readonly T[]} SortedSet
10
- */
11
- /**
12
- * @template T
13
- * @typedef {(a: T) => (b: T) => Compare.Sign} Cmp
14
- */
15
- /** @typedef {number} Byte */
16
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
17
- export const union = cmp => a => b => toArray(merge(cmp)(a)(b));
18
- /** @type {<T>(cmp: Cmp<T>) => (a: SortedSet<T>) => (b: SortedSet<T>) => SortedSet<T>} */
19
- export const intersect = cmp => a => b => toArray(intersectMerge(cmp)(a)(b));
20
- const tailReduce = () => () => null;
21
- /** @type {<T>(cmp: Cmp<T>) => (a: sortedList.SortedList<T>) => (b: sortedList.SortedList<T>) => sortedList.SortedList<T>} */
22
- const intersectMerge = cmp => genericMerge({ reduceOp: intersectReduce(cmp), tailReduce })(null);
23
- /** @type {<T,S>(cmp: Cmp<T>) => sortedList.ReduceOp<T,S>} */
24
- const intersectReduce = cmp => state => a => b => {
25
- const sign = cmp(a)(b);
26
- return [sign === 0 ? a : null, sign, state];
27
- };
28
- /** @type {<T>(cmp: Cmp<T>) => (value: T) => (set: SortedSet<T>) => boolean} */
29
- export const has = cmp => value => set => find(cmp)(value)(set) === value;
@@ -1,6 +0,0 @@
1
- declare namespace _default {
2
- let union: (() => void)[];
3
- let intersect: (() => void)[];
4
- let has: (() => void)[];
5
- }
6
- export default _default;