functionalscript 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/.github/workflows/ci.yml +19 -4
  2. package/CHANGELOG.md +5 -0
  3. package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
  4. package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
  5. package/com/cpp/testlib.f.ts +8 -0
  6. package/com/cs/{module.f.mjs → module.f.ts} +47 -38
  7. package/com/cs/{test.f.mjs → test.f.ts} +2 -2
  8. package/com/cs/testlib.f.ts +8 -0
  9. package/com/rust/module.f.ts +287 -0
  10. package/com/rust/{test.f.mjs → test.f.ts} +1 -1
  11. package/com/rust/testlib.f.ts +8 -0
  12. package/com/test/{build.f.mjs → build.f.ts} +47 -45
  13. package/com/test/{build.mjs → build.ts} +7 -6
  14. package/com/types/module.f.ts +62 -0
  15. package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
  16. package/commonjs/build/module.f.ts +100 -0
  17. package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
  18. package/commonjs/module/function/module.f.ts +13 -0
  19. package/commonjs/module/module.f.ts +41 -0
  20. package/commonjs/module.f.ts +7 -0
  21. package/commonjs/{module.mjs → module.ts} +12 -9
  22. package/commonjs/package/dependencies/module.f.ts +22 -0
  23. package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
  24. package/commonjs/package/module.f.ts +31 -0
  25. package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
  26. package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
  27. package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
  28. package/commonjs/{test.mjs → test.ts} +5 -4
  29. package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
  30. package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
  31. package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
  32. package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
  33. package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
  34. package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
  35. package/deno.json +71 -0
  36. package/dev/README.md +8 -0
  37. package/dev/index.ts +3 -0
  38. package/dev/{module.f.mjs → module.f.ts} +0 -2
  39. package/dev/{module.mjs → module.ts} +65 -60
  40. package/dev/test/{module.f.mjs → module.f.ts} +57 -70
  41. package/dev/{test.f.mjs → test.f.ts} +7 -5
  42. package/dev/test.ts +53 -0
  43. package/djs/{module.f.mjs → module.f.ts} +31 -31
  44. package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
  45. package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
  46. package/djs/serializer/module.f.ts +90 -0
  47. package/djs/{test.f.mjs → test.f.ts} +4 -4
  48. package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
  49. package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  50. package/fsc/{module.f.mjs → module.f.ts} +41 -44
  51. package/fsc/{test.f.mjs → test.f.ts} +8 -6
  52. package/fsm/module.f.ts +107 -0
  53. package/fsm/{test.f.mjs → test.f.ts} +10 -9
  54. package/html/module.f.ts +108 -0
  55. package/html/{test.f.mjs → test.f.ts} +10 -7
  56. package/issues/lang/3110-function.md +25 -1
  57. package/issues/{test.f.mjs → test.f.ts} +3 -2
  58. package/js/tokenizer/module.f.ts +882 -0
  59. package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
  60. package/json/module.f.ts +94 -0
  61. package/json/parser/{module.f.mjs → module.f.ts} +113 -109
  62. package/json/parser/{test.f.mjs → test.f.ts} +10 -9
  63. package/json/serializer/module.f.ts +70 -0
  64. package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
  65. package/json/{test.f.mjs → test.f.ts} +3 -3
  66. package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
  67. package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  68. package/nanvm-lib/src/extension.rs +15 -4
  69. package/nanvm-lib/src/interface.rs +7 -10
  70. package/nanvm-lib/src/lib.rs +3 -3
  71. package/nanvm-lib/src/naive.rs +10 -3
  72. package/nanvm-lib/src/nanenum.rs +5 -1
  73. package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
  74. package/nodejs/version/{main.mjs → main.ts} +1 -1
  75. package/nodejs/version/module.f.ts +42 -0
  76. package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
  77. package/package.json +9 -9
  78. package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
  79. package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
  80. package/text/module.f.ts +30 -0
  81. package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
  82. package/text/{test.f.mjs → test.f.ts} +5 -4
  83. package/text/utf16/module.f.ts +108 -0
  84. package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
  85. package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
  86. package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
  87. package/tsconfig.json +4 -1
  88. package/types/array/module.f.ts +89 -0
  89. package/types/array/{test.f.mjs → test.f.ts} +3 -3
  90. package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
  91. package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
  92. package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
  93. package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
  94. package/types/bit_vec/{module.f.mjs → module.f.ts} +16 -37
  95. package/types/bit_vec/{test.f.mjs → test.f.ts} +1 -1
  96. package/types/btree/find/module.f.ts +92 -0
  97. package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
  98. package/types/btree/{module.f.mjs → module.f.ts} +9 -9
  99. package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
  100. package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
  101. package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
  102. package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
  103. package/types/btree/{test.f.mjs → test.f.ts} +34 -26
  104. package/types/btree/types/module.f.ts +27 -0
  105. package/types/byte_set/module.f.ts +70 -0
  106. package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
  107. package/types/function/compare/module.f.ts +26 -0
  108. package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
  109. package/types/function/module.f.ts +43 -0
  110. package/types/function/operator/module.f.ts +63 -0
  111. package/types/function/test.f.ts +20 -0
  112. package/types/list/module.f.ts +345 -0
  113. package/types/list/{test.f.mjs → test.f.ts} +30 -24
  114. package/types/map/module.f.ts +65 -0
  115. package/types/map/{test.f.mjs → test.f.ts} +6 -5
  116. package/types/nibble_set/module.f.ts +34 -0
  117. package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
  118. package/types/nullable/module.f.ts +9 -0
  119. package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
  120. package/types/number/module.f.ts +16 -0
  121. package/types/number/{test.f.mjs → test.f.ts} +7 -5
  122. package/types/object/module.f.ts +30 -0
  123. package/types/object/{test.f.mjs → test.f.ts} +2 -2
  124. package/types/range/module.f.ts +10 -0
  125. package/types/range/{test.f.mjs → test.f.ts} +1 -1
  126. package/types/range_map/module.f.ts +70 -0
  127. package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
  128. package/types/result/module.f.ts +20 -0
  129. package/types/result/{module.mjs → module.ts} +4 -3
  130. package/types/sorted_list/module.f.ts +83 -0
  131. package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
  132. package/types/sorted_set/module.f.ts +36 -0
  133. package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
  134. package/types/string/module.f.ts +24 -0
  135. package/types/string/{test.f.mjs → test.f.ts} +2 -2
  136. package/types/string_set/module.f.ts +37 -0
  137. package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
  138. package/com/cpp/testlib.f.mjs +0 -8
  139. package/com/cs/testlib.f.mjs +0 -8
  140. package/com/rust/module.f.mjs +0 -272
  141. package/com/rust/testlib.f.mjs +0 -8
  142. package/com/types/module.f.mjs +0 -67
  143. package/commonjs/build/module.f.mjs +0 -100
  144. package/commonjs/module/function/module.f.mjs +0 -21
  145. package/commonjs/module/module.f.mjs +0 -53
  146. package/commonjs/module.f.mjs +0 -11
  147. package/commonjs/package/dependencies/module.f.mjs +0 -22
  148. package/commonjs/package/module.f.mjs +0 -36
  149. package/dev/index.mjs +0 -3
  150. package/dev/test.mjs +0 -60
  151. package/fsm/module.f.mjs +0 -99
  152. package/html/module.f.mjs +0 -102
  153. package/js/tokenizer/module.f.mjs +0 -872
  154. package/json/module.f.mjs +0 -89
  155. package/json/serializer/module.f.mjs +0 -87
  156. package/jsr.json +0 -66
  157. package/nodejs/version/module.f.mjs +0 -47
  158. package/out/com/cpp/module.f.d.mts +0 -7
  159. package/out/com/cpp/module.f.mjs +0 -130
  160. package/out/com/cpp/test.f.d.mts +0 -2
  161. package/out/com/cpp/test.f.mjs +0 -40
  162. package/out/com/cpp/testlib.f.d.mts +0 -2
  163. package/out/com/cpp/testlib.f.mjs +0 -7
  164. package/out/com/cs/module.f.d.mts +0 -7
  165. package/out/com/cs/module.f.mjs +0 -104
  166. package/out/com/cs/test.f.d.mts +0 -2
  167. package/out/com/cs/test.f.mjs +0 -43
  168. package/out/com/cs/testlib.f.d.mts +0 -2
  169. package/out/com/cs/testlib.f.mjs +0 -7
  170. package/out/com/rust/module.f.d.mts +0 -23
  171. package/out/com/rust/module.f.mjs +0 -224
  172. package/out/com/rust/test.f.d.mts +0 -2
  173. package/out/com/rust/test.f.mjs +0 -123
  174. package/out/com/rust/testlib.f.d.mts +0 -2
  175. package/out/com/rust/testlib.f.mjs +0 -7
  176. package/out/com/test/build.d.mts +0 -1
  177. package/out/com/test/build.f.d.mts +0 -26
  178. package/out/com/test/build.f.mjs +0 -98
  179. package/out/com/test/build.mjs +0 -40
  180. package/out/com/types/module.f.d.mts +0 -23
  181. package/out/com/types/module.f.mjs +0 -51
  182. package/out/com/types/testlib.f.d.mts +0 -44
  183. package/out/com/types/testlib.f.mjs +0 -30
  184. package/out/commonjs/build/module.f.d.mts +0 -20
  185. package/out/commonjs/build/module.f.mjs +0 -107
  186. package/out/commonjs/build/test.f.d.mts +0 -3
  187. package/out/commonjs/build/test.f.mjs +0 -102
  188. package/out/commonjs/module/function/module.f.d.mts +0 -5
  189. package/out/commonjs/module/function/module.f.mjs +0 -15
  190. package/out/commonjs/module/module.f.d.mts +0 -52
  191. package/out/commonjs/module/module.f.mjs +0 -48
  192. package/out/commonjs/module.d.mts +0 -3
  193. package/out/commonjs/module.f.d.mts +0 -2
  194. package/out/commonjs/module.f.mjs +0 -10
  195. package/out/commonjs/module.mjs +0 -26
  196. package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
  197. package/out/commonjs/package/dependencies/module.f.mjs +0 -21
  198. package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
  199. package/out/commonjs/package/dependencies/test.f.mjs +0 -15
  200. package/out/commonjs/package/module.f.d.mts +0 -21
  201. package/out/commonjs/package/module.f.mjs +0 -40
  202. package/out/commonjs/package/test.f.d.mts +0 -2
  203. package/out/commonjs/package/test.f.mjs +0 -27
  204. package/out/commonjs/path/module.f.d.mts +0 -60
  205. package/out/commonjs/path/module.f.mjs +0 -171
  206. package/out/commonjs/path/test.f.d.mts +0 -25
  207. package/out/commonjs/path/test.f.mjs +0 -231
  208. package/out/commonjs/test.d.mts +0 -8
  209. package/out/commonjs/test.mjs +0 -87
  210. package/out/crypto/prime_field/module.f.d.mts +0 -67
  211. package/out/crypto/prime_field/module.f.mjs +0 -110
  212. package/out/crypto/prime_field/test.f.d.mts +0 -13
  213. package/out/crypto/prime_field/test.f.mjs +0 -152
  214. package/out/crypto/secp/module.f.d.mts +0 -110
  215. package/out/crypto/secp/module.f.mjs +0 -173
  216. package/out/crypto/secp/test.f.d.mts +0 -5
  217. package/out/crypto/secp/test.f.mjs +0 -78
  218. package/out/crypto/sha2/module.f.d.mts +0 -15
  219. package/out/crypto/sha2/module.f.mjs +0 -172
  220. package/out/crypto/sha2/test.f.d.mts +0 -10
  221. package/out/crypto/sha2/test.f.mjs +0 -86
  222. package/out/dev/index.d.mts +0 -1
  223. package/out/dev/index.mjs +0 -2
  224. package/out/dev/module.d.mts +0 -26
  225. package/out/dev/module.f.d.mts +0 -1
  226. package/out/dev/module.f.mjs +0 -2
  227. package/out/dev/module.mjs +0 -167
  228. package/out/dev/test/module.f.d.mts +0 -25
  229. package/out/dev/test/module.f.mjs +0 -134
  230. package/out/dev/test.d.mts +0 -3
  231. package/out/dev/test.f.d.mts +0 -9
  232. package/out/dev/test.f.mjs +0 -58
  233. package/out/dev/test.mjs +0 -52
  234. package/out/djs/module.f.d.mts +0 -20
  235. package/out/djs/module.f.mjs +0 -79
  236. package/out/djs/parser/module.f.d.mts +0 -56
  237. package/out/djs/parser/module.f.mjs +0 -448
  238. package/out/djs/parser/test.f.d.mts +0 -13
  239. package/out/djs/parser/test.f.mjs +0 -569
  240. package/out/djs/test.f.d.mts +0 -12
  241. package/out/djs/test.f.mjs +0 -84
  242. package/out/djs/tokenizer/module.f.d.mts +0 -13
  243. package/out/djs/tokenizer/module.f.mjs +0 -91
  244. package/out/djs/tokenizer/test.f.d.mts +0 -7
  245. package/out/djs/tokenizer/test.f.mjs +0 -530
  246. package/out/fsc/module.f.d.mts +0 -7
  247. package/out/fsc/module.f.mjs +0 -105
  248. package/out/fsc/test.f.d.mts +0 -4
  249. package/out/fsc/test.f.mjs +0 -19
  250. package/out/fsm/module.f.d.mts +0 -14
  251. package/out/fsm/module.f.mjs +0 -80
  252. package/out/fsm/test.f.d.mts +0 -5
  253. package/out/fsm/test.f.mjs +0 -138
  254. package/out/html/module.f.d.mts +0 -17
  255. package/out/html/module.f.mjs +0 -80
  256. package/out/html/test.f.d.mts +0 -10
  257. package/out/html/test.f.mjs +0 -45
  258. package/out/issues/test.f.d.mts +0 -16
  259. package/out/issues/test.f.mjs +0 -66
  260. package/out/js/tokenizer/module.f.d.mts +0 -163
  261. package/out/js/tokenizer/module.f.mjs +0 -729
  262. package/out/js/tokenizer/test.f.d.mts +0 -9
  263. package/out/js/tokenizer/test.f.mjs +0 -906
  264. package/out/json/module.f.d.mts +0 -33
  265. package/out/json/module.f.mjs +0 -89
  266. package/out/json/parser/module.f.d.mts +0 -32
  267. package/out/json/parser/module.f.mjs +0 -224
  268. package/out/json/parser/test.f.d.mts +0 -5
  269. package/out/json/parser/test.f.mjs +0 -329
  270. package/out/json/serializer/module.f.d.mts +0 -36
  271. package/out/json/serializer/module.f.mjs +0 -67
  272. package/out/json/serializer/test.f.d.mts +0 -8
  273. package/out/json/serializer/test.f.mjs +0 -87
  274. package/out/json/test.f.d.mts +0 -8
  275. package/out/json/test.f.mjs +0 -61
  276. package/out/json/tokenizer/module.f.d.mts +0 -13
  277. package/out/json/tokenizer/module.f.mjs +0 -78
  278. package/out/json/tokenizer/test.f.d.mts +0 -6
  279. package/out/json/tokenizer/test.f.mjs +0 -420
  280. package/out/nanvm-lib/tests/test.f.d.mts +0 -36
  281. package/out/nanvm-lib/tests/test.f.mjs +0 -87
  282. package/out/nodejs/version/main.d.mts +0 -1
  283. package/out/nodejs/version/main.mjs +0 -3
  284. package/out/nodejs/version/module.f.d.mts +0 -12
  285. package/out/nodejs/version/module.f.mjs +0 -34
  286. package/out/nodejs/version/test.f.d.mts +0 -2
  287. package/out/nodejs/version/test.f.mjs +0 -97
  288. package/out/text/ascii/module.f.d.mts +0 -70
  289. package/out/text/ascii/module.f.mjs +0 -154
  290. package/out/text/ascii/test.f.d.mts +0 -4
  291. package/out/text/ascii/test.f.mjs +0 -14
  292. package/out/text/module.f.d.mts +0 -13
  293. package/out/text/module.f.mjs +0 -19
  294. package/out/text/sgr/module.f.d.mts +0 -12
  295. package/out/text/sgr/module.f.mjs +0 -17
  296. package/out/text/test.f.d.mts +0 -2
  297. package/out/text/test.f.mjs +0 -19
  298. package/out/text/utf16/module.f.d.mts +0 -12
  299. package/out/text/utf16/module.f.mjs +0 -86
  300. package/out/text/utf16/test.f.d.mts +0 -6
  301. package/out/text/utf16/test.f.mjs +0 -145
  302. package/out/text/utf8/module.f.d.mts +0 -10
  303. package/out/text/utf8/module.f.mjs +0 -126
  304. package/out/text/utf8/test.f.d.mts +0 -6
  305. package/out/text/utf8/test.f.mjs +0 -175
  306. package/out/types/array/module.f.d.mts +0 -31
  307. package/out/types/array/module.f.mjs +0 -95
  308. package/out/types/array/test.f.d.mts +0 -10
  309. package/out/types/array/test.f.mjs +0 -116
  310. package/out/types/bigfloat/module.f.d.mts +0 -6
  311. package/out/types/bigfloat/module.f.mjs +0 -77
  312. package/out/types/bigfloat/test.f.d.mts +0 -6
  313. package/out/types/bigfloat/test.f.mjs +0 -349
  314. package/out/types/bigint/module.f.d.mts +0 -29
  315. package/out/types/bigint/module.f.mjs +0 -114
  316. package/out/types/bigint/test.f.d.mts +0 -16
  317. package/out/types/bigint/test.f.mjs +0 -199
  318. package/out/types/bit_vec/module.f.d.mts +0 -158
  319. package/out/types/bit_vec/module.f.mjs +0 -194
  320. package/out/types/bit_vec/test.f.d.mts +0 -23
  321. package/out/types/bit_vec/test.f.mjs +0 -210
  322. package/out/types/btree/find/module.f.d.mts +0 -36
  323. package/out/types/btree/find/module.f.mjs +0 -137
  324. package/out/types/btree/find/test.f.d.mts +0 -2
  325. package/out/types/btree/find/test.f.mjs +0 -156
  326. package/out/types/btree/module.f.d.mts +0 -5
  327. package/out/types/btree/module.f.mjs +0 -34
  328. package/out/types/btree/remove/module.f.d.mts +0 -14
  329. package/out/types/btree/remove/module.f.mjs +0 -209
  330. package/out/types/btree/remove/test.f.d.mts +0 -7
  331. package/out/types/btree/remove/test.f.mjs +0 -638
  332. package/out/types/btree/set/module.f.d.mts +0 -5
  333. package/out/types/btree/set/module.f.mjs +0 -114
  334. package/out/types/btree/set/test.f.d.mts +0 -2
  335. package/out/types/btree/set/test.f.mjs +0 -390
  336. package/out/types/btree/test.f.d.mts +0 -13
  337. package/out/types/btree/test.f.mjs +0 -83
  338. package/out/types/btree/types/module.f.d.mts +0 -14
  339. package/out/types/btree/types/module.f.mjs +0 -50
  340. package/out/types/byte_set/module.f.d.mts +0 -25
  341. package/out/types/byte_set/module.f.mjs +0 -42
  342. package/out/types/byte_set/test.f.d.mts +0 -13
  343. package/out/types/byte_set/test.f.mjs +0 -123
  344. package/out/types/function/compare/module.f.d.mts +0 -23
  345. package/out/types/function/compare/module.f.mjs +0 -22
  346. package/out/types/function/compare/test.f.d.mts +0 -2
  347. package/out/types/function/compare/test.f.mjs +0 -8
  348. package/out/types/function/module.f.d.mts +0 -51
  349. package/out/types/function/module.f.mjs +0 -44
  350. package/out/types/function/operator/module.f.d.mts +0 -60
  351. package/out/types/function/operator/module.f.mjs +0 -60
  352. package/out/types/function/test.f.d.mts +0 -2
  353. package/out/types/function/test.f.mjs +0 -15
  354. package/out/types/list/module.f.d.mts +0 -82
  355. package/out/types/list/module.f.mjs +0 -269
  356. package/out/types/list/test.f.d.mts +0 -38
  357. package/out/types/list/test.f.mjs +0 -401
  358. package/out/types/map/module.f.d.mts +0 -21
  359. package/out/types/map/module.f.mjs +0 -54
  360. package/out/types/map/test.f.d.mts +0 -5
  361. package/out/types/map/test.f.mjs +0 -115
  362. package/out/types/nibble_set/module.f.d.mts +0 -16
  363. package/out/types/nibble_set/module.f.mjs +0 -19
  364. package/out/types/nibble_set/test.f.d.mts +0 -13
  365. package/out/types/nibble_set/test.f.mjs +0 -90
  366. package/out/types/nullable/module.f.d.mts +0 -9
  367. package/out/types/nullable/module.f.mjs +0 -9
  368. package/out/types/nullable/test.f.d.mts +0 -2
  369. package/out/types/nullable/test.f.mjs +0 -12
  370. package/out/types/number/module.f.d.mts +0 -7
  371. package/out/types/number/module.f.mjs +0 -12
  372. package/out/types/number/test.f.d.mts +0 -11
  373. package/out/types/number/test.f.mjs +0 -126
  374. package/out/types/object/module.f.d.mts +0 -22
  375. package/out/types/object/module.f.mjs +0 -27
  376. package/out/types/object/test.f.d.mts +0 -5
  377. package/out/types/object/test.f.mjs +0 -17
  378. package/out/types/range/module.f.d.mts +0 -6
  379. package/out/types/range/module.f.mjs +0 -6
  380. package/out/types/range/test.f.d.mts +0 -2
  381. package/out/types/range/test.f.mjs +0 -18
  382. package/out/types/range_map/module.f.d.mts +0 -19
  383. package/out/types/range_map/module.f.mjs +0 -84
  384. package/out/types/range_map/test.f.d.mts +0 -6
  385. package/out/types/range_map/test.f.mjs +0 -201
  386. package/out/types/result/module.d.mts +0 -7
  387. package/out/types/result/module.f.d.mts +0 -22
  388. package/out/types/result/module.f.mjs +0 -25
  389. package/out/types/result/module.mjs +0 -16
  390. package/out/types/sorted_list/module.f.d.mts +0 -53
  391. package/out/types/sorted_list/module.f.mjs +0 -102
  392. package/out/types/sorted_list/test.f.d.mts +0 -5
  393. package/out/types/sorted_list/test.f.mjs +0 -66
  394. package/out/types/sorted_set/module.f.d.mts +0 -19
  395. package/out/types/sorted_set/module.f.mjs +0 -29
  396. package/out/types/sorted_set/test.f.d.mts +0 -6
  397. package/out/types/sorted_set/test.f.mjs +0 -80
  398. package/out/types/string/module.f.d.mts +0 -9
  399. package/out/types/string/module.f.mjs +0 -17
  400. package/out/types/string/test.f.d.mts +0 -15
  401. package/out/types/string/test.f.mjs +0 -58
  402. package/out/types/string_set/module.f.d.mts +0 -13
  403. package/out/types/string_set/module.f.mjs +0 -29
  404. package/out/types/string_set/test.f.d.mts +0 -5
  405. package/out/types/string_set/test.f.mjs +0 -65
  406. package/text/module.f.mjs +0 -27
  407. package/text/utf16/module.f.mjs +0 -96
  408. package/types/array/module.f.mjs +0 -119
  409. package/types/btree/find/module.f.mjs +0 -125
  410. package/types/btree/types/module.f.mjs +0 -64
  411. package/types/byte_set/module.f.mjs +0 -61
  412. package/types/function/compare/module.f.mjs +0 -29
  413. package/types/function/module.f.mjs +0 -50
  414. package/types/function/operator/module.f.mjs +0 -78
  415. package/types/function/test.f.mjs +0 -17
  416. package/types/list/module.f.mjs +0 -320
  417. package/types/map/module.f.mjs +0 -67
  418. package/types/nibble_set/module.f.mjs +0 -28
  419. package/types/nullable/module.f.mjs +0 -11
  420. package/types/number/module.f.mjs +0 -16
  421. package/types/object/module.f.mjs +0 -33
  422. package/types/range/module.f.mjs +0 -8
  423. package/types/range_map/module.f.mjs +0 -84
  424. package/types/result/module.f.mjs +0 -28
  425. package/types/sorted_list/module.f.mjs +0 -107
  426. package/types/sorted_set/module.f.mjs +0 -38
  427. package/types/string/module.f.mjs +0 -22
  428. package/types/string_set/module.f.mjs +0 -36
@@ -1,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;