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,50 +0,0 @@
1
- # JSON
2
-
3
- JSON forms a tree of values.
4
-
5
- ```json
6
- {
7
- "a": null,
8
- "b": [-42.5, false, "hello"]
9
- }
10
- ```
11
-
12
- File extension: `.json`.
13
-
14
- ## NPN (Normal Polish Notation)
15
-
16
- We will use [NPN](https://en.wikipedia.org/wiki/Polish_notation) as a command format for our VM because it allows us to allocate required objects during streaming as a stack automata.
17
-
18
-
19
- ```js
20
- {2} "a" null "b" [3] -42.5 false "hello"
21
-
22
- // evolution
23
- <> {2} "a" null "b" [3] -42.5 false "hello"
24
- { ?: ?, ?: ? } <{4}> "a" null "b" [3] -42.5 false "hello"
25
- { "a": ?, ?: ? } <{3}> null "b" [3] -42.5 false "hello"
26
- { "a": null, ?: ? } <{2}> "b" [3] -42.5 false "hello"
27
- { "a": null, "b": ? } <{1}> [3] -42.5 false "hello"
28
- { "a": null, "b": [?, ?, ?] } <{0}[3]> -42.5 false "hello"
29
- { "a": null, "b": [-42.5, ?, ?] } <{0}[2]> false "hello"
30
- { "a": null, "b": [-42.5, false, ?] } <{0}[1]> "hello"
31
- { "a": null, "b": [-42.5, false, "hello"] } <>
32
- ```
33
-
34
- ## RPN, just for fun
35
-
36
- [Reverse Polish Notation](https://en.wikipedia.org/wiki/Reverse_Polish_notation):
37
-
38
- ```js
39
- "a" null "b" -42.5 false "hello" [3] {2}
40
-
41
- // evolution:
42
- "a" <> null "b" -42.5 false "hello" [3] {2}
43
- "a" null <> "b" -42.5 false "hello" [3] {2}
44
- "a" null "b" <> -42.5 false "hello" [3] {2}
45
- "a" null "b" -42.5 <> false "hello" [3] {2}
46
- "a" null "b" -42.5 false <> "hello" [3] {2}
47
- "a" null "b" -42.5 false "hello" <> [3] {2}
48
- "a" null "b" [-42.5, false, "hello"] <> {2}
49
- { "a" : null, "b": [-42.5, false, "hello"] } <>
50
- ```
@@ -1,11 +0,0 @@
1
- # Default Export
2
-
3
- Parse `export default` and then JSON. This is enough to have the same functionality as JSON.
4
-
5
- ```js
6
- export default 5
7
- ```
8
-
9
- Depends on [JSON](./1000-json.md)
10
-
11
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export#using_the_default_export.
@@ -1,14 +0,0 @@
1
- # Constants
2
-
3
- This is enough to provide basic DJS graph and serialization.
4
-
5
- ```js
6
- const a = null
7
- export default {
8
- "a": a,
9
- }
10
- ```
11
-
12
- Depends on [default-export](./2110-default-export.md).
13
-
14
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
@@ -1,10 +0,0 @@
1
- # Default Import
2
-
3
- ```js
4
- import a from './a.d.mjs'
5
- export default [a]
6
- ```
7
-
8
- Depends on [default-export](./2110-default-export.md).
9
-
10
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#default_import.
@@ -1,12 +0,0 @@
1
- # Block Comment
2
-
3
- We need it to declare JSDoc/TypeScript types.
4
-
5
- ```js
6
- /** @type {number} */
7
- export default -42.5
8
- ```
9
-
10
- Depends on [default-export](./2110-default-export.md).
11
-
12
- See <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#line_comments>
@@ -1,25 +0,0 @@
1
- # Namespace Import
2
-
3
- We need it to import types from other modules.
4
-
5
- ```js
6
- import * as A from './a.d.mjs'
7
- /** @type {A.Type} */
8
- export default [5]
9
- ```
10
-
11
- Where `./a.d.mjs` may look like this:
12
-
13
- ```js
14
- // this type can be used in other modules
15
- /** @typedef {readonly [number]} Type */
16
-
17
- // export nothing
18
- export default null
19
- ```
20
-
21
- FunctionalScript should use namespace import only as a mechanism to reference type definitions. Since, VM doesn't analyze types, namespace import can be ignored be VM. However different linters, such as TypeScript, can use the information.
22
-
23
- Depends on [default-import](./2110-default-export.md).
24
-
25
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#namespace_import
@@ -1,7 +0,0 @@
1
- # Undefined Type
2
-
3
- ```js
4
- export default undefined
5
- ```
6
-
7
- Depend on [default-export](./2110-default-export.md).
@@ -1,7 +0,0 @@
1
- # BigInt
2
-
3
- ```js
4
- export default 34n
5
- ```
6
-
7
- Depend on [default-export](./2110-default-export.md).
@@ -1,225 +0,0 @@
1
- # Get Property
2
-
3
- ```js
4
- const own_property = a => b => Object.getOwnPropertyDescriptor(obj, property)?.value
5
- // Or
6
- const own_property = a => b => Object.hasOwn(obj, property) ? obj[property] : void 0
7
- ```
8
-
9
- It's translated into the VM command `own_property`:
10
-
11
- ```rust
12
- struct OwnProperty {
13
- obj: Expression
14
- property: Expression
15
- }
16
- ```
17
-
18
- ## Instance Property
19
-
20
- ```js
21
- obj.property
22
- obj.['property']
23
- ```
24
-
25
- It's translated into the VM command `instance_property`:
26
-
27
- ```rust
28
- struct InstanceProperty {
29
- obj: Expression
30
- index: u8
31
- }
32
- ```
33
-
34
- If the property name is one of the implemented property names, it should be translated into `index: u8`.
35
-
36
- If a property name is one of the prohibited property names or one of the method names, then it's a compilation error.
37
-
38
- All other property names generate `own_property` commands.
39
-
40
- [Object Instance Properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#instance_properties),
41
-
42
- |name |side-effect |
43
- |-------------|------------------------------|
44
- |`__proto__` |access to function constructor|
45
- |`constructor`|access to function constructor|
46
-
47
- ```js
48
- const f = () => {}
49
- {
50
- const c = f.constructor
51
- const g = c(`console.log('hello')`)
52
- g() // side effect
53
- }
54
- {
55
- const p = f.__proto__
56
- const c = Object.getOwnPropertyDescriptor(p, 'constructor').value
57
- const g = c(`console.log('hello')`)
58
- g() // side-effect
59
- }
60
- ```
61
-
62
- [Array Instance Properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#instance_properties).
63
-
64
- | |name |side-effect|
65
- |-|--------|-----------|
66
- |0|`length`|no |
67
-
68
- [Function Instance Properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function#instance_properties)
69
-
70
- | |name |side-effect|run-time |
71
- |-|-------------|-----------|---------|
72
- | |`arguments` |no |error |
73
- | |`caller` |no |error |
74
- | |`displayName`|no | |
75
- | |`name` |no |error |
76
- | |`prototype` |no |undefined|
77
-
78
- ## Instance Method Call
79
-
80
- ```js
81
- obj.property(parameters)
82
- obj.['property'](parameters)
83
- ```
84
-
85
- It's translated into VM command `instance_method_call`:
86
-
87
- ```rust
88
- struct InstanceMethodCall {
89
- obj: Expression
90
- property: String16
91
- parameters: Array<Expression>
92
- }
93
- ```
94
-
95
- **Note**: All known instance methods can't be used in `instance_property` command! Even if they don't have side effects.
96
-
97
- [Object Instance Methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#instance_methods)
98
-
99
- |name |side-effect |
100
- |----------------------|----------------|
101
- |`__defineGetter__` |mutate |
102
- |`__defineSetter__` |mutate |
103
- |`__lookupGetter__` |'__proto__' |
104
- |`__lookupSetter__` |'__proto__' |
105
- |`hasOwnProperty` |no |
106
- |`isPrototypeOf` |no |
107
- |`propertyIsEnumerable`|no |
108
- |`toLocaleString` |access to locale|
109
- |`toString` |no |
110
- |`valueOf` |no |
111
-
112
- [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#instance_methods)
113
-
114
- |name |side-effect|notes |
115
- |----------------------|-----------|--------|
116
- |`at` |no | |
117
- |`concat` |no | |
118
- |`copyWith` |no | |
119
- |`entries` |yes |iterator|
120
- |`every` |no | |
121
- |`fill` |yes |mutate |
122
- |`filter` |no | |
123
- |`find` |no | |
124
- |`findIndex` |no | |
125
- |`findLast` |no | |
126
- |`findLastIndex` |no | |
127
- |`flat` |no | |
128
- |`flatMap` |no | |
129
- |`forEach` |no | |
130
- |`includes` |no | |
131
- |`indexOf` |no | |
132
- |`join` |no | |
133
- |`keys` |yes |iterator|
134
- |`lastIndexOf` |no | |
135
- |`map` |no | |
136
- |`pop` |yes |mutate |
137
- |`push` |yes |mutate |
138
- |`reduce` |no | |
139
- |`reduceRight` |no | |
140
- |`reverse` |yes |mutate |
141
- |`shift` |yes |mutate |
142
- |`slice` |no | |
143
- |`some` |no | |
144
- |`sort` |yes |mutate |
145
- |`splice` |yes |mutate |
146
- |`toReversed` |no | |
147
- |`toSorted` |no | |
148
- |`toSpliced` |no | |
149
- |`unshift` |yes |mutate |
150
- |`values` |yes |iterator|
151
- |`with` |no | |
152
-
153
- [Function Instance Methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function#instance_methods)
154
-
155
- |name |side-effect|notes |
156
- |-------|-----------|-----------------|
157
- |`apply`|no |`this` is ignored|
158
- |`bind` |no |`this` is ignored|
159
- |`call` |no |`this` is ignored|
160
-
161
- ## At
162
-
163
- ```js
164
- obj[42]
165
- obj[+index]
166
- ```
167
-
168
- It's translated into VM command `at`:
169
-
170
- ```rust
171
- struct InstanceMethodCall {
172
- obj: Expression
173
- index: Expression
174
- }
175
- ```
176
-
177
- ```js
178
- import m from './m.f.mjs'
179
- const a = [2, 3]
180
- export default {
181
- "a": a[0],
182
- // we don't know what is the type of `m` so we force it to be a `number` or `bigint`.
183
- "b": a[+m]
184
- }
185
- ```
186
-
187
- In `obj[index]`, `index` has to be a `number`. If we don't know what is `index`, `+` requires before `index`. It means the byte code for the expression inside the `[]` should be either the unary `+`, a number literal, or a string literal (excluding some strings). If it references an object, FS gives up. FS may try deeper analyses in the future, and type inference can help a lot.
188
-
189
- ## Iterators
190
-
191
- Direct access to an object with the [`Iterator` protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) is not allowed in FunctionalScript.
192
-
193
- ```ts
194
- type Value<T> = { done: true } | { done?: false, value: T }
195
- type Iterator<T> = {
196
- next: () => Value<T>
197
- }
198
- ```
199
-
200
- However, FunctionalScript allows access to objects with the `Iterable` protocol.
201
-
202
- ```ts
203
- type Iterable<T> = {
204
- [Symbol.iterator]: () => Iterator<T>
205
- }
206
- ```
207
-
208
- For example, JS Array implements the `Iterable` protocol.
209
-
210
- If we need to implement support for [generators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator) in the FunctionalScript, the generator function has to be wrapped into `Iterable` interface. For example,
211
-
212
- ```js
213
- // compilation error!
214
- const iterator = *() {
215
- yield 4
216
- yield 2
217
- }
218
- // ok
219
- const iterable = {
220
- *[Symbol.iterator]() {
221
- yield 4
222
- yield 2
223
- }
224
- }
225
- ```
@@ -1,41 +0,0 @@
1
- # Operators
2
-
3
- |Type |Operator |Priority |
4
- |-----------|---------|-----------|
5
- |Comparison |`==` |not allowed|
6
- | |`!=` |not allowed|
7
- | |`===` |1 |
8
- | |`!==` |1 |
9
- | |`>` |1 |
10
- | |`>=` |1 |
11
- | |`<` |1 |
12
- | |`<=` |1 |
13
- |Arithmetics|`+` |1 |
14
- | |`-` |1 |
15
- | |`*` |1 |
16
- | |`/` |1 |
17
- | |`%` |1 |
18
- | |unary `-`|1 |
19
- | |unary `+`|1 |
20
- | |`**` |1 |
21
- |Bitwise |`&` |1 |
22
- | |`\|` |1 |
23
- | |`^` |1 |
24
- | |`~` |1 |
25
- | |`<<` |1 |
26
- | |`>>` |1 |
27
- | |`>>>` |1 |
28
- |Logical |`&&` |1 |
29
- | |`\|\|` |1 |
30
- | |`??` |1 |
31
- | |`!` |1 |
32
- |Conditional|`?:` |1 |
33
- |Comma |`,` |not allowed|
34
-
35
- [Comma operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_operator) is useful only when we want to mutate. We have only one case where we can mutate an object; it's [let](./3320-let.md), and we would like to keep it as simple as possible to track life-time. So, NO for the `,` comma operator.
36
-
37
- Depends on [default-export](./2110-default-export.md) and [undefined](./2310-undefined.md).
38
-
39
- For mutating operators, see [assignments](./3330-assignments.md).
40
-
41
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_operators
@@ -1,11 +0,0 @@
1
- # Grouping
2
-
3
- Group parts of an expression.
4
-
5
- ```js
6
- export default (5)
7
- ```
8
-
9
- Depends on [export-default](./2110-default-export.md).
10
-
11
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Grouping
@@ -1,81 +0,0 @@
1
- # Built-in Objects and Functions
2
-
3
- The built-in objects are special. We can call a function, like `Object.getOwnPropertyDescriptor()`, but not the `Object` or the function.
4
-
5
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
6
-
7
- Some of the JS built-in objects and functions are "not allowed" in FS. It means, an FS compiler rejects code that contains "not allowed" objects and functions.
8
-
9
- ## Object
10
-
11
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
12
-
13
- |Function |side-effect |
14
- |-------------------------|---------------------------|
15
- |assign |mutate |
16
- |create |creates a special prototype|
17
- |defineProperties |mutate |
18
- |defineProperty |mutate |
19
- |entries |no |
20
- |freeze |mutate |
21
- |fromEntries |no |
22
- |getOwnPropertyDescriptor |no |
23
- |getOwnPropertyDescriptors|no |
24
- |getOwnPropertyNames |no |
25
- |getOwnPropertySymbols |return symbols |
26
- |getPrototypeOf |return prototypes |
27
- |groupBy |return null-property object|
28
- |hasOwn |no |
29
- |is |no |
30
- |isExtensible |no |
31
- |isFrozen |no |
32
- |isSealed |no |
33
- |keys |no |
34
- |preventExtensions |mutate |
35
- |seal |mutate |
36
- |setPrototypeOf |mutate |
37
- |values |no |
38
-
39
- ## Array
40
-
41
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
42
-
43
- |Function |side-effect|
44
- |-------------------------|-----------|
45
- |from |no |
46
- |fromAsync |? |
47
- |isArray |no |
48
- |of |no |
49
-
50
- ## BigInt
51
-
52
- |Function |side-effect|
53
- |-------------------------|-----------|
54
- |asIntN |no |
55
- |asUintN |no |
56
-
57
- ## JSON
58
-
59
- |Function |side-effects|
60
- |-------------------------|-----------|
61
- |`isRawJSON` |no |
62
- |`parse` |no |
63
- |`rawJSON` |no |
64
- |`stringify` |no |
65
-
66
- ## Others
67
-
68
- |Function |side-effect|
69
- |-------------------------|-----------|
70
- |`decodeURI()` |no |
71
- |`decodeURIComponent()` |no |
72
- |`encodeURI()` |no |
73
- |`encodeURIComponent()` |no |
74
- |`eval()` |no |
75
-
76
- |Property |side-effect|
77
- |------------|-----------|
78
- |`Infinity` |no |
79
- |`isFinite()`|no |
80
- |`isNaN()` |no |
81
- |`NaN` |no |
@@ -1,9 +0,0 @@
1
- # Identifier Property
2
-
3
- ```js
4
- export default {
5
- a: 'hello',
6
- }
7
- ```
8
-
9
- Depends on [default-import](./2130-default-import.md).
@@ -1,10 +0,0 @@
1
- # Line Comment
2
-
3
- ```js
4
- // this is an object
5
- export default { "a": null }
6
- ```
7
-
8
- Depends on [export-default](./2110-default-export.md).
9
-
10
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#line_comments
@@ -1,13 +0,0 @@
1
- # Trailing Comma
2
-
3
- ```js
4
- export default {
5
- "b": [
6
- "hello",
7
- ],
8
- }
9
- ```
10
-
11
- Depends on [default export](./2110-default-export.md).
12
-
13
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas
@@ -1,8 +0,0 @@
1
- # Shorthand Property Names
2
-
3
- ```js
4
- const a = [null]
5
- export default { a }
6
- ```
7
-
8
- Depends on [identifier-property](./2410-identifier-property.md).
@@ -1,12 +0,0 @@
1
- # Destructuring Assignment
2
-
3
- ```js
4
- const { "a": a, "%": [c, d] } = { "a": null, "%": [true, false] }
5
- export default {
6
- "a": [a, c, d],
7
- }
8
- ```
9
-
10
- Depends on [const](./2120-const.md) and [function parameters](./3120-parameters.md).
11
-
12
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment.
@@ -1,35 +0,0 @@
1
- # Function
2
-
3
- Parse a function that has no parameters and returns a constant.
4
-
5
- ```js
6
- export default () => { return 6 }
7
- ```
8
-
9
- Depends on [default export](./2110-default-export.md).
10
-
11
- See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions.
12
-
13
- ## Recursive Functions
14
-
15
- ```js
16
- const a = i => b(i + 3)
17
- const b = i => i % 5 === 0 ? i : a(i)
18
- ```
19
-
20
- ```rust
21
- fn a(frame: Array<Any>, param: Array<Any>) {
22
- let i = param[0];
23
- let b = frame[1];
24
- b(frame, &[i + 3])
25
- }
26
- fn b(frame: Array<Any>, param: Array<Any>) {
27
- let i = param[0];
28
- if (i % 5 === 0) {
29
- i
30
- } else {
31
- let a = frame[0];
32
- a(frame, &[i])
33
- }
34
- }
35
- ```
@@ -1,9 +0,0 @@
1
- # Function Parameters
2
-
3
- Parse a function that has no parameters and returns a constant.
4
-
5
- ```js
6
- export default (a, b) => { return [a, b] }
7
- ```
8
-
9
- Depends on [function](./3110-function.md).
@@ -1,12 +0,0 @@
1
- # Body Constants
2
-
3
- Parse a const definition in a function body; a const can be used within that body after it is defined.
4
-
5
- ```js
6
- export default () => {
7
- const x = 43
8
- return [3, x]
9
- }
10
- ```
11
-
12
- Depends on [function](./3110-function.md) and [const](./2120-const.md).
@@ -1,11 +0,0 @@
1
- # Let statement
2
-
3
- Introducing `let` and `=`.
4
-
5
- ```js
6
- export default () => {
7
- let a = 0
8
- a = 'Hello world!'
9
- return a
10
- }
11
- ```
@@ -1,44 +0,0 @@
1
- # Non-default Export
2
-
3
- In FunctionalScript we use `export default`:
4
-
5
- ```js
6
- export default 17
7
- ```
8
-
9
- The main reason is that it's compatible with other module types, such as JSON and CommonJS.
10
-
11
- ECMAScript supports `export` of other non-default objects. We wouldn't have much reasons to support but systems as JSR doesn't really like `default` exports.
12
-
13
- To implement `export` we should change our definition of a module from `unknown` to
14
-
15
- ```ts
16
- type Module = {
17
- readonly [k in string]?: unknonwn
18
- readonly default?: unknown
19
- }
20
- ```
21
-
22
- Or, more strict version, which allows either `export` or `export default` but not both:
23
-
24
- ```ts
25
- type Module = ExportMap | ExportDefault
26
- type ExportMap = Omit<{
27
- readonly[k in string]: unknown
28
- }, 'default'>
29
- type DefaultExport = {
30
- readonly default: unknown
31
- }
32
- ```
33
-
34
- We don't need to change `import` for now if we implement `import * as X from ...`. For example
35
-
36
- ```js
37
- // types/list/module.d.mjs
38
- export const map = ...
39
- ```
40
-
41
- ```js
42
- import * as List from 'types/list/module.f.mjs'
43
- const { map } = List
44
- ```