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,20 +1,22 @@
1
- import * as _ from './module.f.mjs'
2
- import * as compare from '../function/compare/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as compare from '../function/compare/module.f.ts'
3
3
  const { unsafeCmp } = compare
4
- import * as json from '../../json/module.f.mjs'
5
- import * as object from '../object/module.f.mjs'
4
+ import * as json from '../../json/module.f.ts'
5
+ import * as object from '../object/module.f.ts'
6
6
  const { sort } = object
7
- import * as list from '../list/module.f.mjs'
7
+ import * as list from '../list/module.f.ts'
8
8
  const { toArray, countdown, length } = list
9
- import * as Map from '../map/module.f.mjs'
10
- import * as f from '../function/module.f.mjs'
9
+ import * as Map from '../map/module.f.ts'
10
+ import * as f from '../function/module.f.ts'
11
11
  const { flip } = f
12
12
 
13
- /** @type {(a: readonly json.Unknown[]) => string} */
14
- const stringify = a => json.stringify(sort)(a)
13
+ const stringify
14
+ : (a: readonly json.Unknown[]) => string
15
+ = a => json.stringify(sort)(a)
15
16
 
16
- /** @type {<T>(a: T) => (b: T) => Map.Sign} */
17
- const reverseCmp = flip(unsafeCmp)
17
+ const reverseCmp
18
+ : <T>(a: T) => (b: T) => Map.Sign
19
+ = flip(unsafeCmp)
18
20
 
19
21
  export default {
20
22
  union: [
@@ -62,4 +64,4 @@ export default {
62
64
  if (!result) { throw result }
63
65
  }
64
66
  ]
65
- }
67
+ }
@@ -0,0 +1,24 @@
1
+ import * as list from '../list/module.f.ts'
2
+ const { reduce: listReduce, repeat: listRepeat } = list
3
+ import * as f from '../function/module.f.ts'
4
+ const { compose } = f
5
+ import * as compare from '../function/compare/module.f.ts'
6
+ const { unsafeCmp } = compare
7
+ import * as op from '../function/operator/module.f.ts'
8
+ const { join: joinOp, concat: concatOp } = op
9
+
10
+ const reduce
11
+ : (o: op.Reduce<string>) => (input: list.List<string>) => string
12
+ = o => listReduce(o)('')
13
+
14
+ export const join = compose(joinOp)(reduce)
15
+
16
+ export const concat = reduce(concatOp)
17
+
18
+ export const repeat
19
+ : (n: string) => (v: number) => string
20
+ = v => compose(listRepeat(v))(concat)
21
+
22
+ export const cmp
23
+ : (a: string) => (b: string) => compare.Sign
24
+ = unsafeCmp
@@ -1,6 +1,6 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
  const { join, concat, repeat, cmp } = _
3
- import * as list from '../list/module.f.mjs'
3
+ import * as list from '../list/module.f.ts'
4
4
  const { repeat: repeatList } = list
5
5
 
6
6
  export default {
@@ -0,0 +1,37 @@
1
+ import * as BtreeTypes from '../btree/types/module.f.ts'
2
+ import * as btree from '../btree/module.f.ts'
3
+ import * as btf from '../btree/find/module.f.ts'
4
+ const { find, isFound } = btf
5
+ import * as btr from '../btree/remove/module.f.ts'
6
+ const { remove: btreeRemove } = btr
7
+ import * as bts from '../btree/set/module.f.ts'
8
+ const { set: btreeSet } = bts
9
+ export const {
10
+ values,
11
+ empty,
12
+ }: { values: (s: StringSet) => list.List<string>, empty: null } = btree
13
+ import * as string from "../string/module.f.ts"
14
+ const { cmp } = string
15
+ import * as list from '../list/module.f.ts'
16
+ const { fold } = list
17
+ import * as f from '../function/module.f.ts'
18
+ const { compose } = f
19
+
20
+ export type StringSet = BtreeTypes.Tree<string>
21
+
22
+ export const contains
23
+ : (value: string) => (set: StringSet) => boolean
24
+ = value => {
25
+ const f = find(cmp(value))
26
+ return s => s !== null && isFound(f(s).first)
27
+ }
28
+
29
+ export const set
30
+ : (value: string) => (s: StringSet) => StringSet
31
+ = value => btreeSet(cmp(value))(() => value)
32
+
33
+ export const fromValues = fold(set)(null)
34
+
35
+ export const remove
36
+ : (value: string) => (s: StringSet) => StringSet
37
+ = compose(cmp)(btreeRemove)
@@ -1,4 +1,4 @@
1
- import * as _ from './module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
2
 
3
3
  export default {
4
4
  contains: () => {
@@ -31,4 +31,4 @@ export default {
31
31
  r = _.remove('WORLD!')(r)
32
32
  if (r !== null) { throw r }
33
33
  }
34
- }
34
+ }
@@ -1,8 +0,0 @@
1
- import * as string from '../../types/string/module.f.mjs'
2
- const { join } = string
3
- import * as text from '../../text/module.f.mjs'
4
- const { flat } = text
5
- import library from '../types/testlib.f.mjs'
6
- import { cpp } from './module.f.mjs'
7
-
8
- export default () => join('\n')(flat(' ')(cpp('My')(library)))
@@ -1,8 +0,0 @@
1
- import * as text from '../../text/module.f.mjs'
2
- const { flat } = text
3
- import * as string from '../../types/string/module.f.mjs'
4
- const { join } = string
5
- import { cs } from './module.f.mjs'
6
- import library from '../types/testlib.f.mjs'
7
-
8
- export default join('\n')(flat(' ')(cs('My')(library)))
@@ -1,272 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
- /**
4
- * This module generates Rust code for COM interop from a high-level type library definition.
5
- *
6
- * The module provides functions to define structs, traits, and implementations in Rust,
7
- * specifically tailored for `nanocom` interoperation.
8
- */
9
- import * as types from '../types/module.f.mjs'
10
- const { paramList } = types
11
- import * as Text from '../../text/module.f.mjs'
12
- import * as O from '../../types/object/module.f.mjs'
13
- import * as list from '../../types/list/module.f.mjs'
14
- const { flat, map, flatMap } = list
15
- const { entries } = Object
16
- import * as func from '../../types/function/module.f.mjs'
17
- const { fn } = func
18
- import * as string from '../../types/string/module.f.mjs'
19
- const { join } = string
20
-
21
- /** @type {(field: string) => string} */
22
- const rustField = field => `pub ${field},`
23
-
24
- const mapRustField = map(rustField)
25
-
26
- /** @type {(b: list.Thunk<string>) => (name: string) => Text.Block} */
27
- const rustStruct = b => name => [`#[repr(C)]`, `pub struct ${name} {`, mapRustField(b), `}`]
28
-
29
- const commaJoin = join(', ')
30
-
31
- /** @type {(name: string) => string} */
32
- const ref = name => `${name}::Ref`
33
-
34
- /** @type {(name: string) => string} */
35
- const obj = name => `&${name}::Object`
36
-
37
- const self = ['&self']
38
-
39
- /** @type {(p: types.Field) => string} */
40
- const paramName = ([n]) => n
41
-
42
- /** @type {(p: types.FieldArray) => list.Thunk<string>} */
43
- const callList = p => map(paramName)(paramList(p))
44
-
45
- /** @type {(p: types.FieldArray) => string} */
46
- const call = p => commaJoin(callList(p))
47
-
48
- /** @type {(p: types.FieldArray) => string} */
49
- const virtualCall = p => commaJoin(flat([['self'], callList(p)]))
50
-
51
- const super_ = 'super::'
52
-
53
- /** @type {(m: types.Method) => string} */
54
- const assign = ([n]) => `${n}: Self::${n},`
55
-
56
- const mapAssign = map(assign)
57
-
58
- const this_ = ['this: &Object']
59
-
60
- /** @type {(n: string) => string} */
61
- const rustType = n => `pub type ${n} = nanocom::${n}<Interface>;`
62
-
63
- /**
64
- * @template T
65
- * @typedef {T|{}} OptionalProperty
66
- */
67
-
68
- /** @typedef {{readonly where: readonly string[]}} Where */
69
-
70
- /**
71
- * @typedef {OptionalProperty<Where> & {readonly content: Text.Block}} WhereContent
72
- */
73
-
74
- /** @type {(h: string) => (wh: WhereContent) => Text.Block} */
75
- const whereContent = h => wh => {
76
- const w = 'where' in wh ? [
77
- h,
78
- `where`,
79
- mapComma(wh.where),
80
- '{'
81
- ]: [`${h} {`]
82
- const x = [
83
- wh.content,
84
- '}',
85
- ]
86
- return flat([w, x])
87
- }
88
-
89
- /**
90
- * @typedef {{
91
- * readonly param?: string
92
- * readonly trait: string
93
- * readonly type: string
94
- * readonly where?: readonly string[]
95
- * readonly content: Text.Block
96
- * }} Impl
97
- */
98
-
99
- /** @type {(impl: Impl) => Text.Block} */
100
- const rustImpl = i => {
101
- const p = 'param' in i ? `<${i.param}>` : ''
102
- const header = `impl${p} ${i.trait} for ${i.type}`
103
- return whereContent(header)(i)
104
- }
105
-
106
- /**
107
- * @typedef {{
108
- * readonly pub?: true
109
- * readonly type: string
110
- * readonly where?: readonly string[]
111
- * readonly content: Text.Block
112
- * }} Trait
113
- */
114
-
115
- /** @type {(s: string) => string} */
116
- const comma = s => `${s},`
117
-
118
- const mapComma = map(comma)
119
-
120
- /** @type {(t: Trait) => Text.Block} */
121
- const trait = t => {
122
- const p = t.pub === true ? 'pub ' : ''
123
- const h = `${p}trait ${t.type}`
124
- return whereContent(h)(t)
125
- }
126
-
127
- /** @type {(t: Trait) => Text.Block} */
128
- const traitImpl = t => {
129
- const i = rustImpl({
130
- param: 'T',
131
- trait: t.type,
132
- type: 'T',
133
- where,
134
- content: [],
135
- })
136
- return flat([trait({ ...t, where }), i])
137
- }
138
-
139
- const where = ['Self: nanocom::Class<Interface = Interface>', 'nanocom::CObject<Self>: Ex']
140
-
141
- /**
142
- * Generates Rust code for the given type library.
143
- *
144
- * @param {types.Library} library - The library of type definitions to generate Rust code for.
145
- * @returns {Text.Block} - A block of Rust code representing the library.
146
- */
147
- export const rust = library => {
148
-
149
- /** @type {(p: string) => (o: (_: string) => string) => (t: types.Type) => string} */
150
- const type = p => {
151
- /** @type {(o: (_: string) => string) => (t: types.Type) => string} */
152
- const f = o => t => {
153
- if (typeof t === 'string') { return t }
154
- if (t.length === 2) { return `*const ${f(ref)(t[1])}` }
155
- const [id] = t
156
- const fullId = `${p}${id}`
157
- return 'interface' in library[id] ? o(fullId) : fullId
158
- }
159
- return f
160
- }
161
-
162
- /** @type {(p: string) => (o: (_: string) => string) => (f: types.Field) => string} */
163
- const pf = p => o => ([name, t]) => `${name}: ${type(p)(o)(t)}`
164
-
165
- const param = pf(super_)(obj)
166
-
167
- const mapParam = map(param)
168
-
169
- const mapField = map(pf('')(ref))
170
-
171
- /** @type {(fa: types.FieldArray) => (name: string) => Text.Block} */
172
- const struct = fn(entries)
173
- .then(mapField)
174
- .then(rustStruct)
175
- .result
176
-
177
- /** @type {(first: readonly string[]) => (p: types.FieldArray) => string} */
178
- const func = first => p => {
179
- const resultStr = '_' in p ? ` -> ${type(super_)(ref)(p._)}` : ''
180
- const params = commaJoin(flat([first, mapParam(paramList(p))]))
181
- return `(${params})${resultStr}`
182
- }
183
-
184
- /** @type {(n: string) => (p: types.FieldArray) => string} */
185
- const virtualFnType = n => p => `extern "system" fn${n}${func(this_)(p)}`
186
-
187
- /** @type {(m: types.Method) => string} */
188
- const virtualFn = ([n, p]) => `${n}: unsafe ${virtualFnType('')(p)}`
189
-
190
- const mapVirtualFn = map(virtualFn)
191
-
192
- /** @type {(m: types.Method) => string} */
193
- const headerFn = ([n, p]) => `fn ${n}${func(self)(p)}`
194
-
195
- /** @type {(m: types.Method) => string} */
196
- const traitFn = m => `${headerFn(m)};`
197
-
198
- const mapTraitFn = map(traitFn)
199
-
200
- /** @type {(m: types.Method) => Text.Block} */
201
- const implFn = m => {
202
- const [n, p] = m
203
- return [
204
- `${headerFn(m)} {`,
205
- [`unsafe { (self.interface().${n})(${virtualCall(p)}) }`],
206
- '}'
207
- ]
208
- }
209
-
210
- const flatMapImplFn = flatMap(implFn)
211
-
212
- /** @type {(m: types.Method) => Text.Block} */
213
- const impl = ([n, p]) => {
214
- const type = virtualFnType(` ${n}`)(p)
215
- return [
216
- `${type} {`,
217
- [`unsafe { nanocom::CObject::from_object_unchecked(this) }.${n}(${call(p)})`],
218
- '}'
219
- ]
220
- }
221
-
222
- const flatMapImpl = flatMap(impl)
223
-
224
- /** @type {(i: types.Interface) => (name: string) => Text.Block} */
225
- const interface_ = ({ interface: i, guid }) => name => {
226
-
227
- const e = entries(i)
228
-
229
- return [
230
- `pub mod ${name} {`,
231
- [
232
- rustType('Object'),
233
- rustType('Ref'),
234
- rustType('Vmt'),
235
- ],
236
- rustStruct(mapVirtualFn(e))('Interface'),
237
- rustImpl({
238
- trait: 'nanocom::Interface',
239
- type: 'Interface',
240
- content: [`const GUID: nanocom::GUID = 0x${guid.replaceAll('-', '_')};`]
241
- }),
242
- trait({ pub: true, type: 'Ex', content: mapTraitFn(e) }),
243
- rustImpl({
244
- trait: 'Ex',
245
- type: 'Object',
246
- content: flatMapImplFn(e)
247
- }),
248
- traitImpl({
249
- pub: true,
250
- type: 'ClassEx',
251
- content: ['const VMT: Vmt = Vmt {',
252
- [ 'iunknown: nanocom::CObject::<Self>::IUNKNOWN,',
253
- 'interface: Interface {',
254
- mapAssign(e),
255
- '},',
256
- ],
257
- '};'
258
- ]
259
- }),
260
- traitImpl({
261
- type: 'PrivateClassEx',
262
- content: flatMapImpl(e)
263
- }),
264
- '}'
265
- ]
266
- }
267
-
268
- /** @type {(type: O.Entry<types.Definition>) => Text.Block} */
269
- const def = ([name, type]) => ('interface' in type ? interface_(type) : struct(type.struct))(name)
270
-
271
- return flat([['#![allow(non_snake_case)]'], flatMap(def)(entries(library))])
272
- }
@@ -1,8 +0,0 @@
1
- import * as text from '../../text/module.f.mjs'
2
- const { flat } = text
3
- import * as string from '../../types/string/module.f.mjs'
4
- const { join } = string
5
- import { rust } from './module.f.mjs'
6
- import library from '../types/testlib.f.mjs'
7
-
8
- export default join('\n')(flat(' ')(rust(library)))
@@ -1,67 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as O from '../../types/object/module.f.mjs'
3
- import * as list from '../../types/list/module.f.mjs'
4
- import * as f from '../../types/function/module.f.mjs'
5
- const { compose } = f
6
- const { filter } = list
7
- const { entries } = Object
8
-
9
- /** @typedef {{readonly[k in string]: Definition}} Library */
10
-
11
- /** @typedef {Struct|Interface} Definition */
12
-
13
- /**
14
- * @typedef {{
15
- * readonly struct: FieldArray
16
- * }} Struct
17
- */
18
-
19
- /** @typedef {{readonly[k in string]: Type}} FieldArray */
20
-
21
- /** @typedef {O.Entry<Type>} Field */
22
-
23
- /**
24
- * @typedef {{
25
- * readonly interface: MethodArray
26
- * readonly guid: string
27
- * }} Interface
28
- */
29
-
30
- /** @typedef {{readonly[k in string]: FieldArray}} MethodArray */
31
-
32
- /** @typedef {O.Entry<FieldArray>} Method */
33
-
34
- /** @typedef {BaseType|Id|Pointer} Type */
35
-
36
- /** @typedef {readonly[string]} Id */
37
-
38
- /**
39
- * @typedef {|
40
- * 'u8'|
41
- * 'i8'|
42
- * 'u16'|
43
- * 'i16'|
44
- * 'u32'|
45
- * 'i32'|
46
- * 'u64'|
47
- * 'i64'|
48
- * 'usize'|
49
- * 'isize'|
50
- * 'f32'|
51
- * 'f64'|
52
- * 'bool'
53
- * } BaseType
54
- */
55
-
56
- /** @typedef {readonly['*', Type]} Pointer */
57
-
58
- /** @type {(kv: O.Entry<Type>) => boolean} */
59
- const isParam = ([name]) => name !== '_'
60
-
61
- const filterParam = filter(isParam)
62
-
63
- /** @type {(fa: FieldArray) => list.List<Field> } */
64
- export const paramList = compose(entries)(filterParam)
65
-
66
- /** @type {<T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T} */
67
- export const result = v => f => fa => '_' in fa ? f(fa._) : v
@@ -1,100 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as package_ from '../package/module.f.mjs'
3
- import * as module from '../module/module.f.mjs'
4
- const { idToString, dir } = module
5
- import * as function_ from '../module/function/module.f.mjs'
6
- import * as map from '../../types/map/module.f.mjs'
7
- const { empty: mapEmpty, setReplace } = map
8
- import * as object from '../../types/object/module.f.mjs'
9
- const { fromMap } = object
10
- import * as path from '../path/module.f.mjs'
11
- const { parseAndFind } = path
12
- import * as stringSet from '../../types/string_set/module.f.mjs'
13
- const { set: setSet, contains: setContains, empty: stringSetEmpty } = stringSet
14
-
15
- /**
16
- * @template M
17
- * @typedef {{
18
- * readonly packageGet: package_.Get
19
- * readonly moduleMapInterface: module.MapInterface<M>
20
- * readonly moduleId: module.Id
21
- * readonly moduleMap: M
22
- * }} Config
23
- */
24
-
25
- /**
26
- * @template M
27
- * @typedef {readonly[module.State, M]} Result
28
- */
29
-
30
- /** @type {<M>(moduleMap: M) => Result<M>} */
31
- const notFound = moduleMap => [['error', ['file not found']], moduleMap]
32
-
33
- /**
34
- * @type {(compile: function_.Compile) =>
35
- * (packageGet: package_.Get) =>
36
- * <M>(moduleMapInterface: module.MapInterface<M>) =>
37
- * (moduleId: module.Id) =>
38
- * (moduleMap: M) =>
39
- * Result<M>
40
- * }
41
- */
42
- export const getOrBuild = compile => packageGet => moduleMapInterface => {
43
- /** @typedef {typeof moduleMapInterface extends module.MapInterface<infer M> ? M : never} M */
44
-
45
- /**
46
- * @type {(buildSet: stringSet.StringSet) =>
47
- * (moduleId: module.Id) =>
48
- * (source: string) =>
49
- * (moduleMap: M) =>
50
- * Result<M>}
51
- */
52
- const build = buildSet => moduleId => {
53
- const moduleIdStr = idToString(moduleId)
54
- const buildSet1 = setSet(moduleIdStr)(buildSet)
55
- const moduleDir = dir(moduleId)
56
- /** @type {function_.Require<readonly[map.Map<string>, M]>} */
57
- const require_ = p => ([requireMap, m]) => {
58
- /** @type {(e: unknown) => function_.Result<readonly[map.Map<string>, M]>} */
59
- const error = e => [['error', e], [requireMap, m]]
60
- if (moduleDir === null) { return error('file not found') }
61
- const r = parseAndFind(packageGet)(moduleDir)(p)
62
- if (r === null) { return error('file not found') }
63
- const rIdStr = idToString(r.id)
64
- if (setContains(rIdStr)(buildSet1)) { return error('circular reference') }
65
- const [state, m1] = build(buildSet1)(r.id)(r.source)(m)
66
- return [state[0] === 'error' ? state : ['ok', state[1].exports], [setReplace(p)(rIdStr)(requireMap), m1]]
67
- }
68
- return source => moduleMap => {
69
- /** @type {(s: module.State) => (m: M) => Result<M>} */
70
- const set = s => m => [s, moduleMapInterface.setReplace(moduleIdStr)(s)(m)]
71
- /** @type {(e: module.Error) => (m: M) => Result<M>} */
72
- const error = e => set(['error', e])
73
- // check compilation
74
- const [kind, result] = compile(source)
75
- if (kind === 'error') { return error(['compilation error', result])(moduleMap) }
76
- // build
77
- const [[state, value], [requireMap, moduleMap2]] = result(require_)([mapEmpty, moduleMap])
78
- const x = state === 'error' ?
79
- error(['runtime error', value]) :
80
- set(['ok', { exports: value, requireMap: fromMap(requireMap) }])
81
- return x(moduleMap2)
82
- }
83
- }
84
- /** @type {(moduleId: module.Id) => (moduleMap: M) => Result<M>} */
85
- const f = moduleId => moduleMap => {
86
- const moduleIdStr = idToString(moduleId)
87
- // check moduleMap
88
- {
89
- const m = moduleMapInterface.at(moduleIdStr)(moduleMap)
90
- if (m !== null) { return [m, moduleMap] }
91
- }
92
- // check package
93
- const p = packageGet(moduleId.package)
94
- if (p === null) { return notFound(moduleMap) }
95
- // check file
96
- const source = p.file(moduleId.path.join('/'))
97
- return (source === null ? notFound : build(stringSetEmpty)(moduleId)(source))(moduleMap)
98
- }
99
- return f
100
- }
@@ -1,21 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
- /**
4
- * An IO interface for creating and running module functions.
5
- */
6
-
7
- import * as TypesResult from '../../../types/result/module.f.mjs'
8
-
9
- /** @typedef {<M>(require: Require<M>) => (prior: M) => Result<M>} Function_ */
10
-
11
- /**
12
- * @template M
13
- * @typedef {readonly[TypesResult.Result<unknown, unknown>, M]} Result
14
- */
15
-
16
- /**
17
- * @template M
18
- * @typedef {(path: string) => (prior: M) => Result<M>} Require
19
- */
20
-
21
- /** @typedef {(source: string) => TypesResult.Result<Function_, unknown>} Compile */
@@ -1,53 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as O from '../../types/object/module.f.mjs'
3
-
4
- /**
5
- * @template M
6
- * @typedef {{
7
- * readonly at: (moduleId: string) => (moduleMap: M) => State | null
8
- * readonly setReplace: (moduleId: string) => (moduleState: State) => (moduleMap: M) => M
9
- * }} MapInterface
10
- */
11
-
12
- /**
13
- * @typedef {|
14
- * readonly['ok', Module] |
15
- * readonly['error', Error]
16
- * } State
17
- */
18
-
19
- /**
20
- * @typedef {{
21
- * readonly exports: unknown
22
- * readonly requireMap: O.Map<string>
23
- * }} Module
24
- */
25
-
26
- /**
27
- * @typedef {|
28
- * ['file not found'] |
29
- * ['compilation error', unknown] |
30
- * ['runtime error', unknown] |
31
- * ['circular reference']
32
- * } Error
33
- */
34
-
35
- /**
36
- * @typedef {{
37
- * readonly package: string
38
- * readonly path: readonly string[]
39
- * }} Id
40
- */
41
-
42
- /** @type {(id: Id) => Id | null} */
43
- export const dir = id => {
44
- const len = id.path.length
45
- if (len < 1) { return null }
46
- return {
47
- package: id.package,
48
- path: id.path.slice(0, len - 1)
49
- }
50
- }
51
-
52
- /** @type {(id: Id) => string} */
53
- export const idToString = id => `${id.package}/${id.path.join('/')}`
@@ -1,11 +0,0 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
- /** @typedef {(packageName: string) => PackageMap|Package|null} PackageMap */
4
-
5
- /**
6
- * @typedef {readonly[
7
- * string,
8
- * PackageMap,
9
- * (fileName: string) => string|null
10
- * ]} Package
11
- */