functionalscript 0.1.609 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/com/cpp/module.f.mjs +20 -25
  2. package/com/cpp/testlib.f.mjs +3 -4
  3. package/com/cs/module.f.mjs +18 -23
  4. package/com/cs/testlib.f.mjs +3 -5
  5. package/com/rust/module.f.mjs +25 -30
  6. package/com/rust/testlib.f.mjs +3 -5
  7. package/com/test/build.f.mjs +2 -2
  8. package/com/test/build.mjs +4 -4
  9. package/com/types/module.f.mjs +5 -12
  10. package/commonjs/build/module.f.mjs +23 -28
  11. package/commonjs/build/test.f.mjs +4 -4
  12. package/commonjs/module/function/module.f.mjs +0 -2
  13. package/commonjs/module/module.f.mjs +2 -9
  14. package/commonjs/module.f.mjs +0 -2
  15. package/commonjs/module.mjs +2 -7
  16. package/commonjs/package/dependencies/module.f.mjs +5 -10
  17. package/commonjs/package/dependencies/test.f.mjs +1 -1
  18. package/commonjs/package/module.f.mjs +6 -13
  19. package/commonjs/package/test.f.mjs +1 -1
  20. package/commonjs/path/module.f.mjs +12 -23
  21. package/commonjs/path/test.f.mjs +11 -11
  22. package/commonjs/test.mjs +1 -1
  23. package/dev/module.f.mjs +1 -4
  24. package/dev/module.mjs +1 -1
  25. package/dev/test/module.f.mjs +4 -6
  26. package/djs/module.f.mjs +12 -19
  27. package/djs/parser/module.f.mjs +18 -24
  28. package/djs/parser/test.f.mjs +9 -9
  29. package/djs/test.f.mjs +4 -4
  30. package/djs/tokenizer/module.f.mjs +18 -23
  31. package/djs/tokenizer/test.f.mjs +6 -6
  32. package/fsc/module.f.mjs +17 -24
  33. package/fsc/test.f.mjs +3 -3
  34. package/fsm/module.f.mjs +27 -38
  35. package/fsm/test.f.mjs +8 -8
  36. package/html/module.f.mjs +14 -23
  37. package/html/test.f.mjs +4 -4
  38. package/js/tokenizer/module.f.mjs +55 -62
  39. package/js/tokenizer/test.f.mjs +6 -6
  40. package/json/module.f.mjs +18 -31
  41. package/json/parser/module.f.mjs +9 -14
  42. package/json/parser/test.f.mjs +7 -7
  43. package/json/serializer/module.f.mjs +14 -29
  44. package/json/serializer/test.f.mjs +2 -2
  45. package/json/test.f.mjs +3 -3
  46. package/json/tokenizer/module.f.mjs +14 -19
  47. package/json/tokenizer/test.f.mjs +6 -6
  48. package/jsr.json +59 -59
  49. package/nodejs/version/main.mjs +1 -1
  50. package/nodejs/version/module.f.mjs +2 -7
  51. package/nodejs/version/test.f.mjs +3 -3
  52. package/out/com/cpp/module.f.d.mts +4 -0
  53. package/out/com/cpp/module.f.mjs +123 -0
  54. package/out/com/cpp/test.f.mjs +40 -0
  55. package/out/com/cpp/testlib.f.mjs +7 -0
  56. package/out/com/cs/module.f.d.mts +4 -0
  57. package/out/com/cs/module.f.mjs +95 -0
  58. package/out/com/cs/test.f.mjs +43 -0
  59. package/out/com/cs/testlib.f.mjs +7 -0
  60. package/{com → out/com}/rust/module.f.d.mts +3 -7
  61. package/out/com/rust/module.f.mjs +213 -0
  62. package/out/com/rust/test.f.mjs +123 -0
  63. package/out/com/rust/testlib.f.mjs +7 -0
  64. package/{com → out/com}/test/build.f.d.mts +2 -2
  65. package/out/com/test/build.f.mjs +98 -0
  66. package/out/com/test/build.mjs +40 -0
  67. package/{com → out/com}/types/module.f.d.mts +5 -10
  68. package/out/com/types/module.f.mjs +51 -0
  69. package/out/com/types/testlib.f.mjs +30 -0
  70. package/out/commonjs/build/module.f.d.mts +20 -0
  71. package/out/commonjs/build/module.f.mjs +107 -0
  72. package/out/commonjs/build/test.f.mjs +102 -0
  73. package/{commonjs → out/commonjs}/module/function/module.f.d.mts +0 -2
  74. package/out/commonjs/module/function/module.f.mjs +15 -0
  75. package/{commonjs → out/commonjs}/module/module.f.d.mts +16 -21
  76. package/out/commonjs/module/module.f.mjs +48 -0
  77. package/out/commonjs/module.d.mts +3 -0
  78. package/{commonjs → out/commonjs}/module.f.d.mts +0 -2
  79. package/out/commonjs/module.f.mjs +10 -0
  80. package/out/commonjs/module.mjs +26 -0
  81. package/out/commonjs/package/dependencies/module.f.d.mts +6 -0
  82. package/out/commonjs/package/dependencies/module.f.mjs +21 -0
  83. package/out/commonjs/package/dependencies/test.f.mjs +15 -0
  84. package/out/commonjs/package/module.f.d.mts +21 -0
  85. package/out/commonjs/package/module.f.mjs +40 -0
  86. package/out/commonjs/package/test.f.mjs +27 -0
  87. package/{commonjs → out/commonjs}/path/module.f.d.mts +25 -32
  88. package/out/commonjs/path/module.f.mjs +171 -0
  89. package/out/commonjs/path/test.f.mjs +231 -0
  90. package/out/commonjs/test.mjs +87 -0
  91. package/out/dev/index.mjs +2 -0
  92. package/out/dev/module.f.d.mts +1 -0
  93. package/out/dev/module.f.mjs +2 -0
  94. package/out/dev/module.mjs +167 -0
  95. package/{dev → out/dev}/test/module.f.d.mts +2 -3
  96. package/out/dev/test/module.f.mjs +134 -0
  97. package/out/dev/test.f.mjs +58 -0
  98. package/out/dev/test.mjs +52 -0
  99. package/{djs → out/djs}/module.f.d.mts +13 -18
  100. package/out/djs/module.f.mjs +75 -0
  101. package/{djs → out/djs}/parser/module.f.d.mts +11 -15
  102. package/out/djs/parser/module.f.mjs +432 -0
  103. package/out/djs/parser/test.f.mjs +535 -0
  104. package/out/djs/test.f.mjs +84 -0
  105. package/out/djs/tokenizer/module.f.d.mts +13 -0
  106. package/out/djs/tokenizer/module.f.mjs +87 -0
  107. package/out/djs/tokenizer/test.f.mjs +480 -0
  108. package/out/fsc/module.f.d.mts +7 -0
  109. package/out/fsc/module.f.mjs +105 -0
  110. package/out/fsc/test.f.mjs +19 -0
  111. package/out/fsm/module.f.d.mts +14 -0
  112. package/out/fsm/module.f.mjs +80 -0
  113. package/out/fsm/test.f.mjs +138 -0
  114. package/out/html/module.f.d.mts +15 -0
  115. package/out/html/module.f.mjs +94 -0
  116. package/out/html/test.f.mjs +45 -0
  117. package/out/issues/test.f.mjs +66 -0
  118. package/{js → out/js}/tokenizer/module.f.d.mts +10 -15
  119. package/out/js/tokenizer/module.f.mjs +686 -0
  120. package/out/js/tokenizer/test.f.mjs +844 -0
  121. package/out/json/module.f.d.mts +33 -0
  122. package/out/json/module.f.mjs +89 -0
  123. package/{json → out/json}/parser/module.f.d.mts +9 -13
  124. package/out/json/parser/module.f.mjs +224 -0
  125. package/out/json/parser/test.f.mjs +321 -0
  126. package/out/json/serializer/module.f.d.mts +36 -0
  127. package/out/json/serializer/module.f.mjs +67 -0
  128. package/out/json/serializer/test.f.mjs +87 -0
  129. package/out/json/test.f.mjs +61 -0
  130. package/out/json/tokenizer/module.f.d.mts +13 -0
  131. package/out/json/tokenizer/module.f.mjs +78 -0
  132. package/out/json/tokenizer/test.f.mjs +420 -0
  133. package/out/nanvm-lib/tests/test.f.mjs +87 -0
  134. package/out/nodejs/version/main.mjs +3 -0
  135. package/{nodejs → out/nodejs}/version/module.f.d.mts +4 -9
  136. package/out/nodejs/version/module.f.mjs +34 -0
  137. package/out/nodejs/version/test.f.mjs +97 -0
  138. package/{prime_field → out/prime_field}/module.f.d.mts +20 -23
  139. package/out/prime_field/module.f.mjs +87 -0
  140. package/out/prime_field/test.f.mjs +145 -0
  141. package/{secp → out/secp}/module.f.d.mts +27 -28
  142. package/out/secp/module.f.mjs +113 -0
  143. package/out/secp/test.f.mjs +63 -0
  144. package/out/sha2/module.f.d.mts +15 -0
  145. package/out/sha2/module.f.mjs +172 -0
  146. package/out/sha2/test.f.mjs +86 -0
  147. package/out/text/ascii/module.f.d.mts +70 -0
  148. package/out/text/ascii/module.f.mjs +154 -0
  149. package/out/text/ascii/test.f.mjs +14 -0
  150. package/out/text/module.f.d.mts +13 -0
  151. package/out/text/module.f.mjs +19 -0
  152. package/out/text/sgr/module.f.d.mts +12 -0
  153. package/out/text/sgr/module.f.mjs +17 -0
  154. package/out/text/test.f.mjs +19 -0
  155. package/out/text/utf16/module.f.d.mts +12 -0
  156. package/out/text/utf16/module.f.mjs +86 -0
  157. package/out/text/utf16/test.f.mjs +145 -0
  158. package/out/text/utf8/module.f.d.mts +10 -0
  159. package/out/text/utf8/module.f.mjs +126 -0
  160. package/out/text/utf8/test.f.mjs +175 -0
  161. package/{types → out/types}/array/module.f.d.mts +14 -24
  162. package/out/types/array/module.f.mjs +95 -0
  163. package/out/types/array/test.f.mjs +116 -0
  164. package/out/types/bigfloat/module.f.d.mts +6 -0
  165. package/out/types/bigfloat/module.f.mjs +77 -0
  166. package/out/types/bigfloat/test.f.mjs +349 -0
  167. package/out/types/bigint/module.f.d.mts +29 -0
  168. package/{types/bigint/module.f.d.mts → out/types/bigint/module.f.mjs} +64 -27
  169. package/out/types/bigint/test.f.mjs +192 -0
  170. package/{types → out/types}/btree/find/module.f.d.mts +20 -26
  171. package/out/types/btree/find/module.f.mjs +137 -0
  172. package/out/types/btree/find/test.f.mjs +156 -0
  173. package/out/types/btree/module.f.d.mts +5 -0
  174. package/out/types/btree/module.f.mjs +34 -0
  175. package/{types → out/types}/btree/remove/module.f.d.mts +7 -12
  176. package/out/types/btree/remove/module.f.mjs +209 -0
  177. package/out/types/btree/remove/test.f.mjs +638 -0
  178. package/{types → out/types}/btree/set/module.f.d.mts +3 -7
  179. package/out/types/btree/set/module.f.mjs +114 -0
  180. package/out/types/btree/set/test.f.mjs +390 -0
  181. package/out/types/btree/test.f.mjs +83 -0
  182. package/{types → out/types}/btree/types/module.f.d.mts +0 -2
  183. package/out/types/btree/types/module.f.mjs +50 -0
  184. package/out/types/byte_set/module.f.d.mts +25 -0
  185. package/out/types/byte_set/module.f.mjs +42 -0
  186. package/out/types/byte_set/test.f.mjs +123 -0
  187. package/{types → out/types}/function/compare/module.f.d.mts +9 -15
  188. package/out/types/function/compare/module.f.mjs +22 -0
  189. package/out/types/function/compare/test.f.mjs +8 -0
  190. package/{types → out/types}/function/module.f.d.mts +20 -27
  191. package/out/types/function/module.f.mjs +44 -0
  192. package/{types → out/types}/function/operator/module.f.d.mts +28 -43
  193. package/out/types/function/operator/module.f.mjs +60 -0
  194. package/out/types/function/test.f.mjs +15 -0
  195. package/out/types/list/module.f.d.mts +82 -0
  196. package/out/types/list/module.f.mjs +269 -0
  197. package/out/types/list/test.f.mjs +401 -0
  198. package/out/types/map/module.f.d.mts +21 -0
  199. package/out/types/map/module.f.mjs +54 -0
  200. package/out/types/map/test.f.mjs +115 -0
  201. package/out/types/nibble_set/module.f.d.mts +16 -0
  202. package/out/types/nibble_set/module.f.mjs +19 -0
  203. package/out/types/nibble_set/test.f.mjs +90 -0
  204. package/out/types/nullable/module.f.d.mts +9 -0
  205. package/out/types/nullable/module.f.mjs +9 -0
  206. package/out/types/nullable/test.f.mjs +12 -0
  207. package/out/types/number/module.f.d.mts +7 -0
  208. package/out/types/number/module.f.mjs +12 -0
  209. package/out/types/number/test.f.mjs +126 -0
  210. package/out/types/object/module.f.d.mts +22 -0
  211. package/out/types/object/module.f.mjs +27 -0
  212. package/out/types/object/test.f.mjs +17 -0
  213. package/out/types/range/module.f.d.mts +6 -0
  214. package/out/types/range/module.f.mjs +6 -0
  215. package/out/types/range/test.f.mjs +18 -0
  216. package/{types → out/types}/range_map/module.f.d.mts +9 -15
  217. package/out/types/range_map/module.f.mjs +84 -0
  218. package/out/types/range_map/test.f.mjs +201 -0
  219. package/out/types/result/module.d.mts +7 -0
  220. package/{types → out/types}/result/module.f.d.mts +6 -12
  221. package/out/types/result/module.f.mjs +25 -0
  222. package/out/types/result/module.mjs +16 -0
  223. package/{types → out/types}/sorted_list/module.f.d.mts +22 -28
  224. package/out/types/sorted_list/module.f.mjs +102 -0
  225. package/out/types/sorted_list/test.f.mjs +66 -0
  226. package/{types → out/types}/sorted_set/module.f.d.mts +6 -12
  227. package/out/types/sorted_set/module.f.mjs +29 -0
  228. package/out/types/sorted_set/test.f.mjs +80 -0
  229. package/out/types/string/module.f.d.mts +9 -0
  230. package/out/types/string/module.f.mjs +17 -0
  231. package/out/types/string/test.f.mjs +58 -0
  232. package/out/types/string_set/module.f.d.mts +13 -0
  233. package/out/types/string_set/module.f.mjs +29 -0
  234. package/out/types/string_set/test.f.mjs +65 -0
  235. package/package.json +5 -4
  236. package/prime_field/module.f.mjs +9 -12
  237. package/prime_field/test.f.mjs +1 -1
  238. package/secp/module.f.mjs +38 -39
  239. package/secp/test.f.mjs +4 -4
  240. package/sha2/module.f.mjs +7 -20
  241. package/sha2/test.f.mjs +4 -4
  242. package/text/ascii/module.f.mjs +5 -10
  243. package/text/ascii/test.f.mjs +3 -3
  244. package/text/module.f.mjs +7 -14
  245. package/text/sgr/module.f.mjs +2 -4
  246. package/text/test.f.mjs +3 -3
  247. package/text/utf16/module.f.mjs +17 -28
  248. package/text/utf16/test.f.mjs +5 -5
  249. package/text/utf8/module.f.mjs +9 -16
  250. package/text/utf8/test.f.mjs +4 -4
  251. package/tsconfig.json +2 -2
  252. package/types/array/module.f.mjs +8 -25
  253. package/types/array/test.f.mjs +3 -3
  254. package/types/bigfloat/module.f.mjs +3 -10
  255. package/types/bigfloat/test.f.mjs +1 -1
  256. package/types/bigint/module.f.mjs +11 -30
  257. package/types/bigint/test.f.mjs +1 -1
  258. package/types/btree/find/module.f.mjs +8 -17
  259. package/types/btree/find/test.f.mjs +7 -7
  260. package/types/btree/module.f.mjs +6 -11
  261. package/types/btree/remove/module.f.mjs +10 -17
  262. package/types/btree/remove/test.f.mjs +5 -5
  263. package/types/btree/set/module.f.mjs +4 -9
  264. package/types/btree/set/test.f.mjs +4 -4
  265. package/types/btree/test.f.mjs +9 -9
  266. package/types/btree/types/module.f.mjs +0 -2
  267. package/types/byte_set/module.f.mjs +14 -39
  268. package/types/byte_set/test.f.mjs +5 -5
  269. package/types/function/compare/module.f.mjs +3 -12
  270. package/types/function/compare/test.f.mjs +1 -1
  271. package/types/function/module.f.mjs +4 -15
  272. package/types/function/operator/module.f.mjs +14 -41
  273. package/types/function/test.f.mjs +1 -1
  274. package/types/list/module.f.mjs +45 -114
  275. package/types/list/test.f.mjs +10 -10
  276. package/types/map/module.f.mjs +15 -30
  277. package/types/map/test.f.mjs +2 -2
  278. package/types/nibble_set/module.f.mjs +7 -24
  279. package/types/nibble_set/test.f.mjs +2 -2
  280. package/types/nullable/module.f.mjs +2 -9
  281. package/types/nullable/test.f.mjs +1 -1
  282. package/types/number/module.f.mjs +8 -19
  283. package/types/number/test.f.mjs +1 -1
  284. package/types/object/module.f.mjs +9 -20
  285. package/types/object/test.f.mjs +1 -1
  286. package/types/range/module.f.mjs +2 -9
  287. package/types/range/test.f.mjs +1 -1
  288. package/types/range_map/module.f.mjs +9 -18
  289. package/types/range_map/test.f.mjs +32 -32
  290. package/types/result/module.f.mjs +3 -12
  291. package/types/result/module.mjs +2 -2
  292. package/types/sorted_list/module.f.mjs +10 -19
  293. package/types/sorted_list/test.f.mjs +7 -7
  294. package/types/sorted_set/module.f.mjs +7 -16
  295. package/types/sorted_set/test.f.mjs +7 -7
  296. package/types/string/module.f.mjs +10 -21
  297. package/types/string/test.f.mjs +2 -2
  298. package/types/string_set/module.f.mjs +12 -27
  299. package/types/string_set/test.f.mjs +1 -1
  300. package/com/cpp/module.f.d.mts +0 -8
  301. package/com/cs/module.f.d.mts +0 -8
  302. package/commonjs/build/module.f.d.mts +0 -24
  303. package/commonjs/module.d.mts +0 -7
  304. package/commonjs/package/dependencies/module.f.d.mts +0 -10
  305. package/commonjs/package/module.f.d.mts +0 -27
  306. package/dev/module.f.d.mts +0 -4
  307. package/djs/tokenizer/module.f.d.mts +0 -17
  308. package/fsc/module.f.d.mts +0 -12
  309. package/fsm/module.f.d.mts +0 -21
  310. package/html/module.f.d.mts +0 -20
  311. package/json/module.f.d.mts +0 -41
  312. package/json/serializer/module.f.d.mts +0 -45
  313. package/json/tokenizer/module.f.d.mts +0 -17
  314. package/sha2/module.f.d.mts +0 -23
  315. package/text/ascii/module.f.d.mts +0 -73
  316. package/text/module.f.d.mts +0 -18
  317. package/text/sgr/module.f.d.mts +0 -14
  318. package/text/utf16/module.f.d.mts +0 -19
  319. package/text/utf8/module.f.d.mts +0 -15
  320. package/types/bigfloat/module.f.d.mts +0 -11
  321. package/types/btree/module.f.d.mts +0 -9
  322. package/types/byte_set/module.f.d.mts +0 -38
  323. package/types/list/module.f.d.mts +0 -117
  324. package/types/map/module.f.d.mts +0 -30
  325. package/types/nibble_set/module.f.d.mts +0 -26
  326. package/types/nullable/module.f.d.mts +0 -14
  327. package/types/number/module.f.d.mts +0 -13
  328. package/types/object/module.f.d.mts +0 -29
  329. package/types/range/module.f.d.mts +0 -11
  330. package/types/result/module.d.mts +0 -7
  331. package/types/string/module.f.d.mts +0 -15
  332. package/types/string_set/module.f.d.mts +0 -21
  333. /package/{com → out/com}/cpp/test.f.d.mts +0 -0
  334. /package/{com → out/com}/cpp/testlib.f.d.mts +0 -0
  335. /package/{com → out/com}/cs/test.f.d.mts +0 -0
  336. /package/{com → out/com}/cs/testlib.f.d.mts +0 -0
  337. /package/{com → out/com}/rust/test.f.d.mts +0 -0
  338. /package/{com → out/com}/rust/testlib.f.d.mts +0 -0
  339. /package/{com → out/com}/test/build.d.mts +0 -0
  340. /package/{com → out/com}/types/testlib.f.d.mts +0 -0
  341. /package/{commonjs → out/commonjs}/build/test.f.d.mts +0 -0
  342. /package/{commonjs → out/commonjs}/package/dependencies/test.f.d.mts +0 -0
  343. /package/{commonjs → out/commonjs}/package/test.f.d.mts +0 -0
  344. /package/{commonjs → out/commonjs}/path/test.f.d.mts +0 -0
  345. /package/{commonjs → out/commonjs}/test.d.mts +0 -0
  346. /package/{dev → out/dev}/index.d.mts +0 -0
  347. /package/{dev → out/dev}/module.d.mts +0 -0
  348. /package/{dev → out/dev}/test.d.mts +0 -0
  349. /package/{dev → out/dev}/test.f.d.mts +0 -0
  350. /package/{djs → out/djs}/parser/test.f.d.mts +0 -0
  351. /package/{djs → out/djs}/test.f.d.mts +0 -0
  352. /package/{djs → out/djs}/tokenizer/test.f.d.mts +0 -0
  353. /package/{fsc → out/fsc}/test.f.d.mts +0 -0
  354. /package/{fsm → out/fsm}/test.f.d.mts +0 -0
  355. /package/{html → out/html}/test.f.d.mts +0 -0
  356. /package/{issues → out/issues}/test.f.d.mts +0 -0
  357. /package/{js → out/js}/tokenizer/test.f.d.mts +0 -0
  358. /package/{json → out/json}/parser/test.f.d.mts +0 -0
  359. /package/{json → out/json}/serializer/test.f.d.mts +0 -0
  360. /package/{json → out/json}/test.f.d.mts +0 -0
  361. /package/{json → out/json}/tokenizer/test.f.d.mts +0 -0
  362. /package/{nanvm-lib → out/nanvm-lib}/tests/test.f.d.mts +0 -0
  363. /package/{nodejs → out/nodejs}/version/main.d.mts +0 -0
  364. /package/{nodejs → out/nodejs}/version/test.f.d.mts +0 -0
  365. /package/{prime_field → out/prime_field}/test.f.d.mts +0 -0
  366. /package/{secp → out/secp}/test.f.d.mts +0 -0
  367. /package/{sha2 → out/sha2}/test.f.d.mts +0 -0
  368. /package/{text → out/text}/ascii/test.f.d.mts +0 -0
  369. /package/{text → out/text}/test.f.d.mts +0 -0
  370. /package/{text → out/text}/utf16/test.f.d.mts +0 -0
  371. /package/{text → out/text}/utf8/test.f.d.mts +0 -0
  372. /package/{types → out/types}/array/test.f.d.mts +0 -0
  373. /package/{types → out/types}/bigfloat/test.f.d.mts +0 -0
  374. /package/{types → out/types}/bigint/test.f.d.mts +0 -0
  375. /package/{types → out/types}/btree/find/test.f.d.mts +0 -0
  376. /package/{types → out/types}/btree/remove/test.f.d.mts +0 -0
  377. /package/{types → out/types}/btree/set/test.f.d.mts +0 -0
  378. /package/{types → out/types}/btree/test.f.d.mts +0 -0
  379. /package/{types → out/types}/byte_set/test.f.d.mts +0 -0
  380. /package/{types → out/types}/function/compare/test.f.d.mts +0 -0
  381. /package/{types → out/types}/function/test.f.d.mts +0 -0
  382. /package/{types → out/types}/list/test.f.d.mts +0 -0
  383. /package/{types → out/types}/map/test.f.d.mts +0 -0
  384. /package/{types → out/types}/nibble_set/test.f.d.mts +0 -0
  385. /package/{types → out/types}/nullable/test.f.d.mts +0 -0
  386. /package/{types → out/types}/number/test.f.d.mts +0 -0
  387. /package/{types → out/types}/object/test.f.d.mts +0 -0
  388. /package/{types → out/types}/range/test.f.d.mts +0 -0
  389. /package/{types → out/types}/range_map/test.f.d.mts +0 -0
  390. /package/{types → out/types}/sorted_list/test.f.d.mts +0 -0
  391. /package/{types → out/types}/sorted_set/test.f.d.mts +0 -0
  392. /package/{types → out/types}/string/test.f.d.mts +0 -0
  393. /package/{types → out/types}/string_set/test.f.d.mts +0 -0
@@ -0,0 +1,87 @@
1
+ // @ts-self-types="./module.f.d.mts"
2
+ import * as Operator from '../../types/function/operator/module.f.mjs';
3
+ import * as list from '../../types/list/module.f.mjs';
4
+ const { empty, flat, stateScan } = list;
5
+ import * as bf from '../../types/bigfloat/module.f.mjs';
6
+ const { multiply } = bf;
7
+ import * as jsTokenizer from '../../js/tokenizer/module.f.mjs';
8
+ /**
9
+ * @typedef {|
10
+ * {readonly kind: 'true' | 'false' | 'null'} |
11
+ * {readonly kind: '{' | '}' | ':' | ',' | '[' | ']' | '.' | '=' } |
12
+ * jsTokenizer.StringToken |
13
+ * jsTokenizer.NumberToken |
14
+ * jsTokenizer.ErrorToken |
15
+ * jsTokenizer.IdToken |
16
+ * jsTokenizer.BigIntToken |
17
+ * jsTokenizer.WhitespaceToken |
18
+ * jsTokenizer.NewLineToken
19
+ * } DjsToken
20
+ */
21
+ /**
22
+ * @typedef {|
23
+ * {readonly kind: 'def' | '-' }
24
+ * } ScanState
25
+ */
26
+ /**
27
+ * @typedef {|
28
+ * jsTokenizer.JsToken | null
29
+ * } ScanInput
30
+ */
31
+ /** @type {(input: jsTokenizer.JsToken) => list.List<DjsToken>} */
32
+ const mapToken = input => {
33
+ switch (input.kind) {
34
+ case 'id':
35
+ case 'bigint':
36
+ case '{':
37
+ case '}':
38
+ case ':':
39
+ case ',':
40
+ case '[':
41
+ case ']':
42
+ case '.':
43
+ case '=':
44
+ case 'true':
45
+ case 'false':
46
+ case 'null':
47
+ case 'string':
48
+ case 'number':
49
+ case 'ws':
50
+ case 'nl':
51
+ case 'error': return [input];
52
+ default: return jsTokenizer.isKeywordToken(input) ? [{ kind: 'id', value: input.kind }] : [{ kind: 'error', message: 'invalid token' }];
53
+ }
54
+ };
55
+ /** @type {(input: ScanInput) => readonly [list.List<DjsToken>, ScanState]} */
56
+ const parseDefaultState = input => {
57
+ if (input === null)
58
+ return [empty, { kind: 'def' }];
59
+ switch (input.kind) {
60
+ case '-': return [empty, { kind: '-' }];
61
+ default: return [mapToken(input), { kind: 'def' }];
62
+ }
63
+ };
64
+ /** @type {(input: ScanInput) => readonly [list.List<DjsToken>, ScanState]} */
65
+ const parseMinusState = input => {
66
+ if (input === null)
67
+ return [[{ kind: 'error', message: 'invalid token' }], { kind: 'def' }];
68
+ switch (input.kind) {
69
+ case '-': return [[{ kind: 'error', message: 'invalid token' }], { kind: '-' }];
70
+ case 'bigint': return [[{ kind: 'bigint', value: -1n * input.value }], { kind: 'def' }];
71
+ case 'number': return [[{ kind: 'number', bf: multiply(input.bf)(-1n), value: `-${input.value}` }], { kind: 'def' }];
72
+ default: return [{ first: { kind: 'error', message: 'invalid token' }, tail: mapToken(input) }, { kind: 'def' }];
73
+ }
74
+ };
75
+ /** @type {Operator.StateScan<ScanInput, ScanState, list.List<DjsToken>>} */
76
+ const scanToken = state => input => {
77
+ switch (state.kind) {
78
+ case '-': return parseMinusState(input);
79
+ default: return parseDefaultState(input);
80
+ }
81
+ };
82
+ /** @type {(input: list.List<number>) => list.List<DjsToken>} */
83
+ export const tokenize = input => {
84
+ /** @type {list.List<ScanInput>} */
85
+ const jsTokens = jsTokenizer.tokenize(input);
86
+ return flat(stateScan(scanToken)({ kind: 'def' })(list.concat(jsTokens)([null])));
87
+ };
@@ -0,0 +1,480 @@
1
+ import * as tokenizer from './module.f.mjs';
2
+ import * as list from '../../types/list/module.f.mjs';
3
+ const { toArray } = list;
4
+ import * as djs from '../module.f.mjs';
5
+ import * as o from '../../types/object/module.f.mjs';
6
+ const { sort } = o;
7
+ import * as encoding from '../../text/utf16/module.f.mjs';
8
+ /** @type {(s: string) => readonly tokenizer.DjsToken[]} */
9
+ const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)));
10
+ const stringify = djs.stringify(sort);
11
+ export default {
12
+ djs: [
13
+ () => {
14
+ const result = tokenizeString('');
15
+ if (result.length !== 0) {
16
+ throw result;
17
+ }
18
+ },
19
+ () => {
20
+ const result = stringify(tokenizeString('{'));
21
+ if (result !== '[{"kind":"{"}]') {
22
+ throw result;
23
+ }
24
+ },
25
+ () => {
26
+ const result = stringify(tokenizeString('}'));
27
+ if (result !== '[{"kind":"}"}]') {
28
+ throw result;
29
+ }
30
+ },
31
+ () => {
32
+ const result = stringify(tokenizeString(':'));
33
+ if (result !== '[{"kind":":"}]') {
34
+ throw result;
35
+ }
36
+ },
37
+ () => {
38
+ const result = stringify(tokenizeString(','));
39
+ if (result !== '[{"kind":","}]') {
40
+ throw result;
41
+ }
42
+ },
43
+ () => {
44
+ const result = stringify(tokenizeString('['));
45
+ if (result !== '[{"kind":"["}]') {
46
+ throw result;
47
+ }
48
+ },
49
+ () => {
50
+ const result = stringify(tokenizeString(']'));
51
+ if (result !== '[{"kind":"]"}]') {
52
+ throw result;
53
+ }
54
+ },
55
+ () => {
56
+ const result = stringify(tokenizeString('ᄑ'));
57
+ if (result !== '[{"kind":"error","message":"unexpected character"}]') {
58
+ throw result;
59
+ }
60
+ },
61
+ () => {
62
+ const result = stringify(tokenizeString('{ \t\n\r}'));
63
+ if (result !== '[{"kind":"{"},{"kind":"nl"},{"kind":"}"}]') {
64
+ throw result;
65
+ }
66
+ },
67
+ () => {
68
+ const result = stringify(tokenizeString('""'));
69
+ if (result !== '[{"kind":"string","value":""}]') {
70
+ throw result;
71
+ }
72
+ },
73
+ () => {
74
+ const result = stringify(tokenizeString('"value"'));
75
+ if (result !== '[{"kind":"string","value":"value"}]') {
76
+ throw result;
77
+ }
78
+ },
79
+ () => {
80
+ const result = stringify(tokenizeString('"value'));
81
+ if (result !== '[{"kind":"error","message":"\\" are missing"}]') {
82
+ throw result;
83
+ }
84
+ },
85
+ () => {
86
+ const result = stringify(tokenizeString('"value1" "value2"'));
87
+ if (result !== '[{"kind":"string","value":"value1"},{"kind":"ws"},{"kind":"string","value":"value2"}]') {
88
+ throw result;
89
+ }
90
+ },
91
+ () => {
92
+ const result = stringify(tokenizeString('"'));
93
+ if (result !== '[{"kind":"error","message":"\\" are missing"}]') {
94
+ throw result;
95
+ }
96
+ },
97
+ () => {
98
+ const result = stringify(tokenizeString('"\\\\"'));
99
+ if (result !== '[{"kind":"string","value":"\\\\"}]') {
100
+ throw result;
101
+ }
102
+ },
103
+ () => {
104
+ const result = stringify(tokenizeString('"\\""'));
105
+ if (result !== '[{"kind":"string","value":"\\""}]') {
106
+ throw result;
107
+ }
108
+ },
109
+ () => {
110
+ const result = stringify(tokenizeString('"\\/"'));
111
+ if (result !== '[{"kind":"string","value":"/"}]') {
112
+ throw result;
113
+ }
114
+ },
115
+ () => {
116
+ const result = stringify(tokenizeString('"\\x"'));
117
+ if (result !== '[{"kind":"error","message":"unescaped character"},{"kind":"string","value":"x"}]') {
118
+ throw result;
119
+ }
120
+ },
121
+ () => {
122
+ const result = stringify(tokenizeString('"\\'));
123
+ if (result !== '[{"kind":"error","message":"\\" are missing"}]') {
124
+ throw result;
125
+ }
126
+ },
127
+ () => {
128
+ const result = stringify(tokenizeString('"\\b\\f\\n\\r\\t"'));
129
+ if (result !== '[{"kind":"string","value":"\\b\\f\\n\\r\\t"}]') {
130
+ throw result;
131
+ }
132
+ },
133
+ () => {
134
+ const result = stringify(tokenizeString('"\\u1234"'));
135
+ if (result !== '[{"kind":"string","value":"ሴ"}]') {
136
+ throw result;
137
+ }
138
+ },
139
+ () => {
140
+ const result = stringify(tokenizeString('"\\uaBcDEeFf"'));
141
+ if (result !== '[{"kind":"string","value":"ꯍEeFf"}]') {
142
+ throw result;
143
+ }
144
+ },
145
+ () => {
146
+ const result = stringify(tokenizeString('"\\uEeFg"'));
147
+ if (result !== '[{"kind":"error","message":"invalid hex value"},{"kind":"string","value":"g"}]') {
148
+ throw result;
149
+ }
150
+ },
151
+ () => {
152
+ const result = stringify(tokenizeString('0'));
153
+ if (result !== '[{"bf":[0n,0],"kind":"number","value":"0"}]') {
154
+ throw result;
155
+ }
156
+ },
157
+ () => {
158
+ const result = stringify(tokenizeString('[0]'));
159
+ if (result !== '[{"kind":"["},{"bf":[0n,0],"kind":"number","value":"0"},{"kind":"]"}]') {
160
+ throw result;
161
+ }
162
+ },
163
+ () => {
164
+ const result = stringify(tokenizeString('00'));
165
+ if (result !== '[{"kind":"error","message":"invalid number"}]') {
166
+ throw result;
167
+ }
168
+ },
169
+ () => {
170
+ const result = stringify(tokenizeString('0abc,'));
171
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"abc"},{"kind":","}]') {
172
+ throw result;
173
+ }
174
+ },
175
+ () => {
176
+ const result = stringify(tokenizeString('123456789012345678901234567890'));
177
+ if (result !== '[{"bf":[123456789012345678901234567890n,0],"kind":"number","value":"123456789012345678901234567890"}]') {
178
+ throw result;
179
+ }
180
+ },
181
+ () => {
182
+ const result = stringify(tokenizeString('{90}'));
183
+ if (result !== '[{"kind":"{"},{"bf":[90n,0],"kind":"number","value":"90"},{"kind":"}"}]') {
184
+ throw result;
185
+ }
186
+ },
187
+ () => {
188
+ const result = stringify(tokenizeString('1 2'));
189
+ if (result !== '[{"bf":[1n,0],"kind":"number","value":"1"},{"kind":"ws"},{"bf":[2n,0],"kind":"number","value":"2"}]') {
190
+ throw result;
191
+ }
192
+ },
193
+ () => {
194
+ const result = stringify(tokenizeString('0. 2'));
195
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"ws"},{"bf":[2n,0],"kind":"number","value":"2"}]') {
196
+ throw result;
197
+ }
198
+ },
199
+ () => {
200
+ const result = stringify(tokenizeString('10-0'));
201
+ if (result !== '[{"bf":[10n,0],"kind":"number","value":"10"},{"bf":[0n,0],"kind":"number","value":"-0"}]') {
202
+ throw result;
203
+ }
204
+ },
205
+ () => {
206
+ const result = stringify(tokenizeString('9a:'));
207
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"a"},{"kind":":"}]') {
208
+ throw result;
209
+ }
210
+ },
211
+ () => {
212
+ const result = stringify(tokenizeString('-10'));
213
+ if (result !== '[{"bf":[-10n,0],"kind":"number","value":"-10"}]') {
214
+ throw result;
215
+ }
216
+ },
217
+ () => {
218
+ const result = stringify(tokenizeString('-'));
219
+ if (result !== '[{"kind":"error","message":"invalid token"}]') {
220
+ throw result;
221
+ }
222
+ },
223
+ () => {
224
+ const result = stringify(tokenizeString('--'));
225
+ if (result !== '[{"kind":"error","message":"invalid token"}]') {
226
+ throw result;
227
+ }
228
+ },
229
+ () => {
230
+ const result = stringify(tokenizeString('---'));
231
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"error","message":"invalid token"}]') {
232
+ throw result;
233
+ }
234
+ },
235
+ () => {
236
+ const result = stringify(tokenizeString('-0'));
237
+ if (result !== '[{"bf":[0n,0],"kind":"number","value":"-0"}]') {
238
+ throw result;
239
+ }
240
+ },
241
+ () => {
242
+ const result = stringify(tokenizeString('-00'));
243
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"error","message":"invalid number"}]') {
244
+ throw result;
245
+ }
246
+ },
247
+ () => {
248
+ const result = stringify(tokenizeString('-.123'));
249
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"."},{"bf":[123n,0],"kind":"number","value":"123"}]') {
250
+ throw result;
251
+ }
252
+ },
253
+ () => {
254
+ const result = stringify(tokenizeString('0.01'));
255
+ if (result !== '[{"bf":[1n,-2],"kind":"number","value":"0.01"}]') {
256
+ throw result;
257
+ }
258
+ },
259
+ () => {
260
+ const result = stringify(tokenizeString('-0.9'));
261
+ if (result !== '[{"bf":[-9n,-1],"kind":"number","value":"-0.9"}]') {
262
+ throw result;
263
+ }
264
+ },
265
+ () => {
266
+ const result = stringify(tokenizeString('-0.'));
267
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"error","message":"invalid number"}]') {
268
+ throw result;
269
+ }
270
+ },
271
+ () => {
272
+ const result = stringify(tokenizeString('-0.]'));
273
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"error","message":"invalid number"},{"kind":"]"}]') {
274
+ throw result;
275
+ }
276
+ },
277
+ () => {
278
+ const result = stringify(tokenizeString('12.34'));
279
+ if (result !== '[{"bf":[1234n,-2],"kind":"number","value":"12.34"}]') {
280
+ throw result;
281
+ }
282
+ },
283
+ () => {
284
+ const result = stringify(tokenizeString('-12.00'));
285
+ if (result !== '[{"bf":[-1200n,-2],"kind":"number","value":"-12.00"}]') {
286
+ throw result;
287
+ }
288
+ },
289
+ () => {
290
+ const result = stringify(tokenizeString('-12.'));
291
+ if (result !== '[{"kind":"error","message":"invalid token"},{"kind":"error","message":"invalid number"}]') {
292
+ throw result;
293
+ }
294
+ },
295
+ () => {
296
+ const result = stringify(tokenizeString('12.]'));
297
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"]"}]') {
298
+ throw result;
299
+ }
300
+ },
301
+ () => {
302
+ const result = stringify(tokenizeString('0e1'));
303
+ if (result !== '[{"bf":[0n,1],"kind":"number","value":"0e1"}]') {
304
+ throw result;
305
+ }
306
+ },
307
+ () => {
308
+ const result = stringify(tokenizeString('0e+2'));
309
+ if (result !== '[{"bf":[0n,2],"kind":"number","value":"0e+2"}]') {
310
+ throw result;
311
+ }
312
+ },
313
+ () => {
314
+ const result = stringify(tokenizeString('0e-0'));
315
+ if (result !== '[{"bf":[0n,0],"kind":"number","value":"0e-0"}]') {
316
+ throw result;
317
+ }
318
+ },
319
+ () => {
320
+ const result = stringify(tokenizeString('12e0000'));
321
+ if (result !== '[{"bf":[12n,0],"kind":"number","value":"12e0000"}]') {
322
+ throw result;
323
+ }
324
+ },
325
+ () => {
326
+ const result = stringify(tokenizeString('-12e-0001'));
327
+ if (result !== '[{"bf":[-12n,-1],"kind":"number","value":"-12e-0001"}]') {
328
+ throw result;
329
+ }
330
+ },
331
+ () => {
332
+ const result = stringify(tokenizeString('-12.34e1234'));
333
+ if (result !== '[{"bf":[-1234n,1232],"kind":"number","value":"-12.34e1234"}]') {
334
+ throw result;
335
+ }
336
+ },
337
+ () => {
338
+ const result = stringify(tokenizeString('0e'));
339
+ if (result !== '[{"kind":"error","message":"invalid number"}]') {
340
+ throw result;
341
+ }
342
+ },
343
+ () => {
344
+ const result = stringify(tokenizeString('0e-'));
345
+ if (result !== '[{"kind":"error","message":"invalid number"}]') {
346
+ throw result;
347
+ }
348
+ },
349
+ () => {
350
+ const result = stringify(tokenizeString('ABCdef1234567890$_'));
351
+ if (result !== '[{"kind":"id","value":"ABCdef1234567890$_"}]') {
352
+ throw result;
353
+ }
354
+ },
355
+ () => {
356
+ const result = stringify(tokenizeString('{ABCdef1234567890$_}'));
357
+ if (result !== '[{"kind":"{"},{"kind":"id","value":"ABCdef1234567890$_"},{"kind":"}"}]') {
358
+ throw result;
359
+ }
360
+ },
361
+ () => {
362
+ const result = stringify(tokenizeString('123 _123'));
363
+ if (result !== '[{"bf":[123n,0],"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"_123"}]') {
364
+ throw result;
365
+ }
366
+ },
367
+ () => {
368
+ const result = stringify(tokenizeString('123 $123'));
369
+ if (result !== '[{"bf":[123n,0],"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"$123"}]') {
370
+ throw result;
371
+ }
372
+ },
373
+ () => {
374
+ const result = stringify(tokenizeString('123_123'));
375
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"_123"}]') {
376
+ throw result;
377
+ }
378
+ },
379
+ () => {
380
+ const result = stringify(tokenizeString('123$123'));
381
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"$123"}]') {
382
+ throw result;
383
+ }
384
+ },
385
+ () => {
386
+ const result = stringify(tokenizeString('1234567890n'));
387
+ if (result !== '[{"kind":"bigint","value":1234567890n}]') {
388
+ throw result;
389
+ }
390
+ },
391
+ () => {
392
+ const result = stringify(tokenizeString('0n'));
393
+ if (result !== '[{"kind":"bigint","value":0n}]') {
394
+ throw result;
395
+ }
396
+ },
397
+ () => {
398
+ const result = stringify(tokenizeString('[-1234567890n]'));
399
+ if (result !== '[{"kind":"["},{"kind":"bigint","value":-1234567890n},{"kind":"]"}]') {
400
+ throw result;
401
+ }
402
+ },
403
+ () => {
404
+ const result = stringify(tokenizeString('123.456n'));
405
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
406
+ throw result;
407
+ }
408
+ },
409
+ () => {
410
+ const result = stringify(tokenizeString('123e456n'));
411
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
412
+ throw result;
413
+ }
414
+ },
415
+ () => {
416
+ const result = stringify(tokenizeString('1234567890na'));
417
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"a"}]') {
418
+ throw result;
419
+ }
420
+ },
421
+ () => {
422
+ const result = stringify(tokenizeString('1234567890nn'));
423
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
424
+ throw result;
425
+ }
426
+ },
427
+ ],
428
+ id: [
429
+ () => {
430
+ const result = stringify(tokenizeString('err'));
431
+ if (result !== '[{"kind":"id","value":"err"}]') {
432
+ throw result;
433
+ }
434
+ },
435
+ () => {
436
+ const result = stringify(tokenizeString('{e}'));
437
+ if (result !== '[{"kind":"{"},{"kind":"id","value":"e"},{"kind":"}"}]') {
438
+ throw result;
439
+ }
440
+ },
441
+ () => {
442
+ const result = stringify(tokenizeString('tru'));
443
+ if (result !== '[{"kind":"id","value":"tru"}]') {
444
+ throw result;
445
+ }
446
+ },
447
+ () => {
448
+ const result = stringify(tokenizeString('break'));
449
+ if (result !== '[{"kind":"id","value":"break"}]') {
450
+ throw result;
451
+ }
452
+ },
453
+ ],
454
+ keywords: [
455
+ () => {
456
+ const result = stringify(tokenizeString('true'));
457
+ if (result !== '[{"kind":"true"}]') {
458
+ throw result;
459
+ }
460
+ },
461
+ () => {
462
+ const result = stringify(tokenizeString('false'));
463
+ if (result !== '[{"kind":"false"}]') {
464
+ throw result;
465
+ }
466
+ },
467
+ () => {
468
+ const result = stringify(tokenizeString('null'));
469
+ if (result !== '[{"kind":"null"}]') {
470
+ throw result;
471
+ }
472
+ },
473
+ () => {
474
+ const result = stringify(tokenizeString('[null]'));
475
+ if (result !== '[{"kind":"["},{"kind":"null"},{"kind":"]"}]') {
476
+ throw result;
477
+ }
478
+ },
479
+ ]
480
+ };
@@ -0,0 +1,7 @@
1
+ export const terminal: -1;
2
+ export const init: ToResult;
3
+ export type Result = readonly [readonly string[], ToResult];
4
+ export type ToResult = (codePoint: number) => Result;
5
+ export type CreateToResult<T> = (state: T) => ToResult;
6
+ export type State<T> = rangeMap.RangeMapArray<CreateToResult<T>>;
7
+ import * as rangeMap from '../types/range_map/module.f.mjs';
@@ -0,0 +1,105 @@
1
+ // @ts-self-types="./module.f.d.mts"
2
+ import * as operator from '../types/function/operator/module.f.mjs';
3
+ import * as rangeMap from '../types/range_map/module.f.mjs';
4
+ const { merge: rangeMapMerge, fromRange, get } = rangeMap;
5
+ import * as list from '../types/list/module.f.mjs';
6
+ const { reduce: listReduce } = list;
7
+ import * as ascii from '../text/ascii/module.f.mjs';
8
+ const { range: asciiRange } = ascii;
9
+ const { fromCharCode } = String;
10
+ import * as f from '../types/function/module.f.mjs';
11
+ const { fn } = f;
12
+ import * as _range from '../types/range/module.f.mjs';
13
+ const { one } = _range;
14
+ const { toArray, map } = list;
15
+ /** @typedef {readonly[readonly string[], ToResult]} Result */
16
+ /** @typedef {(codePoint: number) => Result} ToResult */
17
+ /**
18
+ * @template T
19
+ * @typedef {(state: T) => ToResult} CreateToResult
20
+ */
21
+ /**
22
+ * @template T
23
+ * @typedef {rangeMap.RangeMapArray<CreateToResult<T>>} State
24
+ */
25
+ /** @type {ToResult} */
26
+ const unexpectedSymbol = codePoint => [[`unexpected symbol ${codePoint}`], unexpectedSymbol];
27
+ /** @type {<T>(state: T) => ToResult} */
28
+ const def = () => unexpectedSymbol;
29
+ /** @type {<T>(a: CreateToResult<T>) => (b: CreateToResult<T>) => CreateToResult<T>} */
30
+ const union = a => b => {
31
+ if (a === def || a === b) {
32
+ return b;
33
+ }
34
+ if (b === def) {
35
+ return a;
36
+ }
37
+ throw [a, b];
38
+ };
39
+ /** @type {readonly never[]} */
40
+ const empty = [];
41
+ /** @type {<T>(a: list.List<State<T>>) => State<T>} */
42
+ const reduce = a => {
43
+ /** @typedef {typeof a extends list.List<State<infer T>> ? T : never} T */
44
+ /** @type {rangeMap.RangeMerge<CreateToResult<T>>} */
45
+ const merge = rangeMapMerge({
46
+ union,
47
+ equal: operator.strictEqual,
48
+ });
49
+ return toArray(listReduce(merge)(empty)(a));
50
+ };
51
+ const codePointRange = fromRange(def);
52
+ const range = fn(asciiRange).then(codePointRange).result;
53
+ /** @type {(l: readonly string[]) => <T>(f: CreateToResult<T>) => State<T>} */
54
+ const rangeSet = l => f => {
55
+ /** @typedef {typeof f extends CreateToResult<infer T> ? T : never} T */
56
+ /** @type {(a: _range.Range) => (f: CreateToResult<T>) => State<T>} */
57
+ const codePointRange = fromRange(def);
58
+ /** @type {(r: string) => State<T>} */
59
+ const g = r => codePointRange(asciiRange(r))(f);
60
+ return reduce(map(g)(l));
61
+ };
62
+ /** @type {<T>(a: list.List<State<T>>) => CreateToResult<T>} */
63
+ const create = a => {
64
+ /** @typedef {typeof a extends list.List<State<infer T>> ? T : never} T */
65
+ const i = reduce(a);
66
+ /** @type {(v: number) => (i: State<T>) => (v: T) => ToResult} */
67
+ const x = get(def);
68
+ return v => c => x(c)(i)(v)(c);
69
+ };
70
+ export const terminal = -1;
71
+ /** @type {() => ToResult} */
72
+ const toInit = () => () => [[], init];
73
+ export const init = create([
74
+ codePointRange(one(terminal))(toInit),
75
+ rangeSet(['\t', ' ', '\n', '\r'])(toInit),
76
+ range('!')(() => () => [['!'], unexpectedSymbol]),
77
+ range('"')(() => () => [['"'], unexpectedSymbol]),
78
+ rangeSet(['$', '_', 'AZ', 'az'])(() => c => [[fromCharCode(c)], unexpectedSymbol]),
79
+ range('%')(() => () => [['%'], unexpectedSymbol]),
80
+ range('&')(() => () => [['&'], unexpectedSymbol]),
81
+ range("'")(() => () => [["'"], unexpectedSymbol]),
82
+ range('(')(() => () => [['('], unexpectedSymbol]),
83
+ range(')')(() => () => [[')'], unexpectedSymbol]),
84
+ range('*')(() => () => [['*'], unexpectedSymbol]),
85
+ range('+')(() => () => [['+'], unexpectedSymbol]),
86
+ range(',')(() => () => [[','], unexpectedSymbol]),
87
+ range('-')(() => () => [['-'], unexpectedSymbol]),
88
+ range('.')(() => () => [['.'], unexpectedSymbol]),
89
+ range('/')(() => () => [['/'], unexpectedSymbol]),
90
+ range('09')(() => a => [[fromCharCode(a)], unexpectedSymbol]),
91
+ range(':')(() => () => [[':'], unexpectedSymbol]),
92
+ range(';')(() => () => [[';'], unexpectedSymbol]),
93
+ range('<')(() => () => [['<'], unexpectedSymbol]),
94
+ range('=')(() => () => [['='], unexpectedSymbol]),
95
+ range('>')(() => () => [['>'], unexpectedSymbol]),
96
+ range('?')(() => () => [['?'], unexpectedSymbol]),
97
+ range('[')(() => () => [['['], unexpectedSymbol]),
98
+ range(']')(() => () => [[']'], unexpectedSymbol]),
99
+ range('^')(() => () => [['^'], unexpectedSymbol]),
100
+ range('`')(() => () => [['`'], unexpectedSymbol]),
101
+ range('{')(() => () => [['{'], unexpectedSymbol]),
102
+ range('|')(() => () => [['|'], unexpectedSymbol]),
103
+ range('}')(() => () => [['}'], unexpectedSymbol]),
104
+ range('~')(() => () => [['~'], unexpectedSymbol]),
105
+ ])(undefined);