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
@@ -10,14 +10,29 @@ on:
10
10
  pull_request:
11
11
 
12
12
  jobs:
13
- node:
13
+ node20:
14
14
  runs-on: ubuntu-latest
15
15
 
16
16
  strategy:
17
17
  matrix:
18
- node-version: [16, 18, 20, 22, 23]
18
+ node-version: [16, 18, 20]
19
19
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
20
20
 
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - uses: actions/setup-node@v2
24
+ with:
25
+ node-version: ${{ matrix.node-version }}
26
+ - run: npm ci
27
+ - run: npm run test20
28
+
29
+ node:
30
+ runs-on: ubuntu-latest
31
+
32
+ strategy:
33
+ matrix:
34
+ node-version: [22, 23]
35
+
21
36
  steps:
22
37
  - uses: actions/checkout@v2
23
38
  - uses: actions/setup-node@v2
@@ -41,7 +56,7 @@ jobs:
41
56
  - uses: denoland/setup-deno@v1
42
57
  with:
43
58
  deno-version: ${{ matrix.deno-version }}
44
- - run: deno run --quiet --allow-read --allow-env --allow-net ./dev/test.mjs
59
+ - run: deno task test
45
60
 
46
61
  bun:
47
62
 
@@ -50,7 +65,7 @@ jobs:
50
65
  steps:
51
66
  - uses: actions/checkout@v2
52
67
  - run: curl https://bun.sh/install | bash
53
- - run: /home/runner/.bun/bin/bun ./dev/test.mjs
68
+ - run: /home/runner/.bun/bin/bun ./dev/test.ts
54
69
 
55
70
  COM:
56
71
  strategy:
package/CHANGELOG.md CHANGED
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.3.0
11
+
12
+ - Switching to TypeScript file [PR #330] https://github.com/functionalscript/functionalscript/pull/330
13
+ - DJS: add serializer [PR #326] https://github.com/functionalscript/functionalscript/pull/326
14
+
15
+ ## 0.2.6
16
+
17
+ - Refactoring of a vector of bits [PR #328](https://github.com/functionalscript/functionalscript/pull/328)
18
+
10
19
  ## 0.2.5
11
20
 
12
21
  - new [crypto/] directory [PR #327](https://github.com/functionalscript/functionalscript/pull/327).
@@ -1,22 +1,21 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
1
  /**
4
2
  * This module generates C++ code blocks, including structs, interfaces, and method headers,
5
3
  * based on a COM library of type definitions.
6
4
  */
7
5
 
8
- import * as types from '../types/module.f.mjs'
9
- import * as text from '../../text/module.f.mjs'
10
- import * as O from '../../types/object/module.f.mjs'
11
- import * as list from '../../types/list/module.f.mjs'
12
- import * as string from '../../types/string/module.f.mjs'
6
+ import * as types from '../types/module.f.ts'
7
+ import * as text from '../../text/module.f.ts'
8
+ import * as O from '../../types/object/module.f.ts'
9
+ import * as list from '../../types/list/module.f.ts'
10
+ import * as string from '../../types/string/module.f.ts'
13
11
  const { join } = string
14
12
  const { paramList } = types
15
13
  const { map, flatMap, flat } = list
16
14
  const { entries } = Object
17
15
 
18
- /** @type {(name: string) => (body: text.Block) => text.Block} */
19
- const struct = name => body => [`struct ${name}`, '{', body, '};']
16
+ const struct
17
+ = (name: string) => (body: text.Block): text.Block =>
18
+ [`struct ${name}`, '{', body, '};']
20
19
 
21
20
  const baseTypeMap = {
22
21
  u8: 'uint8_t',
@@ -34,24 +33,29 @@ const baseTypeMap = {
34
33
  bool: 'bool',
35
34
  }
36
35
 
37
- /** @type {(t: types.BaseType) => string} */
38
- const baseType = t => baseTypeMap[t]
36
+ const baseType
37
+ : (t: types.BaseType) => string
38
+ = t => baseTypeMap[t]
39
39
 
40
40
  const resultVoid = types.result('void')
41
41
 
42
42
  const namespace = text.curly('namespace')
43
43
 
44
- /** @type {(id: string) => string} */
45
- const comRef = id => `::nanocom::ref<${id}>`
44
+ const comRef
45
+ : (id: string) => string
46
+ = id => `::nanocom::ref<${id}>`
46
47
 
47
- /** @type {(id: string) => string} */
48
- const ptr = id => `${id} const*`
48
+ const ptr
49
+ : (id: string) => string
50
+ = id => `${id} const*`
49
51
 
50
- /** @type {(id: string) => string} */
51
- const ref = id => `${id} const&`
52
+ const ref
53
+ : (id: string) => string
54
+ = id => `${id} const&`
52
55
 
53
- /** @type {(p: types.Field) => string} */
54
- const paramName = ([name]) => name
56
+ const paramName
57
+ : (p: types.Field) => string
58
+ = ([name]) => name
55
59
 
56
60
  const mapParamName = map(paramName)
57
61
 
@@ -59,12 +63,15 @@ const joinComma = join(', ')
59
63
 
60
64
  /**
61
65
  * Generates the C++ code for a library.
62
- * @type {(name: string) => (lib: types.Library) => text.Block}
63
66
  */
64
- export const cpp = name => lib => {
67
+ export const cpp
68
+ : (name: string) => (lib: types.Library) => text.Block
69
+ = name => lib => {
70
+
71
+ const interface_
72
+ : (t: types.Type) => string|null
73
+ = t => {
65
74
 
66
- /** @type {(t: types.Type) => string|null} */
67
- const interface_ = t => {
68
75
  if (!(t instanceof Array) || t.length !== 1) {
69
76
  return null
70
77
  }
@@ -72,8 +79,10 @@ export const cpp = name => lib => {
72
79
  return 'interface' in lib[name] ? name : null
73
80
  }
74
81
 
75
- /** @type {(i: (t: string) => string) => (t: types.Type) => string} */
76
- const objectType = i => t => {
82
+ const objectType
83
+ : (i: (t: string) => string) => (t: types.Type) => string
84
+ = i => t => {
85
+
77
86
  if (typeof (t) === 'string') { return baseType(t) }
78
87
  if (t.length === 2) { return `${type(t[1])} const*` }
79
88
  const [id] = t
@@ -84,28 +93,35 @@ export const cpp = name => lib => {
84
93
 
85
94
  const resultType = objectType(ptr)
86
95
 
87
- /** @type {(s: types.Field) => text.Item} */
88
- const field = ([name, t]) => `${type(t)} ${name};`
96
+ const field
97
+ : (s: types.Field) => text.Item
98
+ = ([name, t]) => `${type(t)} ${name};`
89
99
 
90
100
  const mapField = map(field)
91
101
 
92
- /** @type {(s: types.Struct) => text.Block} */
93
- const defStruct = s => mapField(entries(s.struct))
102
+ const defStruct
103
+ : (s: types.Struct) => text.Block
104
+ = s => mapField(entries(s.struct))
94
105
 
95
- /** @type {(fa: types.FieldArray) => string} */
96
- const cppResult = resultVoid(resultType)
106
+ const cppResult
107
+ : (fa: types.FieldArray) => string
108
+ = resultVoid(resultType)
97
109
 
98
- /** @type {(p: types.Field) => string} */
99
- const param = ([name, t]) => `${objectType(ref)(t)} ${name}`
110
+ const param
111
+ : (p: types.Field) => string
112
+ = ([name, t]) => `${objectType(ref)(t)} ${name}`
100
113
 
101
114
  const mapParam = map(param)
102
115
 
103
- /** @type {(result: string) => (paramArrayStr: string) => (name: string) => text.Item} */
104
- const methodHeader = result => paramArrayStr => name =>
105
- `virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`
116
+ const methodHeader
117
+ : (result: string) => (paramArrayStr: string) => (name: string) => text.Item
118
+ = result => paramArrayStr => name =>
119
+ `virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`
120
+
121
+ const method
122
+ : (m: types.Method) => readonly text.Item[]
123
+ = ([name, paramArray]) => {
106
124
 
107
- /** @type {(m: types.Method) => readonly text.Item[]} */
108
- const method = ([name, paramArray]) => {
109
125
  const result = cppResult(paramArray)
110
126
  const paramL = paramList(paramArray)
111
127
  const paramArrayStr = `(${joinComma(mapParam(paramL))})`
@@ -125,8 +141,10 @@ export const cpp = name => lib => {
125
141
 
126
142
  const mapMethod = flatMap(method)
127
143
 
128
- /** @type {(i: types.Interface) => text.Block} */
129
- const defInterface = ({ guid, interface: i }) => {
144
+ const defInterface
145
+ : (i: types.Interface) => text.Block
146
+ = ({ guid, interface: i }) => {
147
+
130
148
  const g = guid.replaceAll('-', '');
131
149
  const lo = g.substring(0, 16);
132
150
  const hi = g.substring(16);
@@ -136,8 +154,10 @@ export const cpp = name => lib => {
136
154
  ])
137
155
  }
138
156
 
139
- /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
140
- const def = ([name, d]) => 'interface' in d
157
+ const def
158
+ : (kv: O.Entry<types.Definition>) => text.Block
159
+ = ([name, d]) => 'interface' in d
160
+
141
161
  ? [
142
162
  `class ${name} : public ::nanocom::IUnknown`,
143
163
  '{',
@@ -147,8 +167,9 @@ export const cpp = name => lib => {
147
167
  ]
148
168
  : struct(name)(defStruct(d))
149
169
 
150
- /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
151
- const forward = ([name]) => [`struct ${name};`]
170
+ const forward
171
+ : (kv: O.Entry<types.Definition>) => text.Block
172
+ = ([name]) => [`struct ${name};`]
152
173
 
153
174
  const e = entries(lib)
154
175
 
@@ -1,4 +1,4 @@
1
- import cpp from './testlib.f.mjs'
1
+ import cpp from './testlib.f.ts'
2
2
 
3
3
  const f = () =>
4
4
  {
@@ -0,0 +1,8 @@
1
+ import * as string from '../../types/string/module.f.ts'
2
+ const { join } = string
3
+ import * as text from '../../text/module.f.ts'
4
+ const { flat } = text
5
+ import library from '../types/testlib.f.ts'
6
+ import { cpp } from './module.f.ts'
7
+
8
+ export default () => join('\n')(flat(' ')(cpp('My')(library)))
@@ -1,33 +1,31 @@
1
- // @ts-self-types="./module.f.d.mts"
2
-
3
1
  /**
4
2
  * This module generates C# code blocks for COM interop from a high-level type library definition.
5
3
  *
6
4
  * The module maps type definitions (e.g., structs, interfaces, and methods) into C# constructs
7
5
  * with appropriate attributes for COM interop, such as `[StructLayout]`, `[Guid]`, and `[InterfaceType]`.
8
6
  */
9
- import * as types from '../types/module.f.mjs'
7
+ import * as types from '../types/module.f.ts'
10
8
  const { result, paramList } = types
11
- import * as text from '../../text/module.f.mjs'
9
+ import * as text from '../../text/module.f.ts'
12
10
  const { curly } = text
13
- import * as list from '../../types/list/module.f.mjs'
11
+ import * as list from '../../types/list/module.f.ts'
14
12
  const { flat, map, some, flatMap } = list
15
- import * as string from '../../types/string/module.f.mjs'
13
+ import * as string from '../../types/string/module.f.ts'
16
14
  const { join } = string
17
- import * as O from '../../types/object/module.f.mjs'
15
+ import * as O from '../../types/object/module.f.ts'
18
16
  const { entries } = Object
19
17
 
20
- /** @type {(v: string) => string} */
21
- const using = v => `using ${v};`
22
-
23
- /**
24
- * @type {(attributes: list.List<string>) =>
25
- * (type: string) =>
26
- * (name: string) =>
27
- * (body: text.Block) =>
28
- * list.List<text.Item>}
29
- */
30
- const typeDef = attributes => type => name => body =>
18
+ const using
19
+ : (v: string) => string
20
+ = v => `using ${v};`
21
+
22
+ const typeDef
23
+ : (attributes: list.List<string>) =>
24
+ (type: string) =>
25
+ (name: string) =>
26
+ (body: text.Block) =>
27
+ list.List<text.Item>
28
+ = attributes => type => name => body =>
31
29
  flat([
32
30
  map(v => `[${v}]`)(attributes),
33
31
  curly(`public ${type}`)(name)(body)
@@ -49,34 +47,41 @@ const baseTypeMap = {
49
47
  usize: 'UIntPtr',
50
48
  }
51
49
 
52
- /** @type {(t: types.BaseType) => string} */
53
- const baseType = t => baseTypeMap[t]
50
+ const baseType
51
+ : (t: types.BaseType) => string
52
+ = t => baseTypeMap[t]
54
53
 
55
- /** @type {(isUnsafe: boolean) => string} */
56
- const unsafe = isUnsafe => isUnsafe ? 'unsafe ' : ''
54
+ const unsafe
55
+ : (isUnsafe: boolean) => string
56
+ = isUnsafe => isUnsafe ? 'unsafe ' : ''
57
57
 
58
- /** @type {(t: types.Type) => readonly[boolean, string]} */
59
- const fullType = t =>
58
+ const fullType
59
+ : (t: types.Type) => readonly[boolean, string]
60
+ = t =>
60
61
  typeof (t) === 'string' ? [false, baseType(t)] :
61
62
  t.length === 1 ? [false, t[0]] :
62
63
  [true, `${type(t[1])}*`]
63
64
 
64
- /** @type {(m: types.Type) => string} */
65
- const type = t => fullType(t)[1]
65
+ const type
66
+ : (m: types.Type) => string
67
+ = t => fullType(t)[1]
66
68
 
67
- /** @type {(f: types.Field) => string} */
68
- const param = ([name, t]) => `${type(t)} ${name}`
69
+ const param
70
+ : (f: types.Field) => string
71
+ = ([name, t]) => `${type(t)} ${name}`
69
72
 
70
73
  const mapParam = map(param)
71
74
 
72
- /** @type {(f: types.Field) => string} */
73
- const field = ([name, comType]) => {
75
+ const field
76
+ : (f: types.Field) => string
77
+ = ([name, comType]) => {
74
78
  const [isUnsafe, t] = fullType(comType)
75
79
  return `public ${unsafe(isUnsafe)}${t} ${name};`
76
80
  }
77
81
 
78
- /** @type {(field: types.Field) => boolean} */
79
- const isUnsafeField = field => fullType(field[1])[0]
82
+ const isUnsafeField
83
+ : (field: types.Field) => boolean
84
+ = field => fullType(field[1])[0]
80
85
 
81
86
  const mapIsUnsafeField = map(isUnsafeField)
82
87
 
@@ -84,8 +89,10 @@ const resultVoid = result('void')
84
89
 
85
90
  const joinComma = join(', ')
86
91
 
87
- /** @type {(e: O.Entry<types.FieldArray>) => readonly string[]} */
88
- const method = ([name, m]) => {
92
+ const method
93
+ : (e: O.Entry<types.FieldArray>) => readonly string[]
94
+ = ([name, m]) => {
95
+
89
96
  const paramAndResultList = entries(m)
90
97
  const pl = paramList(m)
91
98
  const isUnsafe = some(mapIsUnsafeField(paramAndResultList))
@@ -103,8 +110,9 @@ const mapField = map(field)
103
110
 
104
111
  const flatMapMethod = flatMap(method)
105
112
 
106
- /** @type {(e: O.Entry<types.Definition>) => list.List<text.Item>} */
107
- const def = ([n, d]) => {
113
+ const def
114
+ : (e: O.Entry<types.Definition>) => list.List<text.Item>
115
+ = ([n, d]) => {
108
116
  return !('interface' in d) ?
109
117
  struct(n)(mapField(entries(d.struct))) :
110
118
  typeDef
@@ -127,9 +135,10 @@ const header = [
127
135
 
128
136
  /**
129
137
  * Generates the C# code for a library.
130
- * @type {(name: string) => (library: types.Library) => text.Block}
131
138
  */
132
- export const cs = name => library => {
139
+ export const cs
140
+ : (name: string) => (library: types.Library) => text.Block
141
+ = name => library => {
133
142
  const v = flatMapDef(entries(library))
134
143
  const ns = namespace(name)(v)
135
144
  return flat([header, ns])
@@ -1,4 +1,4 @@
1
- import cs from './testlib.f.mjs'
1
+ import cs from './testlib.f.ts'
2
2
 
3
3
  const f = () =>
4
4
  {
@@ -42,4 +42,4 @@ const f = () =>
42
42
  if (cs !== e) { throw cs }
43
43
  }
44
44
 
45
- export default f
45
+ export default f
@@ -0,0 +1,8 @@
1
+ import * as text from '../../text/module.f.ts'
2
+ const { flat } = text
3
+ import * as string from '../../types/string/module.f.ts'
4
+ const { join } = string
5
+ import { cs } from './module.f.ts'
6
+ import library from '../types/testlib.f.ts'
7
+
8
+ export default join('\n')(flat(' ')(cs('My')(library)))