functionalscript 0.3.4 → 0.3.6

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,186 +0,0 @@
1
- #![allow(non_snake_case)]
2
-
3
- // interface definition:
4
-
5
- mod library {
6
- use nanocom::{CObject, Class, Interface, Object, Ref, GUID};
7
-
8
- #[repr(C)]
9
- pub struct IMy {
10
- pub A: unsafe extern "system" fn(this: &Object<IMy>) -> Ref<IMy>,
11
- pub B: unsafe extern "system" fn(this: &Object<IMy>) -> u32,
12
- }
13
-
14
- impl Interface for IMy {
15
- const GUID: GUID = 0x01234567_89AB_CDEF_0123_456789ABCDEF;
16
- }
17
-
18
- pub trait IMyEx {
19
- fn A(&self) -> Ref<IMy>;
20
- fn B(&self) -> u32;
21
- }
22
-
23
- impl IMyEx for Object<IMy> {
24
- fn A(&self) -> Ref<IMy> {
25
- unsafe { (self.interface().A)(self) }
26
- }
27
- fn B(&self) -> u32 {
28
- unsafe { (self.interface().B)(self) }
29
- }
30
- }
31
-
32
- pub trait IMyVmt: Class<Interface = IMy>
33
- where
34
- CObject<Self>: IMyEx,
35
- {
36
- const INTERFACE: IMy = IMy {
37
- A: Self::A,
38
- B: Self::B,
39
- };
40
- }
41
-
42
- impl<T: Class<Interface = IMy>> IMyVmt for T where CObject<T>: IMyEx {}
43
-
44
- trait IMyVmtFn: Class<Interface = IMy>
45
- where
46
- CObject<Self>: IMyEx,
47
- {
48
- extern "system" fn A(this: &Object<IMy>) -> Ref<IMy> {
49
- unsafe { CObject::from_object_unchecked(this) }.A()
50
- }
51
- extern "system" fn B(this: &Object<IMy>) -> u32 {
52
- unsafe { CObject::from_object_unchecked(this) }.B()
53
- }
54
- }
55
-
56
- impl<T: Class<Interface = IMy>> IMyVmtFn for T where CObject<T>: IMyEx {}
57
- }
58
-
59
- // interface implementation
60
- mod number {
61
- use nanocom::{CObject, Class, Ref, Vmt};
62
-
63
- use super::library::{IMy, IMyEx, IMyVmt};
64
-
65
- pub struct X(pub u32);
66
-
67
- impl Class for X {
68
- type Interface = IMy;
69
- fn static_vmt() -> &'static Vmt<Self::Interface> {
70
- static V: Vmt<IMy> = Vmt {
71
- iunknown: CObject::<X>::IUNKNOWN,
72
- interface: X::INTERFACE,
73
- };
74
- &V
75
- }
76
- }
77
-
78
- #[allow(non_snake_case)]
79
- impl IMyEx for CObject<X> {
80
- fn A(&self) -> Ref<IMy> {
81
- self.into()
82
- }
83
- fn B(&self) -> u32 {
84
- self.value.0
85
- }
86
- }
87
- }
88
-
89
- mod use_number {
90
- use nanocom::CObjectEx;
91
-
92
- use super::{library::IMyEx, number::X};
93
-
94
- #[test]
95
- fn test() {
96
- let a = X(42).to_cobject();
97
- let a1 = a.A();
98
- assert_eq!(a, a1);
99
- assert_eq!(a.B(), 42);
100
- let b = X(43).to_cobject();
101
- assert_ne!(a, b);
102
- assert_eq!(b.B(), 43);
103
- }
104
- }
105
-
106
- mod destructor {
107
- use std::{
108
- rc::Rc,
109
- sync::atomic::{AtomicU32, Ordering},
110
- };
111
-
112
- use nanocom::{CObject, Class, Ref, Vmt};
113
-
114
- use super::library::{IMy, IMyEx, IMyVmt};
115
-
116
- pub struct X {
117
- p: Rc<AtomicU32>,
118
- }
119
-
120
- impl X {
121
- pub fn new(p: Rc<AtomicU32>) -> Self {
122
- p.fetch_add(1, Ordering::Relaxed);
123
- Self { p }
124
- }
125
- }
126
-
127
- impl Drop for X {
128
- fn drop(&mut self) {
129
- self.p.fetch_sub(1, Ordering::Relaxed);
130
- }
131
- }
132
-
133
- impl Class for X {
134
- type Interface = IMy;
135
- fn static_vmt() -> &'static Vmt<Self::Interface> {
136
- static V: Vmt<IMy> = Vmt {
137
- iunknown: CObject::<X>::IUNKNOWN,
138
- interface: X::INTERFACE,
139
- };
140
- &V
141
- }
142
- }
143
-
144
- #[allow(non_snake_case)]
145
- impl IMyEx for CObject<X> {
146
- fn A(&self) -> Ref<IMy> {
147
- self.into()
148
- }
149
- fn B(&self) -> u32 {
150
- self.value.p.load(Ordering::Relaxed)
151
- }
152
- }
153
- }
154
-
155
- mod use_destructor {
156
- use std::{
157
- rc::Rc,
158
- sync::atomic::{AtomicU32, Ordering},
159
- };
160
-
161
- use nanocom::CObjectEx;
162
-
163
- use super::{destructor::X, library::IMyEx};
164
-
165
- #[test]
166
- fn test() {
167
- let p = Rc::new(AtomicU32::default());
168
- {
169
- assert_eq!(p.load(Ordering::Relaxed), 0);
170
- let a = X::new(p.clone()).to_cobject();
171
- assert_eq!(p.load(Ordering::Relaxed), 1);
172
- let a1 = a.A();
173
- assert_eq!(p.load(Ordering::Relaxed), 1);
174
- assert_eq!(a, a1);
175
- assert_eq!(a.B(), 1);
176
- {
177
- let b = X::new(p.clone()).to_cobject();
178
- assert_eq!(p.load(Ordering::Relaxed), 2);
179
- assert_ne!(a, b);
180
- assert_eq!(b.B(), 2);
181
- }
182
- assert_eq!(p.load(Ordering::Relaxed), 1);
183
- }
184
- assert_eq!(p.load(Ordering::Relaxed), 0);
185
- }
186
- }
@@ -1,195 +0,0 @@
1
- #![allow(non_snake_case)]
2
-
3
- // interface definition:
4
-
5
- mod library {
6
- pub mod IMy {
7
- use nanocom::CObject;
8
-
9
- pub type Object = nanocom::Object<Interface>;
10
- pub type Ref = nanocom::Ref<Interface>;
11
- pub type Vmt = nanocom::Vmt<Interface>;
12
-
13
- #[repr(C)]
14
- pub struct Interface {
15
- pub A: unsafe extern "system" fn(this: &Object) -> Ref,
16
- pub B: unsafe extern "system" fn(this: &Object) -> u32,
17
- }
18
-
19
- impl nanocom::Interface for Interface {
20
- const GUID: nanocom::GUID = 0x01234567_89AB_CDEF_0123_456789ABCDEF;
21
- }
22
-
23
- pub trait Ex {
24
- fn A(&self) -> Ref;
25
- fn B(&self) -> u32;
26
- }
27
-
28
- impl Ex for Object {
29
- fn A(&self) -> Ref {
30
- unsafe { (self.interface().A)(self) }
31
- }
32
- fn B(&self) -> u32 {
33
- unsafe { (self.interface().B)(self) }
34
- }
35
- }
36
-
37
- pub trait ClassEx: nanocom::Class<Interface = Interface>
38
- where
39
- nanocom::CObject<Self>: Ex,
40
- {
41
- const VMT: Vmt = Vmt {
42
- iunknown: CObject::<Self>::IUNKNOWN,
43
- interface: Interface {
44
- A: Self::A,
45
- B: Self::B,
46
- },
47
- };
48
- }
49
-
50
- impl<T: nanocom::Class<Interface = Interface>> ClassEx for T where nanocom::CObject<T>: Ex {}
51
-
52
- trait PrivateClassEx: nanocom::Class<Interface = Interface>
53
- where
54
- nanocom::CObject<Self>: Ex,
55
- {
56
- extern "system" fn A(this: &Object) -> Ref {
57
- unsafe { CObject::from_object_unchecked(this) }.A()
58
- }
59
- extern "system" fn B(this: &Object) -> u32 {
60
- unsafe { CObject::from_object_unchecked(this) }.B()
61
- }
62
- }
63
-
64
- impl<T: nanocom::Class<Interface = Interface>> PrivateClassEx for T where nanocom::CObject<T>: Ex {}
65
- }
66
- }
67
-
68
- // interface implementation
69
- mod number {
70
- use nanocom::{CObject, Vmt};
71
-
72
- use crate::library::IMy::ClassEx;
73
-
74
- use super::library::IMy;
75
-
76
- pub struct X(pub u32);
77
-
78
- impl nanocom::Class for X {
79
- type Interface = IMy::Interface;
80
- fn static_vmt() -> &'static Vmt<Self::Interface> {
81
- static V: IMy::Vmt = X::VMT;
82
- &V
83
- }
84
- }
85
-
86
- impl IMy::Ex for CObject<X> {
87
- fn A(&self) -> IMy::Ref {
88
- self.into()
89
- }
90
- fn B(&self) -> u32 {
91
- self.value.0
92
- }
93
- }
94
- }
95
-
96
- mod use_number {
97
- use nanocom::CObjectEx;
98
-
99
- use crate::library::IMy::Ex;
100
-
101
- use super::number::X;
102
-
103
- #[test]
104
- fn test() {
105
- let a = X(42).to_cobject();
106
- let a1 = a.A();
107
- assert_eq!(a, a1);
108
- assert_eq!(a.B(), 42);
109
- let b = X(43).to_cobject();
110
- assert_ne!(a, b);
111
- assert_eq!(b.B(), 43);
112
- }
113
- }
114
-
115
- mod destructor {
116
- use std::{
117
- rc::Rc,
118
- sync::atomic::{AtomicU32, Ordering},
119
- };
120
-
121
- use nanocom::{CObject, Vmt};
122
-
123
- use crate::library::IMy::ClassEx;
124
-
125
- use super::library::IMy;
126
-
127
- pub struct X {
128
- p: Rc<AtomicU32>,
129
- }
130
-
131
- impl X {
132
- pub fn new(p: Rc<AtomicU32>) -> Self {
133
- p.fetch_add(1, Ordering::Relaxed);
134
- Self { p }
135
- }
136
- }
137
-
138
- impl Drop for X {
139
- fn drop(&mut self) {
140
- self.p.fetch_sub(1, Ordering::Relaxed);
141
- }
142
- }
143
-
144
- impl nanocom::Class for X {
145
- type Interface = IMy::Interface;
146
- fn static_vmt() -> &'static Vmt<Self::Interface> {
147
- static V: IMy::Vmt = X::VMT;
148
- &V
149
- }
150
- }
151
-
152
- impl IMy::Ex for CObject<X> {
153
- fn A(&self) -> IMy::Ref {
154
- self.into()
155
- }
156
- fn B(&self) -> u32 {
157
- self.value.p.load(Ordering::Relaxed)
158
- }
159
- }
160
- }
161
-
162
- mod use_destructor {
163
- use std::{
164
- rc::Rc,
165
- sync::atomic::{AtomicU32, Ordering},
166
- };
167
-
168
- use nanocom::CObjectEx;
169
-
170
- use crate::library::IMy::Ex;
171
-
172
- use super::destructor::X;
173
-
174
- #[test]
175
- fn test() {
176
- let p = Rc::new(AtomicU32::default());
177
- {
178
- assert_eq!(p.load(Ordering::Relaxed), 0);
179
- let a = X::new(p.clone()).to_cobject();
180
- assert_eq!(p.load(Ordering::Relaxed), 1);
181
- let a1 = a.A();
182
- assert_eq!(p.load(Ordering::Relaxed), 1);
183
- assert_eq!(a, a1);
184
- assert_eq!(a.B(), 1);
185
- {
186
- let b = X::new(p.clone()).to_cobject();
187
- assert_eq!(p.load(Ordering::Relaxed), 2);
188
- assert_ne!(a, b);
189
- assert_eq!(b.B(), 2);
190
- }
191
- assert_eq!(p.load(Ordering::Relaxed), 1);
192
- }
193
- assert_eq!(p.load(Ordering::Relaxed), 0);
194
- }
195
- }
@@ -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 { rust } from './module.f.ts'
6
- import library from '../types/testlib.f.ts'
7
-
8
- export default join('\n')(flat(' ')(rust(library)))
@@ -1,111 +0,0 @@
1
- import * as list from '../../types/list/module.f.ts'
2
- const { flat } = list
3
-
4
- import cppContent from '../cpp/testlib.f.ts'
5
- import csContent from '../cs/testlib.f.ts'
6
- import rustContent from '../rust/testlib.f.ts'
7
-
8
- type Platform =
9
- | 'aix'
10
- | 'android'
11
- | 'darwin'
12
- | 'freebsd'
13
- | 'haiku'
14
- | 'linux'
15
- | 'openbsd'
16
- | 'sunos'
17
- | 'win32'
18
- | 'cygwin'
19
- | 'netbsd'
20
-
21
- type NodeJs = {
22
- readonly dirname: string
23
- readonly platform: Platform
24
- }
25
-
26
- type Output ={
27
- readonly file: {
28
- readonly name: string
29
- readonly content: string
30
- }
31
- readonly line: list.List<list.List<string>>
32
- }
33
-
34
- export type Func = (nodejs: NodeJs) => Output
35
-
36
- const flags
37
- : (platform: Platform) => readonly string[]
38
- = platform => {
39
-
40
- switch (platform) {
41
- case 'win32':
42
- return []
43
- case 'linux':
44
- return ['-std=c++17', '-lstdc++', '-fPIC']
45
- default:
46
- return ['-std=c++17', '-lc++']
47
- }
48
- }
49
-
50
- const output
51
- : (platform: Platform) => (name: string) => string
52
- = platform => name => {
53
-
54
- switch (platform) {
55
- case 'win32': return `${name}.dll`
56
- case 'darwin': return `lib${name}.dylib`
57
- default: return `lib${name}.so`
58
- }
59
- }
60
-
61
- const cpp
62
- : Func
63
- = ({ dirname, platform }) => ({
64
-
65
- file: {
66
- name: `${dirname}/cpp/_result.hpp`,
67
- content: cppContent(),
68
- },
69
- line: [
70
- flat([
71
- ['clang', '-shared', '-o', output(platform)('testc')],
72
- flags(platform),
73
- [`${dirname}/cpp/main.cpp`],
74
- ]),
75
- ],
76
- })
77
-
78
- const cs
79
- : Func
80
- = ({ dirname, platform }) => ({
81
-
82
- file: {
83
- name: `${dirname}/cs/_result.cs`,
84
- content: csContent,
85
- },
86
- line: [
87
- platform === 'win32'
88
- ? ['dotnet', 'run', '--project', `${dirname}/cs/cs.csproj`]
89
- // .Net on Linux and MacOS doesn't properly support COM object marshalling
90
- : ['dotnet', 'build', `${dirname}/cs/cs.csproj`]
91
- ],
92
- })
93
-
94
- const rust
95
- : Func
96
- = ({ dirname }) => ({
97
- file: {
98
- name: `${dirname}/rust/src/_result.rs`,
99
- content: rustContent,
100
- },
101
- line: [['cargo', 'build' /**, '--locked' */]]
102
- })
103
-
104
- export default {
105
- /** @readonly */
106
- cpp,
107
- /** @readonly */
108
- cs,
109
- /** @readonly */
110
- rust,
111
- }
package/com/test/build.ts DELETED
@@ -1,45 +0,0 @@
1
- import { writeFileSync } from 'node:fs'
2
- import { execSync } from 'node:child_process'
3
- import { platform, exit } from 'node:process'
4
- import build, * as Build from './build.f.ts'
5
- const { cpp, cs, rust } = build
6
- import * as string from '../../types/string/module.f.ts'
7
- const { join } = string
8
- const { log, error } = console
9
- import * as sgr from '../../text/sgr/module.f.ts'
10
- const { bold, reset } = sgr
11
- import * as list from '../../types/list/module.f.ts'
12
-
13
- import { fileURLToPath } from 'node:url'
14
- import { dirname } from 'node:path'
15
-
16
- const __filename = fileURLToPath(import.meta.url);
17
- const __dirname = dirname(__filename)
18
-
19
- const nodeJs = {
20
- dirname: __dirname,
21
- platform,
22
- }
23
-
24
- const run
25
- : (f: Build.Func) => void
26
- = f => {
27
- const { file: { name, content }, line } = f(nodeJs)
28
- log(`${bold}writing: ${name}${reset}`)
29
- writeFileSync(name, content)
30
- for (const i of list.iterable(line)) {
31
- const cmd = join(' ')(i)
32
- log(`${bold}running: ${cmd}${reset}`)
33
- try {
34
- log(execSync(cmd).toString())
35
- } catch (e) {
36
- // @ts-ignore
37
- error(e.output.toString())
38
- exit(-1)
39
- }
40
- }
41
- }
42
-
43
- run(cpp)
44
- run(rust)
45
- run(cs)
@@ -1,74 +0,0 @@
1
- #include "../../cpp/nanocom.hpp"
2
- #include "_result.hpp"
3
-
4
- #ifdef _WIN32
5
- #define DLL_EXPORT __declspec(dllexport)
6
- #else
7
- #define DLL_EXPORT
8
- #endif
9
-
10
- DLL_EXPORT
11
- extern "C" int c_get()
12
- {
13
- return 43;
14
- }
15
-
16
- class Impl : public My::IMy
17
- {
18
- public:
19
- My::Slice GetSlice() const noexcept override
20
- {
21
- }
22
- void SetSlice(My::Slice slice) const noexcept override
23
- {
24
- std::cout
25
- << "SetSlice: "
26
- << (slice.Start - static_cast<uint8_t const *>(nullptr))
27
- << ", "
28
- << slice.Size
29
- << std::endl;
30
- }
31
- bool const *GetUnsafe() const noexcept override
32
- {
33
- }
34
- void SetUnsafe(My::Slice const *p, uint32_t size) const noexcept override
35
- {
36
- }
37
- bool Some(My::IMy const &p) const noexcept override
38
- {
39
- }
40
- My::IMy const *GetIMy_(uint16_t a, int16_t b) const noexcept override
41
- {
42
- return ::nanocom::to_ref(*this).copy_to_raw();
43
- }
44
- void SetManagedStruct(My::ManagedStruct a) const noexcept override
45
- {
46
- }
47
- ~Impl()
48
- {
49
- ::std::cout << "done" << std::endl;
50
- }
51
- };
52
-
53
- DLL_EXPORT
54
- extern "C" My::IMy const *c_my_create()
55
- {
56
- {
57
- auto const a = ::nanocom::implementation<Impl>::create().copy_to_raw();
58
- // auto const c = *x; // no copy constructor
59
- Impl *b;
60
- b = const_cast<Impl*>(::nanocom::implementation<Impl>::create().copy_to_raw());
61
- // *b = *a; // no assignment operator
62
- b->Release();
63
- a->Release();
64
- }
65
- {
66
- auto const x = ::nanocom::implementation<Impl>::create().copy_to_raw();
67
- x->Release();
68
- }
69
- {
70
- auto const x = ::nanocom::implementation<Impl>::create().upcast<My::IMy>();
71
- x->SetSlice(My::Slice());
72
- }
73
- return ::nanocom::implementation<Impl>::create().copy_to_raw();
74
- }
@@ -1,31 +0,0 @@
1
- using System.Runtime.InteropServices;
2
- using My;
3
-
4
- [DllImport("testrust")]
5
- static extern int get();
6
-
7
- [DllImport("testrust")]
8
- static extern IMy rust_my_create();
9
-
10
- [DllImport("testc")]
11
- static extern int c_get();
12
-
13
- [DllImport("testc")]
14
- static extern IMy c_my_create();
15
-
16
- // See https://aka.ms/new-console-template for more information
17
- Console.WriteLine("Hello, World!");
18
- Console.WriteLine(get());
19
- Console.WriteLine(c_get());
20
-
21
- var x = rust_my_create();
22
- x.SetSlice(new Slice { Start = null, Size = (UIntPtr)44 });
23
-
24
- {
25
- var y = c_my_create();
26
- y.SetSlice(new Slice { Start = null, Size = (UIntPtr)45 });
27
- var t = y.GetIMy(1, 2);
28
- }
29
-
30
- GC.Collect();
31
- Console.WriteLine("ok");
@@ -1,16 +0,0 @@
1
- <Project Sdk="Microsoft.NET.Sdk">
2
-
3
- <PropertyGroup>
4
- <OutputType>Exe</OutputType>
5
- <TargetFramework>net6.0</TargetFramework>
6
- <ImplicitUsings>enable</ImplicitUsings>
7
- <Nullable>enable</Nullable>
8
- <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
9
- </PropertyGroup>
10
-
11
- <ItemGroup>
12
- <None Include="../../../target/debug/*testrust.*" CopyToOutputDirectory="PreserveNewest"/>
13
- <None Include="../../../*testc.*" CopyToOutputDirectory="PreserveNewest"/>
14
- </ItemGroup>
15
-
16
- </Project>
@@ -1,12 +0,0 @@
1
- [package]
2
- name = "testrust"
3
- version = "0.1.0"
4
- edition = "2021"
5
-
6
- # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
-
8
- [lib]
9
- crate-type = ["cdylib"]
10
-
11
- [dependencies]
12
- nanocom = { path = "../../rust/nanocom" }