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 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
- */