functionalscript 0.1.609 → 0.2.1

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 (393) hide show
  1. package/com/cpp/module.f.mjs +20 -25
  2. package/com/cpp/testlib.f.mjs +3 -4
  3. package/com/cs/module.f.mjs +18 -23
  4. package/com/cs/testlib.f.mjs +3 -5
  5. package/com/rust/module.f.mjs +25 -30
  6. package/com/rust/testlib.f.mjs +3 -5
  7. package/com/test/build.f.mjs +2 -2
  8. package/com/test/build.mjs +4 -4
  9. package/com/types/module.f.mjs +5 -12
  10. package/commonjs/build/module.f.mjs +23 -28
  11. package/commonjs/build/test.f.mjs +4 -4
  12. package/commonjs/module/function/module.f.mjs +0 -2
  13. package/commonjs/module/module.f.mjs +2 -9
  14. package/commonjs/module.f.mjs +0 -2
  15. package/commonjs/module.mjs +2 -7
  16. package/commonjs/package/dependencies/module.f.mjs +5 -10
  17. package/commonjs/package/dependencies/test.f.mjs +1 -1
  18. package/commonjs/package/module.f.mjs +6 -13
  19. package/commonjs/package/test.f.mjs +1 -1
  20. package/commonjs/path/module.f.mjs +12 -23
  21. package/commonjs/path/test.f.mjs +11 -11
  22. package/commonjs/test.mjs +1 -1
  23. package/dev/module.f.mjs +1 -4
  24. package/dev/module.mjs +1 -1
  25. package/dev/test/module.f.mjs +4 -6
  26. package/djs/module.f.mjs +12 -19
  27. package/djs/parser/module.f.mjs +18 -24
  28. package/djs/parser/test.f.mjs +9 -9
  29. package/djs/test.f.mjs +4 -4
  30. package/djs/tokenizer/module.f.mjs +18 -23
  31. package/djs/tokenizer/test.f.mjs +6 -6
  32. package/fsc/module.f.mjs +17 -24
  33. package/fsc/test.f.mjs +3 -3
  34. package/fsm/module.f.mjs +27 -38
  35. package/fsm/test.f.mjs +8 -8
  36. package/html/module.f.mjs +14 -23
  37. package/html/test.f.mjs +4 -4
  38. package/js/tokenizer/module.f.mjs +55 -62
  39. package/js/tokenizer/test.f.mjs +6 -6
  40. package/json/module.f.mjs +18 -31
  41. package/json/parser/module.f.mjs +9 -14
  42. package/json/parser/test.f.mjs +7 -7
  43. package/json/serializer/module.f.mjs +14 -29
  44. package/json/serializer/test.f.mjs +2 -2
  45. package/json/test.f.mjs +3 -3
  46. package/json/tokenizer/module.f.mjs +14 -19
  47. package/json/tokenizer/test.f.mjs +6 -6
  48. package/jsr.json +59 -59
  49. package/nodejs/version/main.mjs +1 -1
  50. package/nodejs/version/module.f.mjs +2 -7
  51. package/nodejs/version/test.f.mjs +3 -3
  52. package/out/com/cpp/module.f.d.mts +4 -0
  53. package/out/com/cpp/module.f.mjs +123 -0
  54. package/out/com/cpp/test.f.mjs +40 -0
  55. package/out/com/cpp/testlib.f.mjs +7 -0
  56. package/out/com/cs/module.f.d.mts +4 -0
  57. package/out/com/cs/module.f.mjs +95 -0
  58. package/out/com/cs/test.f.mjs +43 -0
  59. package/out/com/cs/testlib.f.mjs +7 -0
  60. package/{com → out/com}/rust/module.f.d.mts +3 -7
  61. package/out/com/rust/module.f.mjs +213 -0
  62. package/out/com/rust/test.f.mjs +123 -0
  63. package/out/com/rust/testlib.f.mjs +7 -0
  64. package/{com → out/com}/test/build.f.d.mts +2 -2
  65. package/out/com/test/build.f.mjs +98 -0
  66. package/out/com/test/build.mjs +40 -0
  67. package/{com → out/com}/types/module.f.d.mts +5 -10
  68. package/out/com/types/module.f.mjs +51 -0
  69. package/out/com/types/testlib.f.mjs +30 -0
  70. package/out/commonjs/build/module.f.d.mts +20 -0
  71. package/out/commonjs/build/module.f.mjs +107 -0
  72. package/out/commonjs/build/test.f.mjs +102 -0
  73. package/{commonjs → out/commonjs}/module/function/module.f.d.mts +0 -2
  74. package/out/commonjs/module/function/module.f.mjs +15 -0
  75. package/{commonjs → out/commonjs}/module/module.f.d.mts +16 -21
  76. package/out/commonjs/module/module.f.mjs +48 -0
  77. package/out/commonjs/module.d.mts +3 -0
  78. package/{commonjs → out/commonjs}/module.f.d.mts +0 -2
  79. package/out/commonjs/module.f.mjs +10 -0
  80. package/out/commonjs/module.mjs +26 -0
  81. package/out/commonjs/package/dependencies/module.f.d.mts +6 -0
  82. package/out/commonjs/package/dependencies/module.f.mjs +21 -0
  83. package/out/commonjs/package/dependencies/test.f.mjs +15 -0
  84. package/out/commonjs/package/module.f.d.mts +21 -0
  85. package/out/commonjs/package/module.f.mjs +40 -0
  86. package/out/commonjs/package/test.f.mjs +27 -0
  87. package/{commonjs → out/commonjs}/path/module.f.d.mts +25 -32
  88. package/out/commonjs/path/module.f.mjs +171 -0
  89. package/out/commonjs/path/test.f.mjs +231 -0
  90. package/out/commonjs/test.mjs +87 -0
  91. package/out/dev/index.mjs +2 -0
  92. package/out/dev/module.f.d.mts +1 -0
  93. package/out/dev/module.f.mjs +2 -0
  94. package/out/dev/module.mjs +167 -0
  95. package/{dev → out/dev}/test/module.f.d.mts +2 -3
  96. package/out/dev/test/module.f.mjs +134 -0
  97. package/out/dev/test.f.mjs +58 -0
  98. package/out/dev/test.mjs +52 -0
  99. package/{djs → out/djs}/module.f.d.mts +13 -18
  100. package/out/djs/module.f.mjs +75 -0
  101. package/{djs → out/djs}/parser/module.f.d.mts +11 -15
  102. package/out/djs/parser/module.f.mjs +432 -0
  103. package/out/djs/parser/test.f.mjs +535 -0
  104. package/out/djs/test.f.mjs +84 -0
  105. package/out/djs/tokenizer/module.f.d.mts +13 -0
  106. package/out/djs/tokenizer/module.f.mjs +87 -0
  107. package/out/djs/tokenizer/test.f.mjs +480 -0
  108. package/out/fsc/module.f.d.mts +7 -0
  109. package/out/fsc/module.f.mjs +105 -0
  110. package/out/fsc/test.f.mjs +19 -0
  111. package/out/fsm/module.f.d.mts +14 -0
  112. package/out/fsm/module.f.mjs +80 -0
  113. package/out/fsm/test.f.mjs +138 -0
  114. package/out/html/module.f.d.mts +15 -0
  115. package/out/html/module.f.mjs +94 -0
  116. package/out/html/test.f.mjs +45 -0
  117. package/out/issues/test.f.mjs +66 -0
  118. package/{js → out/js}/tokenizer/module.f.d.mts +10 -15
  119. package/out/js/tokenizer/module.f.mjs +686 -0
  120. package/out/js/tokenizer/test.f.mjs +844 -0
  121. package/out/json/module.f.d.mts +33 -0
  122. package/out/json/module.f.mjs +89 -0
  123. package/{json → out/json}/parser/module.f.d.mts +9 -13
  124. package/out/json/parser/module.f.mjs +224 -0
  125. package/out/json/parser/test.f.mjs +321 -0
  126. package/out/json/serializer/module.f.d.mts +36 -0
  127. package/out/json/serializer/module.f.mjs +67 -0
  128. package/out/json/serializer/test.f.mjs +87 -0
  129. package/out/json/test.f.mjs +61 -0
  130. package/out/json/tokenizer/module.f.d.mts +13 -0
  131. package/out/json/tokenizer/module.f.mjs +78 -0
  132. package/out/json/tokenizer/test.f.mjs +420 -0
  133. package/out/nanvm-lib/tests/test.f.mjs +87 -0
  134. package/out/nodejs/version/main.mjs +3 -0
  135. package/{nodejs → out/nodejs}/version/module.f.d.mts +4 -9
  136. package/out/nodejs/version/module.f.mjs +34 -0
  137. package/out/nodejs/version/test.f.mjs +97 -0
  138. package/{prime_field → out/prime_field}/module.f.d.mts +20 -23
  139. package/out/prime_field/module.f.mjs +87 -0
  140. package/out/prime_field/test.f.mjs +145 -0
  141. package/{secp → out/secp}/module.f.d.mts +27 -28
  142. package/out/secp/module.f.mjs +113 -0
  143. package/out/secp/test.f.mjs +63 -0
  144. package/out/sha2/module.f.d.mts +15 -0
  145. package/out/sha2/module.f.mjs +172 -0
  146. package/out/sha2/test.f.mjs +86 -0
  147. package/out/text/ascii/module.f.d.mts +70 -0
  148. package/out/text/ascii/module.f.mjs +154 -0
  149. package/out/text/ascii/test.f.mjs +14 -0
  150. package/out/text/module.f.d.mts +13 -0
  151. package/out/text/module.f.mjs +19 -0
  152. package/out/text/sgr/module.f.d.mts +12 -0
  153. package/out/text/sgr/module.f.mjs +17 -0
  154. package/out/text/test.f.mjs +19 -0
  155. package/out/text/utf16/module.f.d.mts +12 -0
  156. package/out/text/utf16/module.f.mjs +86 -0
  157. package/out/text/utf16/test.f.mjs +145 -0
  158. package/out/text/utf8/module.f.d.mts +10 -0
  159. package/out/text/utf8/module.f.mjs +126 -0
  160. package/out/text/utf8/test.f.mjs +175 -0
  161. package/{types → out/types}/array/module.f.d.mts +14 -24
  162. package/out/types/array/module.f.mjs +95 -0
  163. package/out/types/array/test.f.mjs +116 -0
  164. package/out/types/bigfloat/module.f.d.mts +6 -0
  165. package/out/types/bigfloat/module.f.mjs +77 -0
  166. package/out/types/bigfloat/test.f.mjs +349 -0
  167. package/out/types/bigint/module.f.d.mts +29 -0
  168. package/{types/bigint/module.f.d.mts → out/types/bigint/module.f.mjs} +64 -27
  169. package/out/types/bigint/test.f.mjs +192 -0
  170. package/{types → out/types}/btree/find/module.f.d.mts +20 -26
  171. package/out/types/btree/find/module.f.mjs +137 -0
  172. package/out/types/btree/find/test.f.mjs +156 -0
  173. package/out/types/btree/module.f.d.mts +5 -0
  174. package/out/types/btree/module.f.mjs +34 -0
  175. package/{types → out/types}/btree/remove/module.f.d.mts +7 -12
  176. package/out/types/btree/remove/module.f.mjs +209 -0
  177. package/out/types/btree/remove/test.f.mjs +638 -0
  178. package/{types → out/types}/btree/set/module.f.d.mts +3 -7
  179. package/out/types/btree/set/module.f.mjs +114 -0
  180. package/out/types/btree/set/test.f.mjs +390 -0
  181. package/out/types/btree/test.f.mjs +83 -0
  182. package/{types → out/types}/btree/types/module.f.d.mts +0 -2
  183. package/out/types/btree/types/module.f.mjs +50 -0
  184. package/out/types/byte_set/module.f.d.mts +25 -0
  185. package/out/types/byte_set/module.f.mjs +42 -0
  186. package/out/types/byte_set/test.f.mjs +123 -0
  187. package/{types → out/types}/function/compare/module.f.d.mts +9 -15
  188. package/out/types/function/compare/module.f.mjs +22 -0
  189. package/out/types/function/compare/test.f.mjs +8 -0
  190. package/{types → out/types}/function/module.f.d.mts +20 -27
  191. package/out/types/function/module.f.mjs +44 -0
  192. package/{types → out/types}/function/operator/module.f.d.mts +28 -43
  193. package/out/types/function/operator/module.f.mjs +60 -0
  194. package/out/types/function/test.f.mjs +15 -0
  195. package/out/types/list/module.f.d.mts +82 -0
  196. package/out/types/list/module.f.mjs +269 -0
  197. package/out/types/list/test.f.mjs +401 -0
  198. package/out/types/map/module.f.d.mts +21 -0
  199. package/out/types/map/module.f.mjs +54 -0
  200. package/out/types/map/test.f.mjs +115 -0
  201. package/out/types/nibble_set/module.f.d.mts +16 -0
  202. package/out/types/nibble_set/module.f.mjs +19 -0
  203. package/out/types/nibble_set/test.f.mjs +90 -0
  204. package/out/types/nullable/module.f.d.mts +9 -0
  205. package/out/types/nullable/module.f.mjs +9 -0
  206. package/out/types/nullable/test.f.mjs +12 -0
  207. package/out/types/number/module.f.d.mts +7 -0
  208. package/out/types/number/module.f.mjs +12 -0
  209. package/out/types/number/test.f.mjs +126 -0
  210. package/out/types/object/module.f.d.mts +22 -0
  211. package/out/types/object/module.f.mjs +27 -0
  212. package/out/types/object/test.f.mjs +17 -0
  213. package/out/types/range/module.f.d.mts +6 -0
  214. package/out/types/range/module.f.mjs +6 -0
  215. package/out/types/range/test.f.mjs +18 -0
  216. package/{types → out/types}/range_map/module.f.d.mts +9 -15
  217. package/out/types/range_map/module.f.mjs +84 -0
  218. package/out/types/range_map/test.f.mjs +201 -0
  219. package/out/types/result/module.d.mts +7 -0
  220. package/{types → out/types}/result/module.f.d.mts +6 -12
  221. package/out/types/result/module.f.mjs +25 -0
  222. package/out/types/result/module.mjs +16 -0
  223. package/{types → out/types}/sorted_list/module.f.d.mts +22 -28
  224. package/out/types/sorted_list/module.f.mjs +102 -0
  225. package/out/types/sorted_list/test.f.mjs +66 -0
  226. package/{types → out/types}/sorted_set/module.f.d.mts +6 -12
  227. package/out/types/sorted_set/module.f.mjs +29 -0
  228. package/out/types/sorted_set/test.f.mjs +80 -0
  229. package/out/types/string/module.f.d.mts +9 -0
  230. package/out/types/string/module.f.mjs +17 -0
  231. package/out/types/string/test.f.mjs +58 -0
  232. package/out/types/string_set/module.f.d.mts +13 -0
  233. package/out/types/string_set/module.f.mjs +29 -0
  234. package/out/types/string_set/test.f.mjs +65 -0
  235. package/package.json +5 -4
  236. package/prime_field/module.f.mjs +9 -12
  237. package/prime_field/test.f.mjs +1 -1
  238. package/secp/module.f.mjs +38 -39
  239. package/secp/test.f.mjs +4 -4
  240. package/sha2/module.f.mjs +7 -20
  241. package/sha2/test.f.mjs +4 -4
  242. package/text/ascii/module.f.mjs +5 -10
  243. package/text/ascii/test.f.mjs +3 -3
  244. package/text/module.f.mjs +7 -14
  245. package/text/sgr/module.f.mjs +2 -4
  246. package/text/test.f.mjs +3 -3
  247. package/text/utf16/module.f.mjs +17 -28
  248. package/text/utf16/test.f.mjs +5 -5
  249. package/text/utf8/module.f.mjs +9 -16
  250. package/text/utf8/test.f.mjs +4 -4
  251. package/tsconfig.json +2 -2
  252. package/types/array/module.f.mjs +8 -25
  253. package/types/array/test.f.mjs +3 -3
  254. package/types/bigfloat/module.f.mjs +3 -10
  255. package/types/bigfloat/test.f.mjs +1 -1
  256. package/types/bigint/module.f.mjs +11 -30
  257. package/types/bigint/test.f.mjs +1 -1
  258. package/types/btree/find/module.f.mjs +8 -17
  259. package/types/btree/find/test.f.mjs +7 -7
  260. package/types/btree/module.f.mjs +6 -11
  261. package/types/btree/remove/module.f.mjs +10 -17
  262. package/types/btree/remove/test.f.mjs +5 -5
  263. package/types/btree/set/module.f.mjs +4 -9
  264. package/types/btree/set/test.f.mjs +4 -4
  265. package/types/btree/test.f.mjs +9 -9
  266. package/types/btree/types/module.f.mjs +0 -2
  267. package/types/byte_set/module.f.mjs +14 -39
  268. package/types/byte_set/test.f.mjs +5 -5
  269. package/types/function/compare/module.f.mjs +3 -12
  270. package/types/function/compare/test.f.mjs +1 -1
  271. package/types/function/module.f.mjs +4 -15
  272. package/types/function/operator/module.f.mjs +14 -41
  273. package/types/function/test.f.mjs +1 -1
  274. package/types/list/module.f.mjs +45 -114
  275. package/types/list/test.f.mjs +10 -10
  276. package/types/map/module.f.mjs +15 -30
  277. package/types/map/test.f.mjs +2 -2
  278. package/types/nibble_set/module.f.mjs +7 -24
  279. package/types/nibble_set/test.f.mjs +2 -2
  280. package/types/nullable/module.f.mjs +2 -9
  281. package/types/nullable/test.f.mjs +1 -1
  282. package/types/number/module.f.mjs +8 -19
  283. package/types/number/test.f.mjs +1 -1
  284. package/types/object/module.f.mjs +9 -20
  285. package/types/object/test.f.mjs +1 -1
  286. package/types/range/module.f.mjs +2 -9
  287. package/types/range/test.f.mjs +1 -1
  288. package/types/range_map/module.f.mjs +9 -18
  289. package/types/range_map/test.f.mjs +32 -32
  290. package/types/result/module.f.mjs +3 -12
  291. package/types/result/module.mjs +2 -2
  292. package/types/sorted_list/module.f.mjs +10 -19
  293. package/types/sorted_list/test.f.mjs +7 -7
  294. package/types/sorted_set/module.f.mjs +7 -16
  295. package/types/sorted_set/test.f.mjs +7 -7
  296. package/types/string/module.f.mjs +10 -21
  297. package/types/string/test.f.mjs +2 -2
  298. package/types/string_set/module.f.mjs +12 -27
  299. package/types/string_set/test.f.mjs +1 -1
  300. package/com/cpp/module.f.d.mts +0 -8
  301. package/com/cs/module.f.d.mts +0 -8
  302. package/commonjs/build/module.f.d.mts +0 -24
  303. package/commonjs/module.d.mts +0 -7
  304. package/commonjs/package/dependencies/module.f.d.mts +0 -10
  305. package/commonjs/package/module.f.d.mts +0 -27
  306. package/dev/module.f.d.mts +0 -4
  307. package/djs/tokenizer/module.f.d.mts +0 -17
  308. package/fsc/module.f.d.mts +0 -12
  309. package/fsm/module.f.d.mts +0 -21
  310. package/html/module.f.d.mts +0 -20
  311. package/json/module.f.d.mts +0 -41
  312. package/json/serializer/module.f.d.mts +0 -45
  313. package/json/tokenizer/module.f.d.mts +0 -17
  314. package/sha2/module.f.d.mts +0 -23
  315. package/text/ascii/module.f.d.mts +0 -73
  316. package/text/module.f.d.mts +0 -18
  317. package/text/sgr/module.f.d.mts +0 -14
  318. package/text/utf16/module.f.d.mts +0 -19
  319. package/text/utf8/module.f.d.mts +0 -15
  320. package/types/bigfloat/module.f.d.mts +0 -11
  321. package/types/btree/module.f.d.mts +0 -9
  322. package/types/byte_set/module.f.d.mts +0 -38
  323. package/types/list/module.f.d.mts +0 -117
  324. package/types/map/module.f.d.mts +0 -30
  325. package/types/nibble_set/module.f.d.mts +0 -26
  326. package/types/nullable/module.f.d.mts +0 -14
  327. package/types/number/module.f.d.mts +0 -13
  328. package/types/object/module.f.d.mts +0 -29
  329. package/types/range/module.f.d.mts +0 -11
  330. package/types/result/module.d.mts +0 -7
  331. package/types/string/module.f.d.mts +0 -15
  332. package/types/string_set/module.f.d.mts +0 -21
  333. /package/{com → out/com}/cpp/test.f.d.mts +0 -0
  334. /package/{com → out/com}/cpp/testlib.f.d.mts +0 -0
  335. /package/{com → out/com}/cs/test.f.d.mts +0 -0
  336. /package/{com → out/com}/cs/testlib.f.d.mts +0 -0
  337. /package/{com → out/com}/rust/test.f.d.mts +0 -0
  338. /package/{com → out/com}/rust/testlib.f.d.mts +0 -0
  339. /package/{com → out/com}/test/build.d.mts +0 -0
  340. /package/{com → out/com}/types/testlib.f.d.mts +0 -0
  341. /package/{commonjs → out/commonjs}/build/test.f.d.mts +0 -0
  342. /package/{commonjs → out/commonjs}/package/dependencies/test.f.d.mts +0 -0
  343. /package/{commonjs → out/commonjs}/package/test.f.d.mts +0 -0
  344. /package/{commonjs → out/commonjs}/path/test.f.d.mts +0 -0
  345. /package/{commonjs → out/commonjs}/test.d.mts +0 -0
  346. /package/{dev → out/dev}/index.d.mts +0 -0
  347. /package/{dev → out/dev}/module.d.mts +0 -0
  348. /package/{dev → out/dev}/test.d.mts +0 -0
  349. /package/{dev → out/dev}/test.f.d.mts +0 -0
  350. /package/{djs → out/djs}/parser/test.f.d.mts +0 -0
  351. /package/{djs → out/djs}/test.f.d.mts +0 -0
  352. /package/{djs → out/djs}/tokenizer/test.f.d.mts +0 -0
  353. /package/{fsc → out/fsc}/test.f.d.mts +0 -0
  354. /package/{fsm → out/fsm}/test.f.d.mts +0 -0
  355. /package/{html → out/html}/test.f.d.mts +0 -0
  356. /package/{issues → out/issues}/test.f.d.mts +0 -0
  357. /package/{js → out/js}/tokenizer/test.f.d.mts +0 -0
  358. /package/{json → out/json}/parser/test.f.d.mts +0 -0
  359. /package/{json → out/json}/serializer/test.f.d.mts +0 -0
  360. /package/{json → out/json}/test.f.d.mts +0 -0
  361. /package/{json → out/json}/tokenizer/test.f.d.mts +0 -0
  362. /package/{nanvm-lib → out/nanvm-lib}/tests/test.f.d.mts +0 -0
  363. /package/{nodejs → out/nodejs}/version/main.d.mts +0 -0
  364. /package/{nodejs → out/nodejs}/version/test.f.d.mts +0 -0
  365. /package/{prime_field → out/prime_field}/test.f.d.mts +0 -0
  366. /package/{secp → out/secp}/test.f.d.mts +0 -0
  367. /package/{sha2 → out/sha2}/test.f.d.mts +0 -0
  368. /package/{text → out/text}/ascii/test.f.d.mts +0 -0
  369. /package/{text → out/text}/test.f.d.mts +0 -0
  370. /package/{text → out/text}/utf16/test.f.d.mts +0 -0
  371. /package/{text → out/text}/utf8/test.f.d.mts +0 -0
  372. /package/{types → out/types}/array/test.f.d.mts +0 -0
  373. /package/{types → out/types}/bigfloat/test.f.d.mts +0 -0
  374. /package/{types → out/types}/bigint/test.f.d.mts +0 -0
  375. /package/{types → out/types}/btree/find/test.f.d.mts +0 -0
  376. /package/{types → out/types}/btree/remove/test.f.d.mts +0 -0
  377. /package/{types → out/types}/btree/set/test.f.d.mts +0 -0
  378. /package/{types → out/types}/btree/test.f.d.mts +0 -0
  379. /package/{types → out/types}/byte_set/test.f.d.mts +0 -0
  380. /package/{types → out/types}/function/compare/test.f.d.mts +0 -0
  381. /package/{types → out/types}/function/test.f.d.mts +0 -0
  382. /package/{types → out/types}/list/test.f.d.mts +0 -0
  383. /package/{types → out/types}/map/test.f.d.mts +0 -0
  384. /package/{types → out/types}/nibble_set/test.f.d.mts +0 -0
  385. /package/{types → out/types}/nullable/test.f.d.mts +0 -0
  386. /package/{types → out/types}/number/test.f.d.mts +0 -0
  387. /package/{types → out/types}/object/test.f.d.mts +0 -0
  388. /package/{types → out/types}/range/test.f.d.mts +0 -0
  389. /package/{types → out/types}/range_map/test.f.d.mts +0 -0
  390. /package/{types → out/types}/sorted_list/test.f.d.mts +0 -0
  391. /package/{types → out/types}/sorted_set/test.f.d.mts +0 -0
  392. /package/{types → out/types}/string/test.f.d.mts +0 -0
  393. /package/{types → out/types}/string_set/test.f.d.mts +0 -0
@@ -1,5 +1,5 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import list, * as List from '../../types/list/module.f.mjs'
2
+ import * as list from '../../types/list/module.f.mjs'
3
3
  const { flat, reduce, empty } = list
4
4
  import * as O from '../../types/object/module.f.mjs'
5
5
  import * as Operator from '../../types/function/operator/module.f.mjs'
@@ -37,39 +37,39 @@ import * as Operator from '../../types/function/operator/module.f.mjs'
37
37
 
38
38
  const jsonStringify = JSON.stringify
39
39
 
40
- /** @type {(_: string) => List.List<string>} */
41
- const stringSerialize = input => [jsonStringify(input)]
40
+ /** @type {(_: string) => list.List<string>} */
41
+ export const stringSerialize = input => [jsonStringify(input)]
42
42
 
43
- /** @type {(_: number) => List.List<string>} */
44
- const numberSerialize = input => [jsonStringify(input)]
43
+ /** @type {(_: number) => list.List<string>} */
44
+ export const numberSerialize = input => [jsonStringify(input)]
45
45
 
46
- const nullSerialize = ['null']
46
+ export const nullSerialize = ['null']
47
47
 
48
48
  const trueSerialize = ['true']
49
49
 
50
50
  const falseSerialize = ['false']
51
51
 
52
- /** @type {(_: boolean) => List.List<string>} */
53
- const boolSerialize = value => value ? trueSerialize : falseSerialize
52
+ /** @type {(_: boolean) => list.List<string>} */
53
+ export const boolSerialize = value => value ? trueSerialize : falseSerialize
54
54
 
55
55
  const comma = [',']
56
56
 
57
- /** @type {Operator.Reduce<List.List<string>>} */
57
+ /** @type {Operator.Reduce<list.List<string>>} */
58
58
  const joinOp = b => prior => flat([prior, comma, b])
59
59
 
60
- /** @type {(input: List.List<List.List<string>>) => List.List<string>} */
60
+ /** @type {(input: list.List<list.List<string>>) => list.List<string>} */
61
61
  const join = reduce(joinOp)(empty)
62
62
 
63
- /** @type {(open: string) => (close: string) => (input: List.List<List.List<string>>) => List.List<string>} */
63
+ /** @type {(open: string) => (close: string) => (input: list.List<list.List<string>>) => list.List<string>} */
64
64
  const wrap = open => close => {
65
65
  const seqOpen = [open]
66
66
  const seqClose = [close]
67
67
  return input => flat([seqOpen, join(input), seqClose])
68
68
  }
69
69
 
70
- const objectWrap = wrap('{')('}')
70
+ export const objectWrap = wrap('{')('}')
71
71
 
72
- const arrayWrap = wrap('[')(']')
72
+ export const arrayWrap = wrap('[')(']')
73
73
 
74
74
  /**
75
75
  * @template T
@@ -78,25 +78,10 @@ const arrayWrap = wrap('[')(']')
78
78
 
79
79
  /**
80
80
  * @template T
81
- * @typedef {(List.List<Entry<T>>)} Entries<T>
81
+ * @typedef {(list.List<Entry<T>>)} Entries<T>
82
82
  */
83
83
 
84
84
  /**
85
85
  * @template T
86
86
  * @typedef {(entries: Entries<T>) => Entries<T>} MapEntries<T>
87
87
  */
88
-
89
- export default {
90
- /** @readonly */
91
- objectWrap,
92
- /** @readonly */
93
- arrayWrap,
94
- /** @readonly */
95
- stringSerialize,
96
- /** @readonly */
97
- numberSerialize,
98
- /** @readonly */
99
- nullSerialize,
100
- /** @readonly */
101
- boolSerialize,
102
- }
@@ -1,5 +1,5 @@
1
- import _, * as T from './module.f.mjs'
2
- import list from '../../types/list/module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
+ import * as list from '../../types/list/module.f.mjs'
3
3
  const { toArray } = list
4
4
 
5
5
  export default {
package/json/test.f.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import json from './module.f.mjs'
2
- import o from '../types/object/module.f.mjs'
1
+ import * as json from './module.f.mjs'
2
+ import * as o from '../types/object/module.f.mjs'
3
3
  const { sort } = o
4
- import f from '../types/function/module.f.mjs'
4
+ import * as f from '../types/function/module.f.mjs'
5
5
  const { identity } = f
6
6
 
7
7
  export default {
@@ -1,18 +1,18 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
  import * as Operator from '../../types/function/operator/module.f.mjs'
3
- import list, * as List from '../../types/list/module.f.mjs'
3
+ import * as list from '../../types/list/module.f.mjs'
4
4
  const { empty, flat, stateScan } = list
5
- import bf from '../../types/bigfloat/module.f.mjs'
5
+ import * as bf from '../../types/bigfloat/module.f.mjs'
6
6
  const { multiply } = bf
7
- import jsTokenizer, * as JsTokenizer from '../../js/tokenizer/module.f.mjs'
7
+ import * as jsTokenizer from '../../js/tokenizer/module.f.mjs'
8
8
 
9
9
  /**
10
10
  * @typedef {|
11
11
  * {readonly kind: 'true' | 'false' | 'null' } |
12
12
  * {readonly kind: '{' | '}' | ':' | ',' | '[' | ']' } |
13
- * JsTokenizer.StringToken |
14
- * JsTokenizer.NumberToken |
15
- * JsTokenizer.ErrorToken
13
+ * jsTokenizer.StringToken |
14
+ * jsTokenizer.NumberToken |
15
+ * jsTokenizer.ErrorToken
16
16
  * } JsonToken
17
17
  */
18
18
 
@@ -24,11 +24,11 @@ import jsTokenizer, * as JsTokenizer from '../../js/tokenizer/module.f.mjs'
24
24
 
25
25
  /**
26
26
  * @typedef {|
27
- * JsTokenizer.JsToken | null
27
+ * jsTokenizer.JsToken | null
28
28
  * } ScanInput
29
29
  */
30
30
 
31
- /** @type {(input: JsTokenizer.JsToken) => List.List<JsonToken>} */
31
+ /** @type {(input: jsTokenizer.JsToken) => list.List<JsonToken>} */
32
32
  const mapToken = input =>
33
33
  {
34
34
  switch(input.kind)
@@ -51,7 +51,7 @@ const mapToken = input =>
51
51
  }
52
52
  }
53
53
 
54
- /** @type {(input: ScanInput) => readonly [List.List<JsonToken>, ScanState]} */
54
+ /** @type {(input: ScanInput) => readonly [list.List<JsonToken>, ScanState]} */
55
55
  const parseDefaultState = input =>
56
56
  {
57
57
  if (input === null) return [empty, { kind: 'def'}]
@@ -62,7 +62,7 @@ const parseDefaultState = input =>
62
62
  }
63
63
  }
64
64
 
65
- /** @type {(input: ScanInput) => readonly [List.List<JsonToken>, ScanState]} */
65
+ /** @type {(input: ScanInput) => readonly [list.List<JsonToken>, ScanState]} */
66
66
  const parseMinusState = input =>
67
67
  {
68
68
  if (input === null) return [[{ kind: 'error', message: 'invalid token' }], { kind: 'def'}]
@@ -74,7 +74,7 @@ const parseMinusState = input =>
74
74
  }
75
75
  }
76
76
 
77
- /** @type {Operator.StateScan<ScanInput, ScanState, List.List<JsonToken>>} */
77
+ /** @type {Operator.StateScan<ScanInput, ScanState, list.List<JsonToken>>} */
78
78
  const scanToken = state => input => {
79
79
  switch(state.kind)
80
80
  {
@@ -83,15 +83,10 @@ const scanToken = state => input => {
83
83
  }
84
84
  }
85
85
 
86
- /** @type {(input: List.List<number>) => List.List<JsonToken>} */
87
- const tokenize = input =>
86
+ /** @type {(input: list.List<number>) => list.List<JsonToken>} */
87
+ export const tokenize = input =>
88
88
  {
89
- /** @type {List.List<ScanInput>} */
89
+ /** @type {list.List<ScanInput>} */
90
90
  const jsTokens = jsTokenizer.tokenize(input)
91
91
  return flat(stateScan(scanToken)({ kind: 'def' })(list.concat(jsTokens)([null])))
92
92
  }
93
-
94
- export default {
95
- /** @readonly */
96
- tokenize
97
- }
@@ -1,12 +1,12 @@
1
- import tokenizer, * as Tokenizer from './module.f.mjs'
2
- import list from '../../types/list/module.f.mjs'
1
+ import * as tokenizer from './module.f.mjs'
2
+ import * as list from '../../types/list/module.f.mjs'
3
3
  const { toArray } = list
4
- import djs from '../../djs/module.f.mjs'
5
- import o from '../../types/object/module.f.mjs'
4
+ import * as djs from '../../djs/module.f.mjs'
5
+ import * as o from '../../types/object/module.f.mjs'
6
6
  const { sort } = o
7
- import encoding from '../../text/utf16/module.f.mjs'
7
+ import * as encoding from '../../text/utf16/module.f.mjs'
8
8
 
9
- /** @type {(s: string) => readonly Tokenizer.JsonToken[]} */
9
+ /** @type {(s: string) => readonly tokenizer.JsonToken[]} */
10
10
  const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
11
11
 
12
12
  const stringify = djs.stringify(sort)
package/jsr.json CHANGED
@@ -1,64 +1,64 @@
1
1
  {
2
2
  "name": "@functionalscript/functionalscript",
3
- "version": "0.1.609",
3
+ "version": "0.2.1",
4
4
  "exports": {
5
- "./com/cpp": "./com/cpp/module.f.mjs",
6
- "./com/cs": "./com/cs/module.f.mjs",
7
- "./com/rust": "./com/rust/module.f.mjs",
8
- "./com/types": "./com/types/module.f.mjs",
9
- "./commonjs/build": "./commonjs/build/module.f.mjs",
10
- "./commonjs": "./commonjs/module.f.mjs",
11
- "./commonjs/module/function": "./commonjs/module/function/module.f.mjs",
12
- "./commonjs/module": "./commonjs/module/module.f.mjs",
13
- "./commonjs/package/dependencies": "./commonjs/package/dependencies/module.f.mjs",
14
- "./commonjs/package": "./commonjs/package/module.f.mjs",
15
- "./commonjs/path": "./commonjs/path/module.f.mjs",
16
- "./dev": "./dev/module.f.mjs",
17
- "./dev/test": "./dev/test/module.f.mjs",
18
- "./djs": "./djs/module.f.mjs",
19
- "./djs/parser": "./djs/parser/module.f.mjs",
20
- "./djs/tokenizer": "./djs/tokenizer/module.f.mjs",
21
- "./fsc": "./fsc/module.f.mjs",
22
- "./fsm": "./fsm/module.f.mjs",
23
- "./html": "./html/module.f.mjs",
24
- "./js/tokenizer": "./js/tokenizer/module.f.mjs",
25
- "./json": "./json/module.f.mjs",
26
- "./json/parser": "./json/parser/module.f.mjs",
27
- "./json/serializer": "./json/serializer/module.f.mjs",
28
- "./json/tokenizer": "./json/tokenizer/module.f.mjs",
29
- "./nodejs/version": "./nodejs/version/module.f.mjs",
30
- "./prime_field": "./prime_field/module.f.mjs",
31
- "./secp": "./secp/module.f.mjs",
32
- "./sha2": "./sha2/module.f.mjs",
33
- "./text/ascii": "./text/ascii/module.f.mjs",
34
- "./text": "./text/module.f.mjs",
35
- "./text/sgr": "./text/sgr/module.f.mjs",
36
- "./text/utf16": "./text/utf16/module.f.mjs",
37
- "./text/utf8": "./text/utf8/module.f.mjs",
38
- "./types/array": "./types/array/module.f.mjs",
39
- "./types/bigfloat": "./types/bigfloat/module.f.mjs",
40
- "./types/bigint": "./types/bigint/module.f.mjs",
41
- "./types/btree/find": "./types/btree/find/module.f.mjs",
42
- "./types/btree": "./types/btree/module.f.mjs",
43
- "./types/btree/remove": "./types/btree/remove/module.f.mjs",
44
- "./types/btree/set": "./types/btree/set/module.f.mjs",
45
- "./types/btree/types": "./types/btree/types/module.f.mjs",
46
- "./types/byte_set": "./types/byte_set/module.f.mjs",
47
- "./types/function/compare": "./types/function/compare/module.f.mjs",
48
- "./types/function": "./types/function/module.f.mjs",
49
- "./types/function/operator": "./types/function/operator/module.f.mjs",
50
- "./types/list": "./types/list/module.f.mjs",
51
- "./types/map": "./types/map/module.f.mjs",
52
- "./types/nibble_set": "./types/nibble_set/module.f.mjs",
53
- "./types/nullable": "./types/nullable/module.f.mjs",
54
- "./types/number": "./types/number/module.f.mjs",
55
- "./types/object": "./types/object/module.f.mjs",
56
- "./types/range": "./types/range/module.f.mjs",
57
- "./types/range_map": "./types/range_map/module.f.mjs",
58
- "./types/result": "./types/result/module.f.mjs",
59
- "./types/sorted_list": "./types/sorted_list/module.f.mjs",
60
- "./types/sorted_set": "./types/sorted_set/module.f.mjs",
61
- "./types/string": "./types/string/module.f.mjs",
62
- "./types/string_set": "./types/string_set/module.f.mjs"
5
+ "./com/cpp": "./out/./com/cpp/module.f.mjs",
6
+ "./com/cs": "./out/./com/cs/module.f.mjs",
7
+ "./com/rust": "./out/./com/rust/module.f.mjs",
8
+ "./com/types": "./out/./com/types/module.f.mjs",
9
+ "./commonjs/build": "./out/./commonjs/build/module.f.mjs",
10
+ "./commonjs": "./out/./commonjs/module.f.mjs",
11
+ "./commonjs/module/function": "./out/./commonjs/module/function/module.f.mjs",
12
+ "./commonjs/module": "./out/./commonjs/module/module.f.mjs",
13
+ "./commonjs/package/dependencies": "./out/./commonjs/package/dependencies/module.f.mjs",
14
+ "./commonjs/package": "./out/./commonjs/package/module.f.mjs",
15
+ "./commonjs/path": "./out/./commonjs/path/module.f.mjs",
16
+ "./dev": "./out/./dev/module.f.mjs",
17
+ "./dev/test": "./out/./dev/test/module.f.mjs",
18
+ "./djs": "./out/./djs/module.f.mjs",
19
+ "./djs/parser": "./out/./djs/parser/module.f.mjs",
20
+ "./djs/tokenizer": "./out/./djs/tokenizer/module.f.mjs",
21
+ "./fsc": "./out/./fsc/module.f.mjs",
22
+ "./fsm": "./out/./fsm/module.f.mjs",
23
+ "./html": "./out/./html/module.f.mjs",
24
+ "./js/tokenizer": "./out/./js/tokenizer/module.f.mjs",
25
+ "./json": "./out/./json/module.f.mjs",
26
+ "./json/parser": "./out/./json/parser/module.f.mjs",
27
+ "./json/serializer": "./out/./json/serializer/module.f.mjs",
28
+ "./json/tokenizer": "./out/./json/tokenizer/module.f.mjs",
29
+ "./nodejs/version": "./out/./nodejs/version/module.f.mjs",
30
+ "./prime_field": "./out/./prime_field/module.f.mjs",
31
+ "./secp": "./out/./secp/module.f.mjs",
32
+ "./sha2": "./out/./sha2/module.f.mjs",
33
+ "./text/ascii": "./out/./text/ascii/module.f.mjs",
34
+ "./text": "./out/./text/module.f.mjs",
35
+ "./text/sgr": "./out/./text/sgr/module.f.mjs",
36
+ "./text/utf16": "./out/./text/utf16/module.f.mjs",
37
+ "./text/utf8": "./out/./text/utf8/module.f.mjs",
38
+ "./types/array": "./out/./types/array/module.f.mjs",
39
+ "./types/bigfloat": "./out/./types/bigfloat/module.f.mjs",
40
+ "./types/bigint": "./out/./types/bigint/module.f.mjs",
41
+ "./types/btree/find": "./out/./types/btree/find/module.f.mjs",
42
+ "./types/btree": "./out/./types/btree/module.f.mjs",
43
+ "./types/btree/remove": "./out/./types/btree/remove/module.f.mjs",
44
+ "./types/btree/set": "./out/./types/btree/set/module.f.mjs",
45
+ "./types/btree/types": "./out/./types/btree/types/module.f.mjs",
46
+ "./types/byte_set": "./out/./types/byte_set/module.f.mjs",
47
+ "./types/function/compare": "./out/./types/function/compare/module.f.mjs",
48
+ "./types/function": "./out/./types/function/module.f.mjs",
49
+ "./types/function/operator": "./out/./types/function/operator/module.f.mjs",
50
+ "./types/list": "./out/./types/list/module.f.mjs",
51
+ "./types/map": "./out/./types/map/module.f.mjs",
52
+ "./types/nibble_set": "./out/./types/nibble_set/module.f.mjs",
53
+ "./types/nullable": "./out/./types/nullable/module.f.mjs",
54
+ "./types/number": "./out/./types/number/module.f.mjs",
55
+ "./types/object": "./out/./types/object/module.f.mjs",
56
+ "./types/range": "./out/./types/range/module.f.mjs",
57
+ "./types/range_map": "./out/./types/range_map/module.f.mjs",
58
+ "./types/result": "./out/./types/result/module.f.mjs",
59
+ "./types/sorted_list": "./out/./types/sorted_list/module.f.mjs",
60
+ "./types/sorted_set": "./out/./types/sorted_set/module.f.mjs",
61
+ "./types/string": "./out/./types/string/module.f.mjs",
62
+ "./types/string_set": "./out/./types/string_set/module.f.mjs"
63
63
  }
64
64
  }
@@ -1,4 +1,4 @@
1
- import _ from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
  import fs from 'node:fs'
3
3
 
4
4
  _.updateVersion({ fs })
@@ -20,7 +20,7 @@
20
20
  const { stringify, parse } = JSON
21
21
 
22
22
  /** @type {<T>(fs: Fs<T>) => string} */
23
- const getVersion = fs => readJson(fs)('package').version
23
+ export const getVersion = fs => readJson(fs)('package').version
24
24
 
25
25
  const jsonFile = (/** @type {string} */jsonFile) => `${jsonFile}.json`
26
26
 
@@ -28,7 +28,7 @@ const jsonFile = (/** @type {string} */jsonFile) => `${jsonFile}.json`
28
28
  const readJson = fs => name => parse(fs.readFileSync(jsonFile(name)).toString())
29
29
 
30
30
  /** @type {<T>(node: Node<T>) => readonly[T, T]} */
31
- const updateVersion = ({ fs }) => {
31
+ export const updateVersion = ({ fs }) => {
32
32
  const f = (/** @type {string} */name) => {
33
33
  return fs.writeFileSync(
34
34
  jsonFile(name),
@@ -45,8 +45,3 @@ const updateVersion = ({ fs }) => {
45
45
  f('jsr')
46
46
  ]
47
47
  }
48
-
49
- export default {
50
- getVersion,
51
- updateVersion,
52
- }
@@ -1,4 +1,4 @@
1
- import _, * as T from './module.f.mjs'
1
+ import * as _ from './module.f.mjs'
2
2
 
3
3
  const version = '0.3.0'
4
4
 
@@ -82,13 +82,13 @@ const e = '{\n' +
82
82
  ' }\n' +
83
83
  '}'
84
84
 
85
- /** @type {(s: string) => T.Buffer} */
85
+ /** @type {(s: string) => _.Buffer} */
86
86
  const buffer = s => ({
87
87
  toString: () => s
88
88
  })
89
89
 
90
90
  export default () => {
91
- /** @type {T.Node<string>} */
91
+ /** @type {_.Node<string>} */
92
92
  const node = {
93
93
  fs: {
94
94
  readFileSync: n => buffer(JSON.stringify(x[n])),
@@ -0,0 +1,4 @@
1
+ /** @type {(name: string) => (lib: types.Library) => text.Block} */
2
+ export const cpp: (name: string) => (lib: types.Library) => text.Block;
3
+ import * as types from '../types/module.f.mjs';
4
+ import * as text from '../../text/module.f.mjs';
@@ -0,0 +1,123 @@
1
+ // @ts-self-types="./module.f.d.mts"
2
+ import * as types from '../types/module.f.mjs';
3
+ import * as text from '../../text/module.f.mjs';
4
+ import * as O from '../../types/object/module.f.mjs';
5
+ import * as list from '../../types/list/module.f.mjs';
6
+ import * as string from '../../types/string/module.f.mjs';
7
+ const { join } = string;
8
+ const { paramList } = types;
9
+ const { map, flatMap, flat } = list;
10
+ const { entries } = Object;
11
+ /** @type {(name: string) => (body: text.Block) => text.Block} */
12
+ const struct = name => body => [`struct ${name}`, '{', body, '};'];
13
+ const baseTypeMap = {
14
+ u8: 'uint8_t',
15
+ i8: 'int8_t',
16
+ u16: 'uint16_t',
17
+ i16: 'int16_t',
18
+ u32: 'uint32_t',
19
+ i32: 'int32_t',
20
+ u64: 'uint64_t',
21
+ i64: 'int64_t',
22
+ usize: 'size_t',
23
+ isize: 'ptrdiff_t',
24
+ f32: 'float',
25
+ f64: 'double',
26
+ bool: 'bool',
27
+ };
28
+ /** @type {(t: types.BaseType) => string} */
29
+ const baseType = t => baseTypeMap[t];
30
+ const resultVoid = types.result('void');
31
+ const namespace = text.curly('namespace');
32
+ /** @type {(id: string) => string} */
33
+ const comRef = id => `::nanocom::ref<${id}>`;
34
+ /** @type {(id: string) => string} */
35
+ const ptr = id => `${id} const*`;
36
+ /** @type {(id: string) => string} */
37
+ const ref = id => `${id} const&`;
38
+ /** @type {(p: types.Field) => string} */
39
+ const paramName = ([name]) => name;
40
+ const mapParamName = map(paramName);
41
+ const joinComma = join(', ');
42
+ /** @type {(name: string) => (lib: types.Library) => text.Block} */
43
+ export const cpp = name => lib => {
44
+ /** @type {(t: types.Type) => string|null} */
45
+ const interface_ = t => {
46
+ if (!(t instanceof Array) || t.length !== 1) {
47
+ return null;
48
+ }
49
+ const [name] = t;
50
+ return 'interface' in lib[name] ? name : null;
51
+ };
52
+ /** @type {(i: (t: string) => string) => (t: types.Type) => string} */
53
+ const objectType = i => t => {
54
+ if (typeof (t) === 'string') {
55
+ return baseType(t);
56
+ }
57
+ if (t.length === 2) {
58
+ return `${type(t[1])} const*`;
59
+ }
60
+ const [id] = t;
61
+ return 'interface' in lib[id] ? i(id) : id;
62
+ };
63
+ const type = objectType(comRef);
64
+ const resultType = objectType(ptr);
65
+ /** @type {(s: types.Field) => text.Item} */
66
+ const field = ([name, t]) => `${type(t)} ${name};`;
67
+ const mapField = map(field);
68
+ /** @type {(s: types.Struct) => text.Block} */
69
+ const defStruct = s => mapField(entries(s.struct));
70
+ /** @type {(fa: types.FieldArray) => string} */
71
+ const cppResult = resultVoid(resultType);
72
+ /** @type {(p: types.Field) => string} */
73
+ const param = ([name, t]) => `${objectType(ref)(t)} ${name}`;
74
+ const mapParam = map(param);
75
+ /** @type {(result: string) => (paramArrayStr: string) => (name: string) => text.Item} */
76
+ const methodHeader = result => paramArrayStr => name => `virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`;
77
+ /** @type {(m: types.Method) => readonly text.Item[]} */
78
+ const method = ([name, paramArray]) => {
79
+ const result = cppResult(paramArray);
80
+ const paramL = paramList(paramArray);
81
+ const paramArrayStr = `(${joinComma(mapParam(paramL))})`;
82
+ const m = methodHeader(result)(paramArrayStr);
83
+ const resultName = interface_(paramArray._);
84
+ if (resultName === null) {
85
+ return [m(name)];
86
+ }
87
+ return [
88
+ m(`${name}_`),
89
+ `${comRef(resultName)} ${name}${paramArrayStr} const noexcept`,
90
+ '{',
91
+ [`return ::nanocom::move_to_ref(${name}_(${joinComma(mapParamName(paramL))}));`],
92
+ '}',
93
+ ];
94
+ };
95
+ const mapMethod = flatMap(method);
96
+ /** @type {(i: types.Interface) => text.Block} */
97
+ const defInterface = ({ guid, interface: i }) => {
98
+ const g = guid.replaceAll('-', '');
99
+ const lo = g.substring(0, 16);
100
+ const hi = g.substring(16);
101
+ return flat([
102
+ [`constexpr static ::nanocom::GUID const guid = ::nanocom::GUID(0x${lo}, 0x${hi});`],
103
+ mapMethod(entries(i))
104
+ ]);
105
+ };
106
+ /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
107
+ const def = ([name, d]) => 'interface' in d
108
+ ? [
109
+ `class ${name} : public ::nanocom::IUnknown`,
110
+ '{',
111
+ 'public:',
112
+ defInterface(d),
113
+ '};'
114
+ ]
115
+ : struct(name)(defStruct(d));
116
+ /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
117
+ const forward = ([name]) => [`struct ${name};`];
118
+ const e = entries(lib);
119
+ return flat([
120
+ ['#pragma once', ''],
121
+ namespace(name)(flat([flatMap(forward)(e), flatMap(def)(e)]))
122
+ ]);
123
+ };
@@ -0,0 +1,40 @@
1
+ import cpp from './testlib.f.mjs';
2
+ const f = () => {
3
+ const e = '#pragma once\n' +
4
+ '\n' +
5
+ 'namespace My\n' +
6
+ '{\n' +
7
+ ' struct Slice;\n' +
8
+ ' struct ManagedStruct;\n' +
9
+ ' struct IMy;\n' +
10
+ ' struct Slice\n' +
11
+ ' {\n' +
12
+ ' uint8_t const* Start;\n' +
13
+ ' size_t Size;\n' +
14
+ ' };\n' +
15
+ ' struct ManagedStruct\n' +
16
+ ' {\n' +
17
+ ' ::nanocom::ref<IMy> M;\n' +
18
+ ' };\n' +
19
+ ' class IMy : public ::nanocom::IUnknown\n' +
20
+ ' {\n' +
21
+ ' public:\n' +
22
+ ' constexpr static ::nanocom::GUID const guid = ::nanocom::GUID(0xC66FB2702D8049AD, 0xBB6E88C1F90B805D);\n' +
23
+ ' virtual Slice GetSlice() const noexcept = 0;\n' +
24
+ ' virtual void SetSlice(Slice slice) const noexcept = 0;\n' +
25
+ ' virtual bool const* GetUnsafe() const noexcept = 0;\n' +
26
+ ' virtual void SetUnsafe(Slice const* p, uint32_t size) const noexcept = 0;\n' +
27
+ ' virtual bool Some(IMy const& p) const noexcept = 0;\n' +
28
+ ' virtual IMy const* GetIMy_(uint16_t a, int16_t b) const noexcept = 0;\n' +
29
+ ' ::nanocom::ref<IMy> GetIMy(uint16_t a, int16_t b) const noexcept\n' +
30
+ ' {\n' +
31
+ ' return ::nanocom::move_to_ref(GetIMy_(a, b));\n' +
32
+ ' }\n' +
33
+ ' virtual void SetManagedStruct(ManagedStruct a) const noexcept = 0;\n' +
34
+ ' };\n' +
35
+ '}';
36
+ if (cpp() !== e) {
37
+ throw cpp;
38
+ }
39
+ };
40
+ export default f;
@@ -0,0 +1,7 @@
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
+ export default () => join('\n')(flat(' ')(cpp('My')(library)));
@@ -0,0 +1,4 @@
1
+ /** @type {(name: string) => (library: types.Library) => text.Block} */
2
+ export const cs: (name: string) => (library: types.Library) => text.Block;
3
+ import * as types from '../types/module.f.mjs';
4
+ import * as text from '../../text/module.f.mjs';