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
@@ -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,11 @@ 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
+
10
15
  ## 0.2.6
11
16
 
12
17
  - Refactoring of a vector of bits [PR #328](https://github.com/functionalscript/functionalscript/pull/328)
@@ -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)))