functionalscript 0.3.3 → 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 -196
  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 -222
  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 -13
  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,509 +0,0 @@
1
- import * as result from '../../types/result/module.f.ts'
2
- import * as list from '../../types/list/module.f.ts'
3
- const { fold, first, drop, toArray, map: listMap, length } = list
4
- import * as Operator from '../../types/function/operator/module.f.ts'
5
- import * as tokenizerT from '../tokenizer/module.f.ts'
6
- import * as map from '../../types/map/module.f.ts'
7
- const { setReplace, at } = map
8
- import * as o from '../../types/object/module.f.ts'
9
- const { fromMap } = o
10
-
11
- export type DjsModule = [readonly string[], readonly DjsConst[]]
12
-
13
- export type DjsConst = boolean|string|number|null|bigint|undefined|DjsModuleRef|DjsArray|DjsObject
14
-
15
- type DjsModuleRef = ['aref' | 'cref', number]
16
-
17
- type DjsArray = ['array', readonly DjsConst[]]
18
-
19
- export type DjsObject = {
20
- readonly [k in string]: DjsConst
21
- }
22
-
23
- type DjsStackArray = ['array', list.List<DjsConst>]
24
-
25
- type DjsStackObject = ['object', map.Map<DjsConst>, string]
26
-
27
- type DjsStackElement = |
28
- DjsStackArray |
29
- DjsStackObject
30
-
31
- type DjsStack = list.List<DjsStackElement>
32
-
33
- type ParserState = InitialState | NewLineRequiredState | ImportState | ConstState | ExportState | ParseValueState | ResultState | ErrorState
34
-
35
- type ModuleState = {
36
- readonly refs: map.Map<DjsModuleRef>
37
- readonly modules: list.List<string>
38
- readonly consts: list.List<DjsConst>
39
- }
40
-
41
- type InitialState = {
42
- readonly state: ''
43
- readonly module: ModuleState
44
- }
45
-
46
- type NewLineRequiredState = {
47
- readonly state: 'nl'
48
- readonly module: ModuleState
49
- }
50
-
51
- type ImportState = {
52
- readonly state: 'import' | 'import+name' | 'import+from'
53
- readonly module: ModuleState
54
- }
55
-
56
- type ConstState = {
57
- readonly state: 'const' | 'const+name'
58
- readonly module: ModuleState
59
- }
60
-
61
- type ExportState = {
62
- readonly state: 'export'
63
- readonly module: ModuleState
64
- }
65
-
66
- type ParseValueState = {
67
- readonly state: 'constValue' | 'exportValue'
68
- readonly module: ModuleState
69
- readonly valueState: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
70
- readonly top: DjsStackElement | null
71
- readonly stack: DjsStack
72
- }
73
-
74
- type ResultState = {
75
- readonly state: 'result'
76
- readonly module: ModuleState
77
- }
78
-
79
- type ErrorState = {
80
- readonly state: 'error'
81
- readonly message: string
82
- }
83
-
84
- const parseInitialOp
85
- : (token: tokenizerT.DjsToken) => (state: InitialState) => ParserState
86
- = token => state => {
87
- switch (token.kind)
88
- {
89
- case 'ws':
90
- case 'nl':
91
- case '//':
92
- case '/*': return state
93
- case 'id': {
94
- switch (token.value) {
95
- case 'import': return { ... state, state: 'import' }
96
- case 'const': return { ... state, state: 'const' }
97
- case 'export': return { ... state, state: 'export' }
98
- }
99
- }
100
- }
101
- return { state: 'error', message: 'unexpected token' }
102
- }
103
-
104
- const parseNewLineRequiredOp
105
- : (token: tokenizerT.DjsToken) => (state: NewLineRequiredState) => ParserState
106
- = token => state => {
107
- switch (token.kind) {
108
- case 'ws':
109
- case '//':
110
- case '/*': return state
111
- case 'nl': return { ... state, state: '' }
112
- default: return { state: 'error', message: 'unexpected token' }
113
- }
114
- }
115
-
116
- const parseExportOp
117
- : (token: tokenizerT.DjsToken) => (state: ExportState) => ParserState
118
- = token => state => {
119
- switch (token.kind) {
120
- case 'ws':
121
- case 'nl':
122
- case '//':
123
- case '/*': return state
124
- case 'id': {
125
- if (token.value === 'default') return { ... state, state: 'exportValue', valueState: '', top: null, stack: null }
126
- }
127
- }
128
- return { state: 'error', message: 'unexpected token' }
129
- }
130
-
131
- const parseResultOp
132
- : (token: tokenizerT.DjsToken) => (state: ResultState) => ParserState
133
- = token => state => {
134
- switch (token.kind) {
135
- case 'ws':
136
- case 'nl':
137
- case '//':
138
- case '/*': return state
139
- default: return { state: 'error', message: 'unexpected token' }
140
- }
141
- }
142
-
143
- const parseConstOp
144
- : (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
145
- = token => state => {
146
- switch (token.kind) {
147
- case 'ws':
148
- case 'nl':
149
- case '//':
150
- case '/*': return state
151
- case 'id': {
152
- if (map.at(token.value)(state.module.refs) !== null)
153
- return { state: 'error', message: 'duplicate id' }
154
- let cref
155
- : DjsModuleRef
156
- = ['cref', length(state.module.consts)]
157
- let refs = map.setReplace(token.value)(cref)(state.module.refs)
158
- return { ... state, state: 'const+name', module: { ...state.module, refs: refs } }
159
- }
160
- default: return { state: 'error', message: 'unexpected token' }
161
- }
162
- }
163
-
164
- const parseConstNameOp
165
- : (token: tokenizerT.DjsToken) => (state: ConstState) => ParserState
166
- = token => state => {
167
- switch (token.kind) {
168
- case 'ws':
169
- case 'nl':
170
- case '//':
171
- case '/*': return state
172
- case '=': return { ... state, state: 'constValue', valueState: '', top: null, stack: null }
173
- default: return { state: 'error', message: 'unexpected token' }
174
- }
175
- }
176
-
177
- const parseImportOp
178
- : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
179
- = token => state => {
180
- switch (token.kind) {
181
- case 'ws':
182
- case 'nl':
183
- case '//':
184
- case '/*': return state
185
- case 'id': {
186
- if (map.at(token.value)(state.module.refs) !== null) {
187
- return { state: 'error', message: 'duplicate id' }
188
- }
189
- let aref
190
- : DjsModuleRef
191
- = ['aref', length(state.module.modules)]
192
- let refs = map.setReplace(token.value)(aref)(state.module.refs)
193
- return { ... state, state: 'import+name', module: { ...state.module, refs: refs } }
194
- }
195
- default: return { state: 'error', message: 'unexpected token' }
196
- }
197
- }
198
-
199
- const parseImportNameOp
200
- : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
201
- = token => state => {
202
- switch (token.kind) {
203
- case 'ws':
204
- case 'nl':
205
- case '//':
206
- case '/*': return state
207
- case 'id': {
208
- if (token.value === 'from') return { ... state, state: 'import+from' }
209
- }
210
- }
211
- return { state: 'error', message: 'unexpected token' }
212
- }
213
-
214
- const parseImportFromOp
215
- : (token: tokenizerT.DjsToken) => (state: ImportState) => ParserState
216
- = token => state => {
217
- switch (token.kind) {
218
- case 'ws':
219
- case 'nl':
220
- case '//':
221
- case '/*': return state
222
- case 'string': {
223
- const modules = list.concat(state.module.modules)([token.value])
224
- return { ... state, state: 'nl', module: { ...state.module, modules: modules } }
225
- }
226
- default: return { state: 'error', message: 'unexpected token' }
227
- }
228
- }
229
-
230
- const addKeyToObject
231
- : (obj: DjsStackObject) => (key: string) => DjsStackObject
232
- = obj => key => ([ 'object', obj[1], key])
233
-
234
- const addValueToObject
235
- : (obj: DjsStackObject) => (value: DjsConst) => DjsStackObject
236
- = obj => value => ([ 'object', setReplace(obj[2])(value)(obj[1]), '' ])
237
-
238
- const addToArray
239
- : (array: DjsStackArray) => (value: DjsConst) => DjsStackArray
240
- = array => value => ([ 'array', list.concat(array[1])([value]) ])
241
-
242
- const pushKey
243
- : (state: ParseValueState) => (key: string) => ParserState
244
- = state => key => {
245
- if (state.top?.[0] === 'object') { return { ... state, valueState: '{k', top: addKeyToObject(state.top)(key), stack: state.stack } }
246
- return { state: 'error', message: 'error' }
247
- }
248
-
249
- const pushValue
250
- : (state: ParseValueState) => (value: DjsConst) => ParserState
251
- = state => value => {
252
- if (state.top === null) {
253
- let consts = list.concat(state.module.consts)([value])
254
- switch(state.state)
255
- {
256
- case 'exportValue': return { ... state, state: 'result', module: { ...state.module, consts: consts }}
257
- case 'constValue': return { ... state, state: 'nl', module: { ...state.module, consts: consts }}
258
- }
259
- }
260
- if (state.top?.[0] === 'array') { return { ... state, valueState: '[v', top: addToArray(state.top)(value), stack: state.stack } }
261
- return { ... state, valueState: '{v', top: addValueToObject(state.top)(value), stack: state.stack }
262
- }
263
-
264
- const pushRef
265
- : (state: ParseValueState) => (name: string) => ParserState
266
- = state => name => {
267
- const ref = at(name)(state.module.refs)
268
- if (ref === null)
269
- return { state: 'error', message: 'const not found' }
270
- return pushValue(state)(ref)
271
- }
272
-
273
- const startArray
274
- : (state: ParseValueState) => ParserState
275
- = state => {
276
- const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
277
- return { ... state, valueState: '[', top: ['array', null ], stack: newStack }
278
- }
279
-
280
- const endArray
281
- : (state: ParseValueState) => ParserState
282
- = state => {
283
- const top = state.top;
284
- const newState
285
- : ParseValueState
286
- = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
287
- if (top !== null && top[0] === 'array')
288
- {
289
- const array
290
- : DjsArray
291
- = ['array', toArray(top[1])];
292
- return pushValue(newState)(array)
293
- }
294
- return pushValue(newState)(null)
295
- }
296
-
297
- const startObject
298
- : (state: ParseValueState) => ParserState
299
- = state => {
300
- const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
301
- return { ... state, valueState: '{', top: ['object', null, ''], stack: newStack }
302
- }
303
-
304
- const endObject
305
- : (state: ParseValueState) => ParserState
306
- = state => {
307
- const obj = state?.top !== null && state?.top[0] === 'object' ? fromMap(state.top[1]) : null;
308
- const newState
309
- : ParseValueState
310
- = { ... state, valueState: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
311
- return pushValue(newState)(obj)
312
- }
313
-
314
- const tokenToValue
315
- : (token: tokenizerT.DjsToken) => DjsConst
316
- = token => {
317
- switch (token.kind) {
318
- case 'null': return null
319
- case 'false': return false
320
- case 'true': return true
321
- case 'number': return parseFloat(token.value)
322
- case 'string': return token.value
323
- case 'bigint': return token.value
324
- case 'undefined': return undefined
325
- default: return null
326
- }
327
- }
328
-
329
- const isValueToken
330
- : (token: tokenizerT.DjsToken) => boolean
331
- = token => {
332
- switch (token.kind) {
333
- case 'null':
334
- case 'false':
335
- case 'true':
336
- case 'number':
337
- case 'string':
338
- case 'bigint':
339
- case 'undefined': return true
340
- default: return false
341
- }
342
- }
343
-
344
- const parseValueOp
345
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
346
- = token => state => {
347
- if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
348
- switch (token.kind)
349
- {
350
- case 'id': return pushRef(state)(token.value)
351
- case '[': return startArray(state)
352
- case '{': return startObject(state)
353
- case 'ws':
354
- case 'nl':
355
- case '//':
356
- case '/*': return state
357
- default: return { state: 'error', message: 'unexpected token' }
358
- }
359
- }
360
-
361
- const parseArrayStartOp
362
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
363
- = token => state => {
364
- if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
365
- switch (token.kind)
366
- {
367
- case 'id': return pushRef(state)(token.value)
368
- case '[': return startArray(state)
369
- case ']': return endArray(state)
370
- case '{': return startObject(state)
371
- case 'ws':
372
- case 'nl':
373
- case '//':
374
- case '/*': return state
375
- default: return { state: 'error', message: 'unexpected token' }
376
- }
377
- }
378
-
379
- const parseArrayValueOp
380
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
381
- = token => state => {
382
- switch (token.kind)
383
- {
384
- case ']': return endArray(state)
385
- case ',': return { ... state, valueState: '[,', top: state.top, stack: state.stack }
386
- case 'ws':
387
- case 'nl':
388
- case '//':
389
- case '/*': return state
390
- default: return { state: 'error', message: 'unexpected token' }
391
- }
392
- }
393
-
394
- const parseObjectStartOp
395
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
396
- = token => state => {
397
- switch (token.kind)
398
- {
399
- case 'string': return pushKey(state)(token.value)
400
- case '}': return endObject(state)
401
- case 'ws':
402
- case 'nl':
403
- case '//':
404
- case '/*': return state
405
- default: return { state: 'error', message: 'unexpected token' }
406
- }
407
- }
408
-
409
- const parseObjectKeyOp
410
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
411
- = token => state => {
412
- switch (token.kind)
413
- {
414
- case ':': return { ... state, valueState: '{:', top: state.top, stack: state.stack }
415
- case 'ws':
416
- case 'nl':
417
- case '//':
418
- case '/*': return state
419
- default: return { state: 'error', message: 'unexpected token' }
420
- }
421
- }
422
-
423
- const parseObjectColonOp
424
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
425
- = token => state => {
426
- if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
427
- switch (token.kind)
428
- {
429
- case 'id': return pushRef(state)(token.value)
430
- case '[': return startArray(state)
431
- case '{': return startObject(state)
432
- case 'ws':
433
- case 'nl':
434
- case '//':
435
- case '/*': return state
436
- default: return { state: 'error', message: 'unexpected token' }
437
- }
438
- }
439
-
440
- const parseObjectNextOp
441
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
442
- = token => state => {
443
- switch (token.kind)
444
- {
445
- case '}': return endObject(state)
446
- case ',': return { ... state, valueState: '{,', top: state.top, stack: state.stack }
447
- case 'ws':
448
- case 'nl':
449
- case '//':
450
- case '/*': return state
451
- default: return { state: 'error', message: 'unexpected token' }
452
- }
453
- }
454
-
455
- const parseObjectCommaOp
456
- : (token: tokenizerT.DjsToken) => (state: ParseValueState) => ParserState
457
- = token => state => {
458
- switch (token.kind)
459
- {
460
- case 'string': return pushKey(state)(token.value)
461
- case 'ws':
462
- case 'nl':
463
- case '//':
464
- case '/*': return state
465
- default: return { state: 'error', message: 'unexpected token' }
466
- }
467
- }
468
-
469
- const foldOp
470
- : Operator.Fold<tokenizerT.DjsToken, ParserState>
471
- = token => state => {
472
- switch (state.state) {
473
- case '': return parseInitialOp(token)(state)
474
- case 'nl': return parseNewLineRequiredOp(token)(state)
475
- case 'import': return parseImportOp(token)(state)
476
- case 'import+name': return parseImportNameOp(token)(state)
477
- case 'import+from': return parseImportFromOp(token)(state)
478
- case 'const': return parseConstOp(token)(state)
479
- case 'const+name': return parseConstNameOp(token)(state)
480
- case 'export': return parseExportOp(token)(state)
481
- case 'result': return parseResultOp(token)(state)
482
- case 'error': return { state: 'error', message: state.message }
483
- case 'constValue':
484
- case 'exportValue':
485
- {
486
- switch (state.valueState)
487
- {
488
- case '': return parseValueOp(token)(state)
489
- case '[': return parseArrayStartOp(token)(state)
490
- case '[v': return parseArrayValueOp(token)(state)
491
- case '[,': return parseValueOp(token)(state)
492
- case '{': return parseObjectStartOp(token)(state)
493
- case '{k': return parseObjectKeyOp(token)(state)
494
- case '{:': return parseObjectColonOp(token)(state)
495
- case '{v': return parseObjectNextOp(token)(state)
496
- case '{,': return parseObjectCommaOp(token)(state)
497
- }
498
- }
499
- }
500
- }
501
-
502
- export const parse = (tokenList: list.List<tokenizerT.DjsToken>): result.Result<DjsModule, string> => {
503
- const state = fold(foldOp)({ state: '', module: { refs: null, modules: null, consts: null }})(tokenList)
504
- switch (state.state) {
505
- case 'result': return result.ok<DjsModule>([ toArray(state.module.modules), toArray(state.module.consts) ])
506
- case 'error': return result.error(state.message)
507
- default: return result.error('unexpected end')
508
- }
509
- }