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,20 +1,22 @@
1
- import * as _ from './module.f.mjs'
2
- import * as BTree from '../types/module.f.mjs'
3
- import * as s 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 '../../string/module.f.ts'
4
4
  const { cmp } = s
5
- import * as json from '../../../json/module.f.mjs'
6
- import * as o from '../../object/module.f.mjs'
5
+ import * as json from '../../../json/module.f.ts'
6
+ import * as o from '../../object/module.f.ts'
7
7
  const { sort } = o
8
8
 
9
- /** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
10
- const set = node => value => _.set(cmp(value))(() => value)(node)
9
+ const set
10
+ : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string>
11
+ = node => value => _.set(cmp(value))(() => value)(node)
11
12
 
12
13
  const jsonStr = json.stringify(sort)
13
14
 
14
15
  const test = [
15
16
  () => {
16
- /** @type {BTree.Node<string>} */
17
- let _map = ['1']
17
+ let _map
18
+ : BTree.TNode<string>
19
+ = ['1']
18
20
  for (let i = 2; i <= 10; i++)
19
21
  _map = set(_map)((i * i).toString())
20
22
  const r = jsonStr(_map)
@@ -22,8 +24,9 @@ const test = [
22
24
  },
23
25
 
24
26
  () => {
25
- /** @type {BTree.Node<string>} */
26
- let _map = ['1']
27
+ let _map
28
+ : BTree.TNode<string>
29
+ = ['1']
27
30
  for (let i = 2; i <= 11; i++)
28
31
  _map = set(_map)((i * i).toString())
29
32
  const r = jsonStr(_map)
@@ -31,8 +34,9 @@ const test = [
31
34
  },
32
35
 
33
36
  () => {
34
- /** @type {BTree.Node<string>} */
35
- let _map = ['1']
37
+ let _map
38
+ : BTree.TNode<string>
39
+ = ['1']
36
40
  for (let i = 2; i <= 12; i++)
37
41
  _map = set(_map)((i * i).toString())
38
42
  const r = jsonStr(_map)
@@ -40,8 +44,9 @@ const test = [
40
44
  },
41
45
 
42
46
  () => {
43
- /** @type {BTree.Node<string>} */
44
- let _map = ['1']
47
+ let _map
48
+ : BTree.TNode<string>
49
+ = ['1']
45
50
  for (let i = 2; i <= 13; i++)
46
51
  _map = set(_map)((i * i).toString())
47
52
  const r = jsonStr(_map)
@@ -49,8 +54,9 @@ const test = [
49
54
  },
50
55
 
51
56
  () => {
52
- /** @type {BTree.Node<string>} */
53
- let _map = ['1']
57
+ let _map
58
+ : BTree.TNode<string>
59
+ = ['1']
54
60
  for (let i = 2; i <= 14; i++)
55
61
  _map = set(_map)((i * i).toString())
56
62
  const r = jsonStr(_map)
@@ -58,8 +64,9 @@ const test = [
58
64
  },
59
65
 
60
66
  () => {
61
- /** @type {BTree.Node<string>} */
62
- let _map = ['1']
67
+ let _map
68
+ : BTree.TNode<string>
69
+ = ['1']
63
70
  for (let i = 2; i <= 15; i++)
64
71
  _map = set(_map)((i * i).toString())
65
72
  const r = jsonStr(_map)
@@ -67,8 +74,9 @@ const test = [
67
74
  },
68
75
 
69
76
  () => {
70
- /** @type {BTree.Node<string>} */
71
- let _map = ['1']
77
+ let _map
78
+ : BTree.TNode<string>
79
+ = ['1']
72
80
  for (let i = 2; i <= 16; i++)
73
81
  _map = set(_map)((i * i).toString())
74
82
  const r = jsonStr(_map)
@@ -76,8 +84,9 @@ const test = [
76
84
  },
77
85
 
78
86
  () => {
79
- /** @type {BTree.Node<string>} */
80
- let _map = ['1']
87
+ let _map
88
+ : BTree.TNode<string>
89
+ = ['1']
81
90
  for (let i = 2; i <= 17; i++)
82
91
  _map = set(_map)((i * i).toString())
83
92
  const r = jsonStr(_map)
@@ -85,8 +94,9 @@ const test = [
85
94
  },
86
95
 
87
96
  () => {
88
- /** @type {BTree.Node<string>} */
89
- let _map = ['1']
97
+ let _map
98
+ : BTree.TNode<string>
99
+ = ['1']
90
100
  for (let i = 2; i <= 18; i++)
91
101
  _map = set(_map)((i * i).toString())
92
102
  const r = jsonStr(_map)
@@ -96,8 +106,9 @@ const test = [
96
106
  },
97
107
 
98
108
  () => {
99
- /** @type {BTree.Node<string>} */
100
- let _map = ['1']
109
+ let _map
110
+ : BTree.TNode<string>
111
+ = ['1']
101
112
  for (let i = 2; i <= 19; i++)
102
113
  _map = set(_map)((i * i).toString())
103
114
  const r = jsonStr(_map)
@@ -107,8 +118,9 @@ const test = [
107
118
  },
108
119
 
109
120
  () => {
110
- /** @type {BTree.Node<string>} */
111
- let _map = ['1']
121
+ let _map
122
+ : BTree.TNode<string>
123
+ = ['1']
112
124
  for (let i = 2; i <= 20; i++)
113
125
  _map = set(_map)((i * i).toString())
114
126
  const r = jsonStr(_map)
@@ -120,8 +132,9 @@ const test = [
120
132
  },
121
133
 
122
134
  () => {
123
- /** @type {BTree.Node<string>} */
124
- let _map = ['1']
135
+ let _map
136
+ : BTree.TNode<string>
137
+ = ['1']
125
138
  for (let i = 2; i <= 21; i++)
126
139
  _map = set(_map)((i * i).toString())
127
140
  const r = jsonStr(_map)
@@ -133,8 +146,9 @@ const test = [
133
146
  },
134
147
 
135
148
  () => {
136
- /** @type {BTree.Node<string>} */
137
- let _map = ['1']
149
+ let _map
150
+ : BTree.TNode<string>
151
+ = ['1']
138
152
  for (let i = 2; i <= 22; i++)
139
153
  _map = set(_map)((i * i).toString())
140
154
  const r = jsonStr(_map)
@@ -146,8 +160,9 @@ const test = [
146
160
  },
147
161
 
148
162
  () => {
149
- /** @type {BTree.Node<string>} */
150
- let _map = ['1']
163
+ let _map
164
+ : BTree.TNode<string>
165
+ = ['1']
151
166
  for (let i = 2; i <= 23; i++)
152
167
  _map = set(_map)((i * i).toString())
153
168
  const r = jsonStr(_map)
@@ -159,8 +174,9 @@ const test = [
159
174
  },
160
175
 
161
176
  () => {
162
- /** @type {BTree.Node<string>} */
163
- let _map = ['1']
177
+ let _map
178
+ : BTree.TNode<string>
179
+ = ['1']
164
180
  for (let i = 2; i <= 24; i++)
165
181
  _map = set(_map)((i * i).toString())
166
182
  const r = jsonStr(_map)
@@ -172,8 +188,9 @@ const test = [
172
188
  },
173
189
 
174
190
  () => {
175
- /** @type {BTree.Node<string>} */
176
- let _map = ['1']
191
+ let _map
192
+ : BTree.TNode<string>
193
+ = ['1']
177
194
  for (let i = 2; i <= 25; i++)
178
195
  _map = set(_map)((i * i).toString())
179
196
  const r = jsonStr(_map)
@@ -185,8 +202,9 @@ const test = [
185
202
  },
186
203
 
187
204
  () => {
188
- /** @type {BTree.Node<string>} */
189
- let _map = ['1']
205
+ let _map
206
+ : BTree.TNode<string>
207
+ = ['1']
190
208
  for (let i = 2; i <= 26; i++)
191
209
  _map = set(_map)((i * i).toString())
192
210
  const r = jsonStr(_map)
@@ -200,8 +218,9 @@ const test = [
200
218
  },
201
219
 
202
220
  () => {
203
- /** @type {BTree.Node<string>} */
204
- let _map = ['1']
221
+ let _map
222
+ : BTree.TNode<string>
223
+ = ['1']
205
224
  for (let i = 2; i <= 27; i++)
206
225
  _map = set(_map)((i * i).toString())
207
226
  const r = jsonStr(_map)
@@ -215,8 +234,9 @@ const test = [
215
234
  },
216
235
 
217
236
  () => {
218
- /** @type {BTree.Node<string>} */
219
- let _map = ['1']
237
+ let _map
238
+ : BTree.TNode<string>
239
+ = ['1']
220
240
  for (let i = 2; i <= 28; i++)
221
241
  _map = set(_map)((i * i).toString())
222
242
  const r = jsonStr(_map)
@@ -230,8 +250,9 @@ const test = [
230
250
  },
231
251
 
232
252
  () => {
233
- /** @type {BTree.Node<string>} */
234
- let _map = ['1']
253
+ let _map
254
+ : BTree.TNode<string>
255
+ = ['1']
235
256
  for (let i = 2; i <= 29; i++)
236
257
  _map = set(_map)((i * i).toString())
237
258
  const r = jsonStr(_map)
@@ -245,8 +266,9 @@ const test = [
245
266
  },
246
267
 
247
268
  () => {
248
- /** @type {BTree.Node<string>} */
249
- let _map = ['1']
269
+ let _map
270
+ : BTree.TNode<string>
271
+ = ['1']
250
272
  for (let i = 2; i <= 30; i++)
251
273
  _map = set(_map)((i * i).toString())
252
274
  const r = jsonStr(_map)
@@ -260,8 +282,9 @@ const test = [
260
282
  },
261
283
 
262
284
  () => {
263
- /** @type {BTree.Node<string>} */
264
- let _map = ['1']
285
+ let _map
286
+ : BTree.TNode<string>
287
+ = ['1']
265
288
  for (let i = 2; i <= 31; i++)
266
289
  _map = set(_map)((i * i).toString())
267
290
  const r = jsonStr(_map)
@@ -275,8 +298,9 @@ const test = [
275
298
  },
276
299
 
277
300
  () => {
278
- /** @type {BTree.Node<string>} */
279
- let _map = ['1']
301
+ let _map
302
+ : BTree.TNode<string>
303
+ = ['1']
280
304
  for (let i = 2; i <= 32; i++)
281
305
  _map = set(_map)((i * i).toString())
282
306
  const r = jsonStr(_map)
@@ -290,8 +314,9 @@ const test = [
290
314
  },
291
315
 
292
316
  () => {
293
- /** @type {BTree.Node<string>} */
294
- let _map = ['1']
317
+ let _map
318
+ : BTree.TNode<string>
319
+ = ['1']
295
320
  for (let i = 2; i <= 33; i++)
296
321
  _map = set(_map)((i * i).toString())
297
322
  const r = jsonStr(_map)
@@ -305,8 +330,9 @@ const test = [
305
330
  },
306
331
 
307
332
  () => {
308
- /** @type {BTree.Node<string>} */
309
- let _map = ['1']
333
+ let _map
334
+ : BTree.TNode<string>
335
+ = ['1']
310
336
  for (let i = 2; i <= 34; i++)
311
337
  _map = set(_map)((i * i).toString())
312
338
  const r = jsonStr(_map)
@@ -320,8 +346,9 @@ const test = [
320
346
  },
321
347
 
322
348
  () => {
323
- /** @type {BTree.Node<string>} */
324
- let _map = ['1']
349
+ let _map
350
+ : BTree.TNode<string>
351
+ = ['1']
325
352
  for (let i = 2; i <= 35; i++)
326
353
  _map = set(_map)((i * i).toString())
327
354
  const r = jsonStr(_map)
@@ -335,8 +362,9 @@ const test = [
335
362
  },
336
363
 
337
364
  () => {
338
- /** @type {BTree.Node<string>} */
339
- let _map = ['1']
365
+ let _map
366
+ : BTree.TNode<string>
367
+ = ['1']
340
368
  for (let i = 2; i <= 36; i++)
341
369
  _map = set(_map)((i * i).toString())
342
370
  const r = jsonStr(_map)
@@ -350,8 +378,9 @@ const test = [
350
378
  },
351
379
 
352
380
  () => {
353
- /** @type {BTree.Node<string>} */
354
- let _map = ['1']
381
+ let _map
382
+ : BTree.TNode<string>
383
+ = ['1']
355
384
  for (let i = 2; i <= 37; i++)
356
385
  _map = set(_map)((i * i).toString())
357
386
  const r = jsonStr(_map)
@@ -365,8 +394,9 @@ const test = [
365
394
  },
366
395
 
367
396
  () => {
368
- /** @type {BTree.Node<string>} */
369
- let _map = ['1']
397
+ let _map
398
+ : BTree.TNode<string>
399
+ = ['1']
370
400
  for (let i = 2; i <= 38; i++)
371
401
  _map = set(_map)((i * i).toString())
372
402
  const r = jsonStr(_map)
@@ -382,4 +412,4 @@ const test = [
382
412
  }
383
413
  ]
384
414
 
385
- export default test
415
+ export default test
@@ -1,26 +1,29 @@
1
- import * as BTree from './types/module.f.mjs'
2
- import * as _ from './module.f.mjs'
1
+ import * as BTree from './types/module.f.ts'
2
+ import * as _ from './module.f.ts'
3
3
  const { values } = _
4
- import * as json from '../../json/module.f.mjs'
5
- import * as o from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.ts'
5
+ import * as o from '../object/module.f.ts'
6
6
  const { sort } = o
7
- import * as str from '../string/module.f.mjs'
7
+ import * as str from '../string/module.f.ts'
8
8
  const { cmp } = str
9
- import * as list from '../list/module.f.mjs'
10
- import * as s from './set/module.f.mjs'
11
- import * as f from './find/module.f.mjs'
9
+ import * as list from '../list/module.f.ts'
10
+ import * as s from './set/module.f.ts'
11
+ import * as f from './find/module.f.ts'
12
12
 
13
13
  const jsonStr = json.stringify(sort)
14
14
 
15
- /** @type {(sequence: list.List<json.Unknown>) => string} */
16
- const stringify = sequence => jsonStr(list.toArray(sequence))
15
+ const stringify
16
+ : (sequence: list.List<json.Unknown>) => string
17
+ = sequence => jsonStr(list.toArray(sequence))
17
18
 
18
- /** @type {(node: BTree.Node<string>) => (value: string) => BTree.Node<string>} */
19
- const set = node => value => s.set(cmp(value))(() => value)(node)
19
+ const set
20
+ : (node: BTree.TNode<string>) => (value: string) => BTree.TNode<string>
21
+ = node => value => s.set(cmp(value))(() => value)(node)
20
22
 
21
- const valueTest1 = () => {
22
- /** @type {BTree.Node<string>} */
23
- let _map = ['a']
23
+ const valueTest1 =() => {
24
+ let _map
25
+ : BTree.TNode<string>
26
+ = ['a']
24
27
  _map = set(_map)('b')
25
28
  _map = set(_map)('c')
26
29
  _map = set(_map)('d')
@@ -31,8 +34,9 @@ const valueTest1 = () => {
31
34
  }
32
35
 
33
36
  const valuesTest2 = () => {
34
- /** @type {BTree.Node<string>} */
35
- let _map = ['1']
37
+ let _map
38
+ : BTree.TNode<string>
39
+ = ['1']
36
40
  for(let i = 2; i <= 10; i++)
37
41
  _map = set(_map)((i*i).toString())
38
42
  let result = stringify(values(_map))
@@ -40,8 +44,9 @@ const valuesTest2 = () => {
40
44
  }
41
45
 
42
46
  const findTrue = () => {
43
- /** @type {BTree.Node<string>} */
44
- let _map = ['a']
47
+ let _map
48
+ : BTree.TNode<string>
49
+ = ['a']
45
50
  _map = set(_map)('b')
46
51
  _map = set(_map)('c')
47
52
  const result = f.value(f.find(cmp('b'))(_map).first)
@@ -49,8 +54,9 @@ const findTrue = () => {
49
54
  }
50
55
 
51
56
  const find = () => {
52
- /** @type {BTree.Node<string>} */
53
- let _map = ['a']
57
+ let _map
58
+ : BTree.TNode<string>
59
+ = ['a']
54
60
  _map = set(_map)('b')
55
61
  _map = set(_map)('c')
56
62
  const result = f.value(f.find(cmp('e'))(_map).first)
@@ -58,8 +64,9 @@ const find = () => {
58
64
  }
59
65
 
60
66
  const test = () => {
61
- /** @type {BTree.Node<string>} */
62
- let _map = ['a']
67
+ let _map
68
+ : BTree.TNode<string>
69
+ = ['a']
63
70
  _map = set(_map)('b')
64
71
  _map = set(_map)('c')
65
72
  _map = set(_map)('d')
@@ -67,8 +74,9 @@ const test = () => {
67
74
  _map = set(_map)('f')
68
75
  //
69
76
  {
70
- /** @type {list.Result<string>} */
71
- let _item = list.next(values(_map))
77
+ let _item
78
+ : list.Result<string>
79
+ = list.next(values(_map))
72
80
  while (_item !== null) {
73
81
  _item = list.next(_item.tail)
74
82
  }
@@ -81,4 +89,4 @@ export default {
81
89
  findTrue,
82
90
  find,
83
91
  test,
84
- }
92
+ }
@@ -0,0 +1,27 @@
1
+ type Array1<T> = readonly[T]
2
+
3
+ type Array2<T> = readonly[T,T]
4
+
5
+ type Array3<T> = readonly[T,T,T]
6
+
7
+ type Index2 = 0|1
8
+
9
+ type Index3 = 0|1|2
10
+
11
+ type Index5 = 0|1|2|3|4
12
+
13
+ export type Leaf1<T> = Array1<T>
14
+
15
+ export type Leaf2<T> = Array2<T>
16
+
17
+ export type Branch3<T> = readonly[TNode<T>, T, TNode<T>]
18
+
19
+ export type Branch5<T> = readonly[TNode<T>, T, TNode<T>, T, TNode<T>]
20
+
21
+ export type TNode<T> = Leaf1<T> | Leaf2<T> | Branch3<T> | Branch5<T>
22
+
23
+ export type Tree<T> = TNode<T> | null
24
+
25
+ export type Branch1<T> = readonly[TNode<T>]
26
+
27
+ export type Branch7<T> = readonly[...Branch5<T>, T, TNode<T>]
@@ -0,0 +1,70 @@
1
+ import * as f from '../function/module.f.ts'
2
+ const { compose } = f
3
+ import * as RangeMap from '../range_map/module.f.ts'
4
+ import * as SortedSet from '../sorted_set/module.f.ts'
5
+ import * as list from '../list/module.f.ts'
6
+ const { reverse, countdown, flat, map } = list
7
+
8
+ export type ByteSet = bigint
9
+ type Byte = number
10
+
11
+ export const has
12
+ : (n: Byte) => (s: ByteSet) => boolean
13
+ = n => s => ((s >> BigInt(n)) & 1n) === 1n
14
+
15
+ // create a set
16
+
17
+ export const empty = 0n
18
+
19
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
20
+ export const universe = 0xFFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFFn
21
+
22
+ export const one
23
+ : (n: Byte) => ByteSet
24
+ = n => 1n << BigInt(n)
25
+
26
+ export const range
27
+ : (r: readonly[Byte, Byte]) => ByteSet
28
+ = ([b, e]) => one(e - b + 1) - 1n << BigInt(b)
29
+
30
+ // set operations
31
+
32
+ export const union
33
+ : (a: ByteSet) => (b: ByteSet) => ByteSet
34
+ = a => b => a | b
35
+
36
+ const intersect
37
+ : (a: ByteSet) => (b: ByteSet) => ByteSet
38
+ = a => b => a & b
39
+
40
+ export const complement
41
+ : (n: ByteSet) => ByteSet
42
+ = n => universe ^ n
43
+
44
+ const difference
45
+ : (a: ByteSet) => (b: ByteSet) => ByteSet
46
+ = compose(intersect)(compose(complement))
47
+
48
+ // additional operations
49
+
50
+ export const set = compose(one)(union)
51
+
52
+ export const setRange = compose(range)(union)
53
+
54
+ export const unset
55
+ : (n: Byte) => (s: ByteSet) => ByteSet
56
+ = n => s => difference(s)(one(n))
57
+
58
+ const counter = reverse(countdown(256))
59
+
60
+ const toRangeMapOp
61
+ : (n: ByteSet) => (s: string) => (i: number) => RangeMap.RangeMap<SortedSet.SortedSet<string>>
62
+ = n => s => i => {
63
+ const current = has(i + 1)(n)
64
+ const prev = has(i)(n)
65
+ return current === prev ? null : [[prev ? [s] : [], i]]
66
+ }
67
+
68
+ export const toRangeMap
69
+ : (n: ByteSet) => (s: string) => RangeMap.RangeMap<SortedSet.SortedSet<string>>
70
+ = n => s => flat(map(toRangeMapOp(n)(s))(counter))
@@ -1,12 +1,13 @@
1
- import * as _ from './module.f.mjs'
2
- import * as list from '../list/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as list from '../list/module.f.ts'
3
3
  const { every, countdown, map, toArray } = list
4
- import * as json from '../../json/module.f.mjs'
5
- import * as o from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.ts'
5
+ import * as o from '../object/module.f.ts'
6
6
  const { sort } = o
7
7
 
8
- /** @type {(a: readonly json.Unknown[]) => string} */
9
- const stringify = json.stringify(sort)
8
+ const stringify
9
+ : (a: readonly json.Unknown[]) => string
10
+ = json.stringify(sort)
10
11
 
11
12
  export default {
12
13
  has: [
@@ -47,7 +48,7 @@ export default {
47
48
  }
48
49
  ],
49
50
  universe: () => {
50
- const x = every(map(v => _.has(v)(_.universe))(countdown(256)))
51
+ const x = every(map((v: any) => _.has(v)(_.universe))(countdown(256)))
51
52
  if (!x) { throw x }
52
53
  },
53
54
  compliment: {
@@ -0,0 +1,26 @@
1
+ import * as Array from '../../array/module.f.ts'
2
+
3
+ export type Index3 = Array.Index3
4
+
5
+ export type Index5 = Array.Index5
6
+
7
+ type Array2<T> = Array.Array2<T>
8
+
9
+ export type Sign = -1|0|1
10
+
11
+ export type Compare<T> = (_: T) => Sign
12
+
13
+ export const index3
14
+ : <T>(cmp: Compare<T>) => (value: T) => Index3
15
+ = cmp => value => (cmp(value) + 1) as Index3
16
+
17
+ export const index5
18
+ : <T>(cmp: Compare<T>) => (v2: Array2<T>) => Index5
19
+ = cmp => ([v0, v1]) => {
20
+ const _0 = cmp(v0)
21
+ return (_0 <= 0 ? _0 + 1 : cmp(v1) + 3) as Index5
22
+ }
23
+
24
+ export const unsafeCmp
25
+ : <T>(a: T) => (b: T) => Sign
26
+ = a => b => a < b ? -1 : a > b ? 1 : 0
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
  const { unsafeCmp } = _
3
3
 
4
4
  export default () => {
@@ -0,0 +1,43 @@
1
+ /**
2
+ * A generic function type.
3
+ */
4
+ type Func<I, O> = (_: I) => O
5
+
6
+ /**
7
+ * A postfix compose function.
8
+ */
9
+ export const compose
10
+ : <I, X>(g: Func<I, X>) => <O>(f: Func<X, O>) => Func<I, O>
11
+ = g => f => x => f(g(x))
12
+
13
+ /**
14
+ * A generic identity function.
15
+ */
16
+ export const identity
17
+ : <T>(value: T) => T
18
+ = value => value
19
+
20
+ /**
21
+ * Flips the arguments of a curried function.
22
+ */
23
+ export const flip
24
+ : <A, B, C>(f: (a: A) => (b: B) => C) => (b: B) => (a: A) => C
25
+ = f => b => a => f(a)(b)
26
+
27
+ /**
28
+ * A functional utility type that enables seamless chaining of transformations.
29
+ */
30
+ type Fn<I, O> = {
31
+ readonly result: Func<I, O>
32
+ readonly then: <T>(g: Func<O, T>) => Fn<I, T>
33
+ }
34
+
35
+ /**
36
+ * Creates an `Fn` instance from a function, enabling chaining of transformations.
37
+ */
38
+ export const fn
39
+ : <I, O>(f: (i: I) => O) => Fn<I, O>
40
+ = result => ({
41
+ result,
42
+ then: g => fn(compose(result)(g))
43
+ })