functionalscript 0.3.4 → 0.3.5

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 (457) hide show
  1. package/com/cpp/module.f.d.ts +10 -0
  2. package/com/cpp/module.f.js +107 -0
  3. package/com/cpp/test.f.d.ts +2 -0
  4. package/com/cpp/{test.f.ts → test.f.js} +9 -11
  5. package/com/cpp/testlib.f.d.ts +2 -0
  6. package/com/cpp/testlib.f.js +5 -0
  7. package/com/cs/module.f.d.ts +12 -0
  8. package/com/cs/module.f.js +80 -0
  9. package/com/cs/test.f.d.ts +2 -0
  10. package/com/cs/{test.f.ts → test.f.js} +9 -11
  11. package/com/cs/testlib.f.d.ts +2 -0
  12. package/com/cs/testlib.f.js +5 -0
  13. package/com/rust/module.f.d.ts +15 -0
  14. package/com/rust/module.f.js +169 -0
  15. package/com/rust/test.f.d.ts +2 -0
  16. package/com/rust/{test.f.ts → test.f.js} +7 -7
  17. package/com/rust/testlib.f.d.ts +2 -0
  18. package/com/rust/testlib.f.js +5 -0
  19. package/com/test/build.f.d.ts +20 -0
  20. package/com/test/build.f.js +58 -0
  21. package/com/types/module.f.d.ts +28 -0
  22. package/com/types/module.f.js +8 -0
  23. package/com/types/testlib.f.d.ts +44 -0
  24. package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
  25. package/commonjs/build/module.f.d.ts +6 -0
  26. package/commonjs/build/module.f.js +69 -0
  27. package/commonjs/build/test.f.d.ts +2 -0
  28. package/commonjs/build/test.f.js +96 -0
  29. package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
  30. package/commonjs/module/function/module.f.js +4 -0
  31. package/commonjs/module/module.f.d.ts +18 -0
  32. package/commonjs/module/module.f.js +12 -0
  33. package/commonjs/module.f.d.ts +6 -0
  34. package/commonjs/module.f.js +1 -0
  35. package/commonjs/package/dependencies/module.f.d.ts +7 -0
  36. package/commonjs/package/dependencies/module.f.js +13 -0
  37. package/commonjs/package/dependencies/test.f.d.ts +2 -0
  38. package/commonjs/package/dependencies/test.f.js +15 -0
  39. package/commonjs/package/module.f.d.ts +17 -0
  40. package/commonjs/package/module.f.js +18 -0
  41. package/commonjs/package/test.f.d.ts +2 -0
  42. package/commonjs/package/test.f.js +27 -0
  43. package/commonjs/path/module.f.d.ts +24 -0
  44. package/commonjs/path/module.f.js +114 -0
  45. package/commonjs/path/test.f.d.ts +25 -0
  46. package/commonjs/path/{test.f.ts → test.f.js} +123 -89
  47. package/crypto/prime_field/module.f.d.ts +43 -0
  48. package/crypto/prime_field/module.f.js +78 -0
  49. package/crypto/prime_field/test.f.d.ts +13 -0
  50. package/crypto/prime_field/test.f.js +149 -0
  51. package/crypto/secp/module.f.d.ts +68 -0
  52. package/crypto/secp/module.f.js +127 -0
  53. package/crypto/secp/test.f.d.ts +5 -0
  54. package/crypto/secp/test.f.js +72 -0
  55. package/crypto/sha2/module.f.d.ts +13 -0
  56. package/crypto/sha2/module.f.js +145 -0
  57. package/crypto/sha2/test.f.d.ts +9 -0
  58. package/crypto/sha2/test.f.js +82 -0
  59. package/dev/module.f.d.ts +1 -0
  60. package/dev/module.f.js +1 -0
  61. package/dev/test/module.f.d.ts +20 -0
  62. package/dev/test/module.f.js +75 -0
  63. package/dev/test.f.d.ts +9 -0
  64. package/dev/{test.f.ts → test.f.js} +22 -24
  65. package/djs/module.f.d.ts +17 -0
  66. package/djs/module.f.js +63 -0
  67. package/djs/parser/module.f.d.ts +12 -0
  68. package/djs/parser/module.f.js +333 -0
  69. package/djs/parser/test.f.d.ts +12 -0
  70. package/djs/parser/test.f.js +717 -0
  71. package/djs/serializer/module.f.d.ts +9 -0
  72. package/djs/serializer/module.f.js +81 -0
  73. package/djs/test/input.f.d.ts +2 -0
  74. package/djs/test/input.f.js +4 -0
  75. package/djs/test/m.f.d.ts +2 -0
  76. package/djs/test/m.f.js +1 -0
  77. package/djs/test.f.d.ts +12 -0
  78. package/djs/test.f.js +84 -0
  79. package/djs/tokenizer/module.f.d.ts +8 -0
  80. package/djs/tokenizer/module.f.js +60 -0
  81. package/djs/tokenizer/test.f.d.ts +7 -0
  82. package/djs/tokenizer/test.f.js +529 -0
  83. package/fsc/module.f.d.ts +5 -0
  84. package/fsc/module.f.js +75 -0
  85. package/fsc/test.f.d.ts +4 -0
  86. package/fsc/test.f.js +19 -0
  87. package/fsm/module.f.d.ts +13 -0
  88. package/fsm/module.f.js +59 -0
  89. package/fsm/test.f.d.ts +5 -0
  90. package/fsm/test.f.js +137 -0
  91. package/html/module.f.d.ts +13 -0
  92. package/html/module.f.js +58 -0
  93. package/html/test.f.d.ts +9 -0
  94. package/html/test.f.js +42 -0
  95. package/issues/test.f.d.ts +16 -0
  96. package/issues/test.f.js +70 -0
  97. package/js/tokenizer/module.f.d.ts +86 -0
  98. package/js/tokenizer/module.f.js +503 -0
  99. package/js/tokenizer/test.f.d.ts +9 -0
  100. package/js/tokenizer/test.f.js +905 -0
  101. package/json/module.f.d.ts +20 -0
  102. package/json/module.f.js +68 -0
  103. package/json/parser/module.f.d.ts +5 -0
  104. package/json/parser/module.f.js +155 -0
  105. package/json/parser/test.f.d.ts +5 -0
  106. package/json/parser/test.f.js +328 -0
  107. package/json/serializer/module.f.d.ts +7 -0
  108. package/json/serializer/module.f.js +21 -0
  109. package/json/serializer/test.f.d.ts +8 -0
  110. package/json/serializer/test.f.js +87 -0
  111. package/json/test.f.d.ts +8 -0
  112. package/json/test.f.js +61 -0
  113. package/json/tokenizer/module.f.d.ts +8 -0
  114. package/json/tokenizer/module.f.js +52 -0
  115. package/json/tokenizer/test.f.d.ts +6 -0
  116. package/json/tokenizer/test.f.js +419 -0
  117. package/nanvm-lib/tests/test.f.d.ts +27 -0
  118. package/nanvm-lib/tests/test.f.js +84 -0
  119. package/nodejs/version/module.f.d.ts +11 -0
  120. package/nodejs/version/module.f.js +16 -0
  121. package/nodejs/version/test.f.d.ts +2 -0
  122. package/nodejs/version/{test.f.ts → test.f.js} +13 -22
  123. package/package.json +9 -5
  124. package/text/ascii/module.f.d.ts +129 -0
  125. package/text/ascii/module.f.js +148 -0
  126. package/text/ascii/test.f.d.ts +4 -0
  127. package/text/ascii/test.f.js +14 -0
  128. package/text/module.f.d.ts +8 -0
  129. package/text/module.f.js +10 -0
  130. package/text/sgr/module.f.d.ts +8 -0
  131. package/text/sgr/module.f.js +8 -0
  132. package/text/test.f.d.ts +2 -0
  133. package/text/test.f.js +18 -0
  134. package/text/utf16/module.f.d.ts +9 -0
  135. package/text/utf16/module.f.js +66 -0
  136. package/text/utf16/test.f.d.ts +6 -0
  137. package/text/utf16/test.f.js +144 -0
  138. package/text/utf8/module.f.d.ts +6 -0
  139. package/text/utf8/module.f.js +112 -0
  140. package/text/utf8/test.f.d.ts +6 -0
  141. package/text/utf8/test.f.js +175 -0
  142. package/types/array/module.f.d.ts +21 -0
  143. package/types/array/module.f.js +23 -0
  144. package/types/array/test.f.d.ts +10 -0
  145. package/types/array/test.f.js +116 -0
  146. package/types/bigfloat/module.f.d.ts +3 -0
  147. package/types/bigfloat/module.f.js +66 -0
  148. package/types/bigfloat/test.f.d.ts +6 -0
  149. package/types/bigfloat/test.f.js +349 -0
  150. package/types/bigint/module.f.d.ts +54 -0
  151. package/types/bigint/{module.f.ts → module.f.js} +42 -65
  152. package/types/bigint/test.f.d.ts +16 -0
  153. package/types/bigint/test.f.js +199 -0
  154. package/types/bit_vec/module.f.d.ts +134 -0
  155. package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
  156. package/types/bit_vec/test.f.d.ts +22 -0
  157. package/types/bit_vec/test.f.js +210 -0
  158. package/types/btree/find/module.f.d.ts +20 -0
  159. package/types/btree/find/module.f.js +84 -0
  160. package/types/btree/find/test.f.d.ts +2 -0
  161. package/types/btree/find/test.f.js +152 -0
  162. package/types/btree/module.f.d.ts +4 -0
  163. package/types/btree/module.f.js +31 -0
  164. package/types/btree/remove/module.f.d.ts +4 -0
  165. package/types/btree/remove/module.f.js +174 -0
  166. package/types/btree/remove/test.f.d.ts +5 -0
  167. package/types/btree/remove/test.f.js +634 -0
  168. package/types/btree/set/module.f.d.ts +3 -0
  169. package/types/btree/set/module.f.js +103 -0
  170. package/types/btree/set/test.f.d.ts +2 -0
  171. package/types/btree/set/test.f.js +360 -0
  172. package/types/btree/test.f.d.ts +8 -0
  173. package/types/btree/test.f.js +75 -0
  174. package/types/btree/types/module.f.d.ts +11 -0
  175. package/types/btree/types/module.f.js +1 -0
  176. package/types/byte_set/module.f.d.ts +16 -0
  177. package/types/byte_set/module.f.js +28 -0
  178. package/types/byte_set/test.f.d.ts +12 -0
  179. package/types/byte_set/test.f.js +122 -0
  180. package/types/function/compare/module.f.d.ts +10 -0
  181. package/types/function/compare/module.f.js +7 -0
  182. package/types/function/compare/test.f.d.ts +2 -0
  183. package/types/function/compare/test.f.js +8 -0
  184. package/types/function/module.f.d.ts +28 -0
  185. package/types/function/module.f.js +19 -0
  186. package/types/function/operator/module.f.d.ts +20 -0
  187. package/types/function/operator/module.f.js +18 -0
  188. package/types/function/test.f.d.ts +2 -0
  189. package/types/function/test.f.js +12 -0
  190. package/types/list/module.f.d.ts +50 -0
  191. package/types/list/module.f.js +171 -0
  192. package/types/list/test.f.d.ts +22 -0
  193. package/types/list/test.f.js +395 -0
  194. package/types/map/module.f.d.ts +14 -0
  195. package/types/map/module.f.js +31 -0
  196. package/types/map/test.f.d.ts +5 -0
  197. package/types/map/test.f.js +114 -0
  198. package/types/nibble_set/module.f.d.ts +10 -0
  199. package/types/nibble_set/module.f.js +9 -0
  200. package/types/nibble_set/test.f.d.ts +12 -0
  201. package/types/nibble_set/test.f.js +90 -0
  202. package/types/nullable/module.f.d.ts +3 -0
  203. package/types/nullable/module.f.js +2 -0
  204. package/types/nullable/test.f.d.ts +2 -0
  205. package/types/nullable/test.f.js +12 -0
  206. package/types/number/module.f.d.ts +6 -0
  207. package/types/number/module.f.js +8 -0
  208. package/types/number/test.f.d.ts +11 -0
  209. package/types/number/test.f.js +124 -0
  210. package/types/object/module.f.d.ts +10 -0
  211. package/types/object/module.f.js +12 -0
  212. package/types/object/test.f.d.ts +5 -0
  213. package/types/object/test.f.js +17 -0
  214. package/types/range/module.f.d.ts +3 -0
  215. package/types/range/module.f.js +2 -0
  216. package/types/range/test.f.d.ts +2 -0
  217. package/types/range/test.f.js +18 -0
  218. package/types/range_map/module.f.d.ts +14 -0
  219. package/types/range_map/module.f.js +51 -0
  220. package/types/range_map/test.f.d.ts +6 -0
  221. package/types/range_map/test.f.js +176 -0
  222. package/types/result/module.f.d.ts +7 -0
  223. package/types/result/module.f.js +8 -0
  224. package/types/sorted_list/module.f.d.ts +16 -0
  225. package/types/sorted_list/module.f.js +56 -0
  226. package/types/sorted_list/test.f.d.ts +5 -0
  227. package/types/sorted_list/test.f.js +64 -0
  228. package/types/sorted_set/module.f.d.ts +7 -0
  229. package/types/sorted_set/module.f.js +14 -0
  230. package/types/sorted_set/test.f.d.ts +6 -0
  231. package/types/sorted_set/test.f.js +78 -0
  232. package/types/string/module.f.d.ts +6 -0
  233. package/types/string/module.f.js +11 -0
  234. package/types/string/test.f.d.ts +15 -0
  235. package/types/string/test.f.js +58 -0
  236. package/types/string_set/module.f.d.ts +9 -0
  237. package/types/string_set/module.f.js +22 -0
  238. package/types/string_set/test.f.d.ts +5 -0
  239. package/types/string_set/test.f.js +65 -0
  240. package/.github/FUNDING.yml +0 -12
  241. package/.github/dependabot.yml +0 -11
  242. package/.github/workflows/ci.yml +0 -88
  243. package/.github/workflows/npm-publish.yml +0 -53
  244. package/CHANGELOG.md +0 -29
  245. package/Cargo.lock +0 -18
  246. package/Cargo.toml +0 -7
  247. package/com/README.md +0 -3
  248. package/com/cpp/README.md +0 -80
  249. package/com/cpp/module.f.ts +0 -180
  250. package/com/cpp/nanocom.hpp +0 -195
  251. package/com/cpp/testlib.f.ts +0 -8
  252. package/com/cs/module.f.ts +0 -145
  253. package/com/cs/testlib.f.ts +0 -8
  254. package/com/proposals.md +0 -28
  255. package/com/rust/module.f.ts +0 -287
  256. package/com/rust/nanocom/Cargo.lock +0 -7
  257. package/com/rust/nanocom/Cargo.toml +0 -15
  258. package/com/rust/nanocom/README.md +0 -56
  259. package/com/rust/nanocom/src/class.rs +0 -6
  260. package/com/rust/nanocom/src/cobject.rs +0 -90
  261. package/com/rust/nanocom/src/guid.rs +0 -15
  262. package/com/rust/nanocom/src/hresult.rs +0 -7
  263. package/com/rust/nanocom/src/interface.rs +0 -9
  264. package/com/rust/nanocom/src/iunknown.rs +0 -13
  265. package/com/rust/nanocom/src/lib.rs +0 -20
  266. package/com/rust/nanocom/src/object.rs +0 -34
  267. package/com/rust/nanocom/src/ref.rs +0 -57
  268. package/com/rust/nanocom/src/vmt.rs +0 -7
  269. package/com/rust/nanocom/tests/it.rs +0 -186
  270. package/com/rust/nanocom/tests/itmod.rs +0 -195
  271. package/com/rust/testlib.f.ts +0 -8
  272. package/com/test/build.f.ts +0 -111
  273. package/com/test/build.ts +0 -45
  274. package/com/test/cpp/main.cpp +0 -74
  275. package/com/test/cs/Program.cs +0 -31
  276. package/com/test/cs/cs.csproj +0 -16
  277. package/com/test/rust/Cargo.toml +0 -12
  278. package/com/test/rust/src/lib.rs +0 -56
  279. package/com/types/module.f.ts +0 -62
  280. package/commonjs/README.md +0 -94
  281. package/commonjs/build/module.f.ts +0 -100
  282. package/commonjs/build/test.f.ts +0 -107
  283. package/commonjs/module/module.f.ts +0 -41
  284. package/commonjs/module.f.ts +0 -7
  285. package/commonjs/module.ts +0 -31
  286. package/commonjs/package/dependencies/module.f.ts +0 -22
  287. package/commonjs/package/dependencies/test.f.ts +0 -8
  288. package/commonjs/package/module.f.ts +0 -31
  289. package/commonjs/package/test.f.ts +0 -12
  290. package/commonjs/path/README.md +0 -17
  291. package/commonjs/path/module.f.ts +0 -171
  292. package/commonjs/test.ts +0 -64
  293. package/crypto/README.md +0 -3
  294. package/crypto/prime_field/module.f.ts +0 -114
  295. package/crypto/prime_field/test.f.ts +0 -95
  296. package/crypto/secp/module.f.ts +0 -182
  297. package/crypto/secp/test.f.ts +0 -68
  298. package/crypto/sha2/module.f.ts +0 -215
  299. package/crypto/sha2/test.f.ts +0 -83
  300. package/deno.json +0 -71
  301. package/dev/README.md +0 -8
  302. package/dev/index.ts +0 -3
  303. package/dev/module.f.ts +0 -1
  304. package/dev/module.ts +0 -195
  305. package/dev/test/module.f.ts +0 -135
  306. package/dev/test.ts +0 -53
  307. package/djs/README.md +0 -54
  308. package/djs/module.f.ts +0 -76
  309. package/djs/parser/module.f.ts +0 -509
  310. package/djs/parser/test.f.ts +0 -461
  311. package/djs/serializer/module.f.ts +0 -90
  312. package/djs/test.f.ts +0 -67
  313. package/djs/tokenizer/module.f.ts +0 -99
  314. package/djs/tokenizer/test.f.ts +0 -364
  315. package/doc/LANGUAGE.md +0 -255
  316. package/doc/README.md +0 -61
  317. package/doc/byte-code.md +0 -59
  318. package/doc/fa.md +0 -174
  319. package/doc/predefined.md +0 -143
  320. package/doc/proposals.md +0 -21
  321. package/doc/vm/README.md +0 -24
  322. package/doc/vm-rearchitecture.md +0 -129
  323. package/doc/vm.md +0 -150
  324. package/fsc/README.md +0 -111
  325. package/fsc/module.f.ts +0 -122
  326. package/fsc/test.f.ts +0 -21
  327. package/fsm/README.md +0 -113
  328. package/fsm/module.f.ts +0 -107
  329. package/fsm/test.f.ts +0 -139
  330. package/funding.json +0 -61
  331. package/html/README.md +0 -32
  332. package/html/module.f.ts +0 -109
  333. package/html/test.f.ts +0 -37
  334. package/issues/01-test-debug.md +0 -3
  335. package/issues/02-esm.md +0 -8
  336. package/issues/03-djs.md +0 -57
  337. package/issues/05-publish.md +0 -40
  338. package/issues/11-fs-load.md +0 -13
  339. package/issues/17-djs-extension.md +0 -6
  340. package/issues/README.md +0 -42
  341. package/issues/lang/1000-json.md +0 -50
  342. package/issues/lang/2110-default-export.md +0 -11
  343. package/issues/lang/2120-const.md +0 -14
  344. package/issues/lang/2130-default-import.md +0 -10
  345. package/issues/lang/2210-block-comment.md +0 -12
  346. package/issues/lang/2220-namespace-import.md +0 -25
  347. package/issues/lang/2310-undefined.md +0 -7
  348. package/issues/lang/2320-bigint.md +0 -7
  349. package/issues/lang/2330-property-accessor.md +0 -225
  350. package/issues/lang/2340-operators.md +0 -41
  351. package/issues/lang/2350-grouping.md +0 -11
  352. package/issues/lang/2360-built-in.md +0 -81
  353. package/issues/lang/2410-identifier-property.md +0 -9
  354. package/issues/lang/2420-line-comment.md +0 -10
  355. package/issues/lang/2430-trailing-comma.md +0 -13
  356. package/issues/lang/2440-shorthand.md +0 -8
  357. package/issues/lang/2450-destructuring.md +0 -12
  358. package/issues/lang/3110-function.md +0 -35
  359. package/issues/lang/3120-parameters.md +0 -9
  360. package/issues/lang/3130-body-const.md +0 -12
  361. package/issues/lang/3220-let.md +0 -11
  362. package/issues/lang/3240-export.md +0 -44
  363. package/issues/lang/3370-type-inference.md +0 -69
  364. package/issues/lang/3380-promise.md +0 -22
  365. package/issues/lang/3390-class.md +0 -3
  366. package/issues/lang/3410-expression.md +0 -12
  367. package/issues/lang/3420-one-parameter.md +0 -10
  368. package/issues/lang/3430-assignments.md +0 -23
  369. package/issues/lang/README.md +0 -193
  370. package/issues/test.f.ts +0 -58
  371. package/js/tokenizer/module.f.ts +0 -882
  372. package/js/tokenizer/test.f.ts +0 -617
  373. package/json/html/README.md +0 -49
  374. package/json/module.f.ts +0 -94
  375. package/json/parser/module.f.ts +0 -221
  376. package/json/parser/test.f.ts +0 -255
  377. package/json/serializer/module.f.ts +0 -74
  378. package/json/serializer/test.f.ts +0 -64
  379. package/json/test.f.ts +0 -48
  380. package/json/tokenizer/module.f.ts +0 -85
  381. package/json/tokenizer/test.f.ts +0 -290
  382. package/nanvm-lib/Cargo.toml +0 -6
  383. package/nanvm-lib/src/extension.rs +0 -130
  384. package/nanvm-lib/src/interface.rs +0 -133
  385. package/nanvm-lib/src/lib.rs +0 -7
  386. package/nanvm-lib/src/naive.rs +0 -236
  387. package/nanvm-lib/src/nanenum.rs +0 -236
  388. package/nanvm-lib/src/nullish.rs +0 -7
  389. package/nanvm-lib/src/sign.rs +0 -5
  390. package/nanvm-lib/src/simple.rs +0 -32
  391. package/nanvm-lib/tests/test.f.ts +0 -80
  392. package/nanvm-lib/tests/test.rs +0 -108
  393. package/nodejs/version/main.ts +0 -4
  394. package/nodejs/version/module.f.ts +0 -42
  395. package/text/README.md +0 -110
  396. package/text/ascii/module.f.ts +0 -219
  397. package/text/ascii/test.f.ts +0 -14
  398. package/text/module.f.ts +0 -30
  399. package/text/sgr/README.md +0 -3
  400. package/text/sgr/module.f.ts +0 -11
  401. package/text/test.f.ts +0 -19
  402. package/text/utf16/module.f.ts +0 -120
  403. package/text/utf16/test.f.ts +0 -107
  404. package/text/utf8/module.f.ts +0 -116
  405. package/text/utf8/test.f.ts +0 -125
  406. package/tsconfig.json +0 -104
  407. package/types/array/module.f.ts +0 -89
  408. package/types/array/test.f.ts +0 -88
  409. package/types/bigfloat/module.f.ts +0 -93
  410. package/types/bigfloat/test.f.ts +0 -218
  411. package/types/bigint/README.md +0 -35
  412. package/types/bigint/test.f.ts +0 -144
  413. package/types/bit_vec/README.md +0 -18
  414. package/types/bit_vec/test.f.ts +0 -129
  415. package/types/btree/README.md +0 -160
  416. package/types/btree/find/module.f.ts +0 -92
  417. package/types/btree/find/test.f.ts +0 -122
  418. package/types/btree/module.f.ts +0 -35
  419. package/types/btree/remove/module.f.ts +0 -151
  420. package/types/btree/remove/test.f.ts +0 -498
  421. package/types/btree/set/module.f.ts +0 -89
  422. package/types/btree/set/test.f.ts +0 -415
  423. package/types/btree/test.f.ts +0 -92
  424. package/types/btree/types/module.f.ts +0 -27
  425. package/types/byte_set/module.f.ts +0 -73
  426. package/types/byte_set/test.f.ts +0 -84
  427. package/types/function/compare/module.f.ts +0 -26
  428. package/types/function/compare/test.f.ts +0 -7
  429. package/types/function/module.f.ts +0 -43
  430. package/types/function/operator/module.f.ts +0 -65
  431. package/types/function/test.f.ts +0 -20
  432. package/types/list/module.f.ts +0 -350
  433. package/types/list/test.f.ts +0 -327
  434. package/types/map/module.f.ts +0 -65
  435. package/types/map/test.f.ts +0 -76
  436. package/types/nibble_set/module.f.ts +0 -34
  437. package/types/nibble_set/test.f.ts +0 -57
  438. package/types/nullable/module.f.ts +0 -9
  439. package/types/nullable/test.f.ts +0 -9
  440. package/types/number/module.f.ts +0 -20
  441. package/types/number/test.f.ts +0 -194
  442. package/types/object/module.f.ts +0 -30
  443. package/types/object/test.f.ts +0 -14
  444. package/types/range/module.f.ts +0 -10
  445. package/types/range/test.f.ts +0 -9
  446. package/types/range_map/module.f.ts +0 -70
  447. package/types/range_map/test.f.ts +0 -189
  448. package/types/result/module.f.ts +0 -20
  449. package/types/result/module.ts +0 -18
  450. package/types/sorted_list/module.f.ts +0 -83
  451. package/types/sorted_list/test.f.ts +0 -57
  452. package/types/sorted_set/module.f.ts +0 -36
  453. package/types/sorted_set/test.f.ts +0 -67
  454. package/types/string/module.f.ts +0 -26
  455. package/types/string/test.f.ts +0 -43
  456. package/types/string_set/module.f.ts +0 -37
  457. package/types/string_set/test.f.ts +0 -34
@@ -1,180 +0,0 @@
1
- /**
2
- * This module generates C++ code blocks, including structs, interfaces, and method headers,
3
- * based on a COM library of type definitions.
4
- */
5
-
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'
11
- const { join } = string
12
- const { paramList } = types
13
- const { map, flatMap, flat } = list
14
- const { entries } = Object
15
-
16
- const struct
17
- = (name: string) => (body: text.Block): text.Block =>
18
- [`struct ${name}`, '{', body, '};']
19
-
20
- const baseTypeMap = {
21
- u8: 'uint8_t',
22
- i8: 'int8_t',
23
- u16: 'uint16_t',
24
- i16: 'int16_t',
25
- u32: 'uint32_t',
26
- i32: 'int32_t',
27
- u64: 'uint64_t',
28
- i64: 'int64_t',
29
- usize: 'size_t',
30
- isize: 'ptrdiff_t',
31
- f32: 'float',
32
- f64: 'double',
33
- bool: 'bool',
34
- }
35
-
36
- const baseType
37
- : (t: types.BaseType) => string
38
- = t => baseTypeMap[t]
39
-
40
- const resultVoid = types.result('void')
41
-
42
- const namespace = text.curly('namespace')
43
-
44
- const comRef
45
- : (id: string) => string
46
- = id => `::nanocom::ref<${id}>`
47
-
48
- const ptr
49
- : (id: string) => string
50
- = id => `${id} const*`
51
-
52
- const ref
53
- : (id: string) => string
54
- = id => `${id} const&`
55
-
56
- const paramName
57
- : (p: types.Field) => string
58
- = ([name]) => name
59
-
60
- const mapParamName = map(paramName)
61
-
62
- const joinComma = join(', ')
63
-
64
- /**
65
- * Generates the C++ code for a library.
66
- */
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 => {
74
-
75
- if (!(t instanceof Array) || t.length !== 1) {
76
- return null
77
- }
78
- const [name] = t
79
- return 'interface' in lib[name] ? name : null
80
- }
81
-
82
- const objectType
83
- : (i: (t: string) => string) => (t: types.Type) => string
84
- = i => t => {
85
-
86
- if (typeof (t) === 'string') { return baseType(t) }
87
- if (t.length === 2) { return `${type(t[1])} const*` }
88
- const [id] = t
89
- return 'interface' in lib[id] ? i(id) : id
90
- }
91
-
92
- const type = objectType(comRef)
93
-
94
- const resultType = objectType(ptr)
95
-
96
- const field
97
- : (s: types.Field) => text.Item
98
- = ([name, t]) => `${type(t)} ${name};`
99
-
100
- const mapField = map(field)
101
-
102
- const defStruct
103
- : (s: types.Struct) => text.Block
104
- = s => mapField(entries(s.struct))
105
-
106
- const cppResult
107
- : (fa: types.FieldArray) => string
108
- = resultVoid(resultType)
109
-
110
- const param
111
- : (p: types.Field) => string
112
- = ([name, t]) => `${objectType(ref)(t)} ${name}`
113
-
114
- const mapParam = map(param)
115
-
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]) => {
124
-
125
- const result = cppResult(paramArray)
126
- const paramL = paramList(paramArray)
127
- const paramArrayStr = `(${joinComma(mapParam(paramL))})`
128
- const m = methodHeader(result)(paramArrayStr)
129
- const resultName = interface_(paramArray._)
130
- if (resultName === null) {
131
- return [m(name)]
132
- }
133
- return [
134
- m(`${name}_`),
135
- `${comRef(resultName)} ${name}${paramArrayStr} const noexcept`,
136
- '{',
137
- [`return ::nanocom::move_to_ref(${name}_(${joinComma(mapParamName(paramL))}));`],
138
- '}',
139
- ]
140
- }
141
-
142
- const mapMethod = flatMap(method)
143
-
144
- const defInterface
145
- : (i: types.Interface) => text.Block
146
- = ({ guid, interface: i }) => {
147
-
148
- const g = guid.replaceAll('-', '');
149
- const lo = g.substring(0, 16);
150
- const hi = g.substring(16);
151
- return flat([
152
- [`constexpr static ::nanocom::GUID const guid = ::nanocom::GUID(0x${lo}, 0x${hi});`],
153
- mapMethod(entries(i))
154
- ])
155
- }
156
-
157
- const def
158
- : (kv: O.Entry<types.Definition>) => text.Block
159
- = ([name, d]) => 'interface' in d
160
-
161
- ? [
162
- `class ${name} : public ::nanocom::IUnknown`,
163
- '{',
164
- 'public:',
165
- defInterface(d),
166
- '};'
167
- ]
168
- : struct(name)(defStruct(d))
169
-
170
- const forward
171
- : (kv: O.Entry<types.Definition>) => text.Block
172
- = ([name]) => [`struct ${name};`]
173
-
174
- const e = entries(lib)
175
-
176
- return flat([
177
- ['#pragma once', ''],
178
- namespace(name)(flat([flatMap(forward)(e), flatMap(def)(e)]))
179
- ])
180
- }
@@ -1,195 +0,0 @@
1
- #pragma once
2
-
3
- #include <cstdint>
4
- #include <cstddef>
5
- #include <atomic>
6
- #include <iostream>
7
-
8
- static_assert(sizeof(bool) == 1);
9
-
10
- namespace nanocom
11
- {
12
- constexpr uint64_t byteswap(uint64_t v) noexcept
13
- {
14
- v = v >> 8 & 0x00FF'00FF'00FF'00FF |
15
- v << 8 & 0xFF00'FF00'FF00'FF00;
16
- v = v >> 16 & 0x0000'FFFF'0000'FFFF |
17
- v << 16 & 0xFFFF'0000'FFFF'0000;
18
- return v >> 32 | v << 32;
19
- }
20
-
21
- class GUID
22
- {
23
- public:
24
- uint64_t lo;
25
- uint64_t hi;
26
- constexpr GUID(uint64_t const lo, uint64_t const hi) noexcept
27
- : lo(lo << 48 & 0xFFFF'0000'0000'0000 |
28
- lo << 16 & 0x0000'FFFF'0000'0000 |
29
- lo >> 32),
30
- hi(byteswap(hi))
31
- {
32
- }
33
- constexpr bool operator==(GUID const b) const noexcept
34
- {
35
- return lo == b.lo && hi == b.hi;
36
- }
37
- constexpr bool operator!=(GUID const b) const noexcept
38
- {
39
- return !(*this == b);
40
- }
41
- };
42
-
43
- constexpr inline char hex_digit(uint64_t const v, int const i) noexcept
44
- {
45
- char const c = v >> i & 0x0F;
46
- return c < 10 ? c + '0' : c + ('A' - 10);
47
- }
48
-
49
- inline void guid_part(std::ostream &os, uint64_t const v)
50
- {
51
- for (int i = 60; i >= 0; i -= 4)
52
- {
53
- os << hex_digit(v, i);
54
- }
55
- }
56
-
57
- inline std::ostream &operator<<(std::ostream &os, GUID const &self)
58
- {
59
- guid_part(os, self.lo);
60
- guid_part(os, self.hi);
61
- return os;
62
- }
63
-
64
- enum class HRESULT : uint32_t
65
- {
66
- S_OK = 0,
67
- E_NOINTERFACE = 0x80004002,
68
- };
69
-
70
- typedef uint32_t ULONG;
71
-
72
- class IUnknown
73
- {
74
- public:
75
- virtual HRESULT QueryInterface(GUID const &riid, IUnknown const **ppvObject) const noexcept = 0;
76
- virtual ULONG AddRef() const noexcept = 0;
77
- virtual ULONG Release() const noexcept = 0;
78
- protected:
79
- IUnknown() = default;
80
- private:
81
- IUnknown(IUnknown const&);
82
- IUnknown& operator=(IUnknown const&);
83
- };
84
-
85
- template <class I>
86
- class ref
87
- {
88
- public:
89
- explicit ref(I const &other) noexcept : p(other)
90
- {
91
- p.AddRef();
92
- }
93
- ref(ref const &other) noexcept : ref(other.p)
94
- {
95
- }
96
- ~ref() noexcept
97
- {
98
- p.Release();
99
- }
100
-
101
- template <class U>
102
- ref<U> upcast() const noexcept
103
- {
104
- return ref<U>(p);
105
- }
106
-
107
- I const *operator->() const noexcept
108
- {
109
- return &p;
110
- }
111
-
112
- I const *copy_to_raw() const noexcept
113
- {
114
- p.AddRef();
115
- return &p;
116
- }
117
-
118
- static ref move_to_ref(I const *const p)
119
- {
120
- return ref(p);
121
- }
122
-
123
- private:
124
- I const &p;
125
- ref(I const *const p) : p(*p) {}
126
- };
127
-
128
- template <class I>
129
- ref<I> move_to_ref(I const *const p)
130
- {
131
- return ref<I>::move_to_ref(p);
132
- }
133
-
134
- template <class I>
135
- ref<I> to_ref(I const &p) noexcept
136
- {
137
- return ref<I>(p);
138
- }
139
-
140
- constexpr static GUID const iunknown_guid =
141
- GUID(0x00000000'0000'0000, 0xC000'000000000046);
142
-
143
- template <class T>
144
- class implementation : public T
145
- {
146
- public:
147
- template <class... U>
148
- static ref<T> create(U... u)
149
- {
150
- T const *const p = new implementation(u...);
151
- return to_ref(*p);
152
- }
153
-
154
- private:
155
- HRESULT QueryInterface(GUID const &riid, IUnknown const **const ppvObject) const noexcept override
156
- {
157
- // std::cout << "riid: " << riid << std::endl;
158
- // std::cout << "iunknown: " << iunknown_guid << std::endl;
159
- // std::cout << "T::guid: " << T::guid << std::endl;
160
- // std::cout << std::endl;
161
- if (riid != iunknown_guid && riid != T::guid)
162
- {
163
- return HRESULT::E_NOINTERFACE;
164
- }
165
- add_ref();
166
- *ppvObject = this;
167
- return HRESULT::S_OK;
168
- }
169
-
170
- ULONG add_ref() const noexcept
171
- {
172
- return counter.fetch_add(1);
173
- }
174
-
175
- ULONG AddRef() const noexcept override
176
- {
177
- return add_ref() + 1;
178
- }
179
-
180
- ULONG Release() const noexcept override
181
- {
182
- auto const c = counter.fetch_sub(1) - 1;
183
- if (c == 0)
184
- {
185
- delete this;
186
- }
187
- return c;
188
- }
189
-
190
- template <class... U>
191
- explicit implementation(U... u) : T(u...) {}
192
-
193
- mutable std::atomic<ULONG> counter;
194
- };
195
- }
@@ -1,8 +0,0 @@
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,145 +0,0 @@
1
- /**
2
- * This module generates C# code blocks for COM interop from a high-level type library definition.
3
- *
4
- * The module maps type definitions (e.g., structs, interfaces, and methods) into C# constructs
5
- * with appropriate attributes for COM interop, such as `[StructLayout]`, `[Guid]`, and `[InterfaceType]`.
6
- */
7
- import * as types from '../types/module.f.ts'
8
- const { result, paramList } = types
9
- import * as text from '../../text/module.f.ts'
10
- const { curly } = text
11
- import * as list from '../../types/list/module.f.ts'
12
- const { flat, map, some, flatMap } = list
13
- import * as string from '../../types/string/module.f.ts'
14
- const { join } = string
15
- import * as O from '../../types/object/module.f.ts'
16
- const { entries } = Object
17
-
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 =>
29
- flat([
30
- map(v => `[${v}]`)(attributes),
31
- curly(`public ${type}`)(name)(body)
32
- ])
33
-
34
- const baseTypeMap = {
35
- bool: 'byte',
36
- f32: 'float',
37
- f64: 'double',
38
- i16: 'short',
39
- i32: 'int',
40
- i64: 'long',
41
- i8: 'sbyte',
42
- isize: 'IntPtr',
43
- u16: 'ushort',
44
- u32: 'uint',
45
- u64: 'ulong',
46
- u8: 'byte',
47
- usize: 'UIntPtr',
48
- }
49
-
50
- const baseType
51
- : (t: types.BaseType) => string
52
- = t => baseTypeMap[t]
53
-
54
- const unsafe
55
- : (isUnsafe: boolean) => string
56
- = isUnsafe => isUnsafe ? 'unsafe ' : ''
57
-
58
- const fullType
59
- : (t: types.Type) => readonly[boolean, string]
60
- = t =>
61
- typeof (t) === 'string' ? [false, baseType(t)] :
62
- t.length === 1 ? [false, t[0]] :
63
- [true, `${type(t[1])}*`]
64
-
65
- const type
66
- : (m: types.Type) => string
67
- = t => fullType(t)[1]
68
-
69
- const param
70
- : (f: types.Field) => string
71
- = ([name, t]) => `${type(t)} ${name}`
72
-
73
- const mapParam = map(param)
74
-
75
- const field
76
- : (f: types.Field) => string
77
- = ([name, comType]) => {
78
- const [isUnsafe, t] = fullType(comType)
79
- return `public ${unsafe(isUnsafe)}${t} ${name};`
80
- }
81
-
82
- const isUnsafeField
83
- : (field: types.Field) => boolean
84
- = field => fullType(field[1])[0]
85
-
86
- const mapIsUnsafeField = map(isUnsafeField)
87
-
88
- const resultVoid = result('void')
89
-
90
- const joinComma = join(', ')
91
-
92
- const method
93
- : (e: O.Entry<types.FieldArray>) => readonly string[]
94
- = ([name, m]) => {
95
-
96
- const paramAndResultList = entries(m)
97
- const pl = paramList(m)
98
- const isUnsafe = some(mapIsUnsafeField(paramAndResultList))
99
- return [
100
- '[PreserveSig]',
101
- `${unsafe(isUnsafe)}${resultVoid(type)(m)} ${name}(${joinComma(mapParam(pl))});`
102
- ]
103
- }
104
-
105
- const struct = typeDef
106
- (['StructLayout(LayoutKind.Sequential)'])
107
- ('struct')
108
-
109
- const mapField = map(field)
110
-
111
- const flatMapMethod = flatMap(method)
112
-
113
- const def
114
- : (e: O.Entry<types.Definition>) => list.List<text.Item>
115
- = ([n, d]) => {
116
- return !('interface' in d) ?
117
- struct(n)(mapField(entries(d.struct))) :
118
- typeDef
119
- ([`Guid("${d.guid}")`, 'InterfaceType(ComInterfaceType.InterfaceIsIUnknown)'])
120
- ('interface')
121
- (n)
122
- (flatMapMethod(entries(d.interface)))
123
- }
124
-
125
- const flatMapDef = flatMap(def)
126
-
127
- const namespace = curly('namespace')
128
-
129
- /** @type {text.Block} */
130
- const header = [
131
- using('System'),
132
- using('System.Runtime.InteropServices'),
133
- ''
134
- ]
135
-
136
- /**
137
- * Generates the C# code for a library.
138
- */
139
- export const cs
140
- : (name: string) => (library: types.Library) => text.Block
141
- = name => library => {
142
- const v = flatMapDef(entries(library))
143
- const ns = namespace(name)(v)
144
- return flat([header, ns])
145
- }
@@ -1,8 +0,0 @@
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)))
package/com/proposals.md DELETED
@@ -1,28 +0,0 @@
1
- # Proposals For NanoCOM
2
-
3
- ## Pointer Types
4
-
5
- - By ownership
6
- - direct reference/pointer. `&I`
7
- - cloneable wrapper. For example, `ref<I>`.
8
- - By nullability
9
- - non-nullable, a reference. For example, `ref<I>`.
10
- - nullable, a pointer. For example, `ptr<I>`.
11
- - By mutability
12
- - immutable. Multithreaded, with an atomic counter. The object can be mutable with synchronization mechanisms.
13
- - mutable. Single-threaded. With a simple counter and mutable.
14
- - By value
15
- - interface. All functions are virtual. For example add_ref/release
16
- - implementation. Functions can be called directly, including add_ref/release.
17
- ```rust
18
- trait IUnknown {
19
- fn add_ref(self);
20
- fn release(self);
21
- fn query_interface<I>(self) -> ptr<I>;
22
- }
23
- // examples
24
- impl IUnknown for &IImmutableInterface { ... }
25
- impl IUnknown for &mut IMutableInterface { ... }
26
- impl IUnknown for &IImmutableInterfaceImplementation { ... }
27
- impl IUnknown for &mut IMutableInterfaceImplementation { ... }
28
- ```