functionalscript 0.2.0 → 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 (248) hide show
  1. package/dev/module.mjs +1 -1
  2. package/jsr.json +59 -59
  3. package/out/com/cpp/module.f.mjs +123 -0
  4. package/out/com/cpp/test.f.mjs +40 -0
  5. package/out/com/cpp/testlib.f.mjs +7 -0
  6. package/out/com/cs/module.f.mjs +95 -0
  7. package/out/com/cs/test.f.mjs +43 -0
  8. package/out/com/cs/testlib.f.mjs +7 -0
  9. package/out/com/rust/module.f.mjs +213 -0
  10. package/out/com/rust/test.f.mjs +123 -0
  11. package/out/com/rust/testlib.f.mjs +7 -0
  12. package/out/com/test/build.f.mjs +98 -0
  13. package/out/com/test/build.mjs +40 -0
  14. package/out/com/types/module.f.mjs +51 -0
  15. package/out/com/types/testlib.f.mjs +30 -0
  16. package/out/commonjs/build/module.f.mjs +107 -0
  17. package/out/commonjs/build/test.f.mjs +102 -0
  18. package/out/commonjs/module/function/module.f.mjs +15 -0
  19. package/out/commonjs/module/module.f.mjs +48 -0
  20. package/out/commonjs/module.f.mjs +10 -0
  21. package/out/commonjs/module.mjs +26 -0
  22. package/out/commonjs/package/dependencies/module.f.mjs +21 -0
  23. package/out/commonjs/package/dependencies/test.f.mjs +15 -0
  24. package/out/commonjs/package/module.f.mjs +40 -0
  25. package/out/commonjs/package/test.f.mjs +27 -0
  26. package/out/commonjs/path/module.f.mjs +171 -0
  27. package/out/commonjs/path/test.f.mjs +231 -0
  28. package/out/commonjs/test.mjs +87 -0
  29. package/out/dev/index.mjs +2 -0
  30. package/out/dev/module.f.mjs +2 -0
  31. package/out/dev/module.mjs +167 -0
  32. package/out/dev/test/module.f.mjs +134 -0
  33. package/out/dev/test.f.mjs +58 -0
  34. package/out/dev/test.mjs +52 -0
  35. package/out/djs/module.f.mjs +75 -0
  36. package/out/djs/parser/module.f.mjs +432 -0
  37. package/out/djs/parser/test.f.mjs +535 -0
  38. package/out/djs/test.f.mjs +84 -0
  39. package/out/djs/tokenizer/module.f.mjs +87 -0
  40. package/out/djs/tokenizer/test.f.mjs +480 -0
  41. package/out/fsc/module.f.mjs +105 -0
  42. package/out/fsc/test.f.mjs +19 -0
  43. package/out/fsm/module.f.mjs +80 -0
  44. package/out/fsm/test.f.mjs +138 -0
  45. package/out/html/module.f.mjs +94 -0
  46. package/out/html/test.f.mjs +45 -0
  47. package/out/issues/test.f.mjs +66 -0
  48. package/out/js/tokenizer/module.f.mjs +686 -0
  49. package/out/js/tokenizer/test.f.mjs +844 -0
  50. package/out/json/module.f.mjs +89 -0
  51. package/out/json/parser/module.f.mjs +224 -0
  52. package/out/json/parser/test.f.mjs +321 -0
  53. package/out/json/serializer/module.f.mjs +67 -0
  54. package/out/json/serializer/test.f.mjs +87 -0
  55. package/out/json/test.f.mjs +61 -0
  56. package/out/json/tokenizer/module.f.mjs +78 -0
  57. package/out/json/tokenizer/test.f.mjs +420 -0
  58. package/out/nanvm-lib/tests/test.f.mjs +87 -0
  59. package/out/nodejs/version/main.mjs +3 -0
  60. package/out/nodejs/version/module.f.mjs +34 -0
  61. package/out/nodejs/version/test.f.mjs +97 -0
  62. package/out/prime_field/module.f.mjs +87 -0
  63. package/out/prime_field/test.f.mjs +145 -0
  64. package/out/secp/module.f.mjs +113 -0
  65. package/out/secp/test.f.mjs +63 -0
  66. package/out/sha2/module.f.mjs +172 -0
  67. package/out/sha2/test.f.mjs +86 -0
  68. package/out/text/ascii/module.f.mjs +154 -0
  69. package/out/text/ascii/test.f.mjs +14 -0
  70. package/out/text/module.f.mjs +19 -0
  71. package/out/text/sgr/module.f.mjs +17 -0
  72. package/out/text/test.f.mjs +19 -0
  73. package/out/text/utf16/module.f.mjs +86 -0
  74. package/out/text/utf16/test.f.mjs +145 -0
  75. package/out/text/utf8/module.f.mjs +126 -0
  76. package/out/text/utf8/test.f.mjs +175 -0
  77. package/out/types/array/module.f.mjs +95 -0
  78. package/out/types/array/test.f.mjs +116 -0
  79. package/out/types/bigfloat/module.f.mjs +77 -0
  80. package/out/types/bigfloat/test.f.mjs +349 -0
  81. package/out/types/bigint/module.f.mjs +114 -0
  82. package/out/types/bigint/test.f.mjs +192 -0
  83. package/out/types/btree/find/module.f.mjs +137 -0
  84. package/out/types/btree/find/test.f.mjs +156 -0
  85. package/out/types/btree/module.f.mjs +34 -0
  86. package/out/types/btree/remove/module.f.mjs +209 -0
  87. package/out/types/btree/remove/test.f.mjs +638 -0
  88. package/out/types/btree/set/module.f.mjs +114 -0
  89. package/out/types/btree/set/test.f.mjs +390 -0
  90. package/out/types/btree/test.f.mjs +83 -0
  91. package/out/types/btree/types/module.f.mjs +50 -0
  92. package/out/types/byte_set/module.f.mjs +42 -0
  93. package/out/types/byte_set/test.f.mjs +123 -0
  94. package/out/types/function/compare/module.f.mjs +22 -0
  95. package/out/types/function/compare/test.f.mjs +8 -0
  96. package/out/types/function/module.f.mjs +44 -0
  97. package/out/types/function/operator/module.f.mjs +60 -0
  98. package/out/types/function/test.f.mjs +15 -0
  99. package/out/types/list/module.f.mjs +269 -0
  100. package/out/types/list/test.f.mjs +401 -0
  101. package/out/types/map/module.f.mjs +54 -0
  102. package/out/types/map/test.f.mjs +115 -0
  103. package/out/types/nibble_set/module.f.mjs +19 -0
  104. package/out/types/nibble_set/test.f.mjs +90 -0
  105. package/out/types/nullable/module.f.mjs +9 -0
  106. package/out/types/nullable/test.f.mjs +12 -0
  107. package/out/types/number/module.f.mjs +12 -0
  108. package/out/types/number/test.f.mjs +126 -0
  109. package/out/types/object/module.f.mjs +27 -0
  110. package/out/types/object/test.f.mjs +17 -0
  111. package/out/types/range/module.f.mjs +6 -0
  112. package/out/types/range/test.f.mjs +18 -0
  113. package/out/types/range_map/module.f.mjs +84 -0
  114. package/out/types/range_map/test.f.mjs +201 -0
  115. package/out/types/result/module.f.mjs +25 -0
  116. package/out/types/result/module.mjs +16 -0
  117. package/out/types/sorted_list/module.f.mjs +102 -0
  118. package/out/types/sorted_list/test.f.mjs +66 -0
  119. package/out/types/sorted_set/module.f.mjs +29 -0
  120. package/out/types/sorted_set/test.f.mjs +80 -0
  121. package/out/types/string/module.f.mjs +17 -0
  122. package/out/types/string/test.f.mjs +58 -0
  123. package/out/types/string_set/module.f.mjs +29 -0
  124. package/out/types/string_set/test.f.mjs +65 -0
  125. package/package.json +5 -4
  126. package/tsconfig.json +2 -2
  127. /package/{com → out/com}/cpp/module.f.d.mts +0 -0
  128. /package/{com → out/com}/cpp/test.f.d.mts +0 -0
  129. /package/{com → out/com}/cpp/testlib.f.d.mts +0 -0
  130. /package/{com → out/com}/cs/module.f.d.mts +0 -0
  131. /package/{com → out/com}/cs/test.f.d.mts +0 -0
  132. /package/{com → out/com}/cs/testlib.f.d.mts +0 -0
  133. /package/{com → out/com}/rust/module.f.d.mts +0 -0
  134. /package/{com → out/com}/rust/test.f.d.mts +0 -0
  135. /package/{com → out/com}/rust/testlib.f.d.mts +0 -0
  136. /package/{com → out/com}/test/build.d.mts +0 -0
  137. /package/{com → out/com}/test/build.f.d.mts +0 -0
  138. /package/{com → out/com}/types/module.f.d.mts +0 -0
  139. /package/{com → out/com}/types/testlib.f.d.mts +0 -0
  140. /package/{commonjs → out/commonjs}/build/module.f.d.mts +0 -0
  141. /package/{commonjs → out/commonjs}/build/test.f.d.mts +0 -0
  142. /package/{commonjs → out/commonjs}/module/function/module.f.d.mts +0 -0
  143. /package/{commonjs → out/commonjs}/module/module.f.d.mts +0 -0
  144. /package/{commonjs → out/commonjs}/module.d.mts +0 -0
  145. /package/{commonjs → out/commonjs}/module.f.d.mts +0 -0
  146. /package/{commonjs → out/commonjs}/package/dependencies/module.f.d.mts +0 -0
  147. /package/{commonjs → out/commonjs}/package/dependencies/test.f.d.mts +0 -0
  148. /package/{commonjs → out/commonjs}/package/module.f.d.mts +0 -0
  149. /package/{commonjs → out/commonjs}/package/test.f.d.mts +0 -0
  150. /package/{commonjs → out/commonjs}/path/module.f.d.mts +0 -0
  151. /package/{commonjs → out/commonjs}/path/test.f.d.mts +0 -0
  152. /package/{commonjs → out/commonjs}/test.d.mts +0 -0
  153. /package/{dev → out/dev}/index.d.mts +0 -0
  154. /package/{dev → out/dev}/module.d.mts +0 -0
  155. /package/{dev → out/dev}/module.f.d.mts +0 -0
  156. /package/{dev → out/dev}/test/module.f.d.mts +0 -0
  157. /package/{dev → out/dev}/test.d.mts +0 -0
  158. /package/{dev → out/dev}/test.f.d.mts +0 -0
  159. /package/{djs → out/djs}/module.f.d.mts +0 -0
  160. /package/{djs → out/djs}/parser/module.f.d.mts +0 -0
  161. /package/{djs → out/djs}/parser/test.f.d.mts +0 -0
  162. /package/{djs → out/djs}/test.f.d.mts +0 -0
  163. /package/{djs → out/djs}/tokenizer/module.f.d.mts +0 -0
  164. /package/{djs → out/djs}/tokenizer/test.f.d.mts +0 -0
  165. /package/{fsc → out/fsc}/module.f.d.mts +0 -0
  166. /package/{fsc → out/fsc}/test.f.d.mts +0 -0
  167. /package/{fsm → out/fsm}/module.f.d.mts +0 -0
  168. /package/{fsm → out/fsm}/test.f.d.mts +0 -0
  169. /package/{html → out/html}/module.f.d.mts +0 -0
  170. /package/{html → out/html}/test.f.d.mts +0 -0
  171. /package/{issues → out/issues}/test.f.d.mts +0 -0
  172. /package/{js → out/js}/tokenizer/module.f.d.mts +0 -0
  173. /package/{js → out/js}/tokenizer/test.f.d.mts +0 -0
  174. /package/{json → out/json}/module.f.d.mts +0 -0
  175. /package/{json → out/json}/parser/module.f.d.mts +0 -0
  176. /package/{json → out/json}/parser/test.f.d.mts +0 -0
  177. /package/{json → out/json}/serializer/module.f.d.mts +0 -0
  178. /package/{json → out/json}/serializer/test.f.d.mts +0 -0
  179. /package/{json → out/json}/test.f.d.mts +0 -0
  180. /package/{json → out/json}/tokenizer/module.f.d.mts +0 -0
  181. /package/{json → out/json}/tokenizer/test.f.d.mts +0 -0
  182. /package/{nanvm-lib → out/nanvm-lib}/tests/test.f.d.mts +0 -0
  183. /package/{nodejs → out/nodejs}/version/main.d.mts +0 -0
  184. /package/{nodejs → out/nodejs}/version/module.f.d.mts +0 -0
  185. /package/{nodejs → out/nodejs}/version/test.f.d.mts +0 -0
  186. /package/{prime_field → out/prime_field}/module.f.d.mts +0 -0
  187. /package/{prime_field → out/prime_field}/test.f.d.mts +0 -0
  188. /package/{secp → out/secp}/module.f.d.mts +0 -0
  189. /package/{secp → out/secp}/test.f.d.mts +0 -0
  190. /package/{sha2 → out/sha2}/module.f.d.mts +0 -0
  191. /package/{sha2 → out/sha2}/test.f.d.mts +0 -0
  192. /package/{text → out/text}/ascii/module.f.d.mts +0 -0
  193. /package/{text → out/text}/ascii/test.f.d.mts +0 -0
  194. /package/{text → out/text}/module.f.d.mts +0 -0
  195. /package/{text → out/text}/sgr/module.f.d.mts +0 -0
  196. /package/{text → out/text}/test.f.d.mts +0 -0
  197. /package/{text → out/text}/utf16/module.f.d.mts +0 -0
  198. /package/{text → out/text}/utf16/test.f.d.mts +0 -0
  199. /package/{text → out/text}/utf8/module.f.d.mts +0 -0
  200. /package/{text → out/text}/utf8/test.f.d.mts +0 -0
  201. /package/{types → out/types}/array/module.f.d.mts +0 -0
  202. /package/{types → out/types}/array/test.f.d.mts +0 -0
  203. /package/{types → out/types}/bigfloat/module.f.d.mts +0 -0
  204. /package/{types → out/types}/bigfloat/test.f.d.mts +0 -0
  205. /package/{types → out/types}/bigint/module.f.d.mts +0 -0
  206. /package/{types → out/types}/bigint/test.f.d.mts +0 -0
  207. /package/{types → out/types}/btree/find/module.f.d.mts +0 -0
  208. /package/{types → out/types}/btree/find/test.f.d.mts +0 -0
  209. /package/{types → out/types}/btree/module.f.d.mts +0 -0
  210. /package/{types → out/types}/btree/remove/module.f.d.mts +0 -0
  211. /package/{types → out/types}/btree/remove/test.f.d.mts +0 -0
  212. /package/{types → out/types}/btree/set/module.f.d.mts +0 -0
  213. /package/{types → out/types}/btree/set/test.f.d.mts +0 -0
  214. /package/{types → out/types}/btree/test.f.d.mts +0 -0
  215. /package/{types → out/types}/btree/types/module.f.d.mts +0 -0
  216. /package/{types → out/types}/byte_set/module.f.d.mts +0 -0
  217. /package/{types → out/types}/byte_set/test.f.d.mts +0 -0
  218. /package/{types → out/types}/function/compare/module.f.d.mts +0 -0
  219. /package/{types → out/types}/function/compare/test.f.d.mts +0 -0
  220. /package/{types → out/types}/function/module.f.d.mts +0 -0
  221. /package/{types → out/types}/function/operator/module.f.d.mts +0 -0
  222. /package/{types → out/types}/function/test.f.d.mts +0 -0
  223. /package/{types → out/types}/list/module.f.d.mts +0 -0
  224. /package/{types → out/types}/list/test.f.d.mts +0 -0
  225. /package/{types → out/types}/map/module.f.d.mts +0 -0
  226. /package/{types → out/types}/map/test.f.d.mts +0 -0
  227. /package/{types → out/types}/nibble_set/module.f.d.mts +0 -0
  228. /package/{types → out/types}/nibble_set/test.f.d.mts +0 -0
  229. /package/{types → out/types}/nullable/module.f.d.mts +0 -0
  230. /package/{types → out/types}/nullable/test.f.d.mts +0 -0
  231. /package/{types → out/types}/number/module.f.d.mts +0 -0
  232. /package/{types → out/types}/number/test.f.d.mts +0 -0
  233. /package/{types → out/types}/object/module.f.d.mts +0 -0
  234. /package/{types → out/types}/object/test.f.d.mts +0 -0
  235. /package/{types → out/types}/range/module.f.d.mts +0 -0
  236. /package/{types → out/types}/range/test.f.d.mts +0 -0
  237. /package/{types → out/types}/range_map/module.f.d.mts +0 -0
  238. /package/{types → out/types}/range_map/test.f.d.mts +0 -0
  239. /package/{types → out/types}/result/module.d.mts +0 -0
  240. /package/{types → out/types}/result/module.f.d.mts +0 -0
  241. /package/{types → out/types}/sorted_list/module.f.d.mts +0 -0
  242. /package/{types → out/types}/sorted_list/test.f.d.mts +0 -0
  243. /package/{types → out/types}/sorted_set/module.f.d.mts +0 -0
  244. /package/{types → out/types}/sorted_set/test.f.d.mts +0 -0
  245. /package/{types → out/types}/string/module.f.d.mts +0 -0
  246. /package/{types → out/types}/string/test.f.d.mts +0 -0
  247. /package/{types → out/types}/string_set/module.f.d.mts +0 -0
  248. /package/{types → out/types}/string_set/test.f.d.mts +0 -0
@@ -0,0 +1,844 @@
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 '../../djs/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.JsToken[]} */
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"},{"kind":"-"},{"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 !== '[{"kind":"-"},{"bf":[10n,0],"kind":"number","value":"10"}]') {
214
+ throw result;
215
+ }
216
+ },
217
+ () => {
218
+ const result = stringify(tokenizeString('-0'));
219
+ if (result !== '[{"kind":"-"},{"bf":[0n,0],"kind":"number","value":"0"}]') {
220
+ throw result;
221
+ }
222
+ },
223
+ () => {
224
+ const result = stringify(tokenizeString('-00'));
225
+ if (result !== '[{"kind":"-"},{"kind":"error","message":"invalid number"}]') {
226
+ throw result;
227
+ }
228
+ },
229
+ () => {
230
+ const result = stringify(tokenizeString('-.123'));
231
+ if (result !== '[{"kind":"-"},{"kind":"."},{"bf":[123n,0],"kind":"number","value":"123"}]') {
232
+ throw result;
233
+ }
234
+ },
235
+ () => {
236
+ const result = stringify(tokenizeString('0.01'));
237
+ if (result !== '[{"bf":[1n,-2],"kind":"number","value":"0.01"}]') {
238
+ throw result;
239
+ }
240
+ },
241
+ () => {
242
+ const result = stringify(tokenizeString('-0.9'));
243
+ if (result !== '[{"kind":"-"},{"bf":[9n,-1],"kind":"number","value":"0.9"}]') {
244
+ throw result;
245
+ }
246
+ },
247
+ () => {
248
+ const result = stringify(tokenizeString('-0.'));
249
+ if (result !== '[{"kind":"-"},{"kind":"error","message":"invalid number"}]') {
250
+ throw result;
251
+ }
252
+ },
253
+ () => {
254
+ const result = stringify(tokenizeString('-0.]'));
255
+ if (result !== '[{"kind":"-"},{"kind":"error","message":"invalid number"},{"kind":"]"}]') {
256
+ throw result;
257
+ }
258
+ },
259
+ () => {
260
+ const result = stringify(tokenizeString('12.34'));
261
+ if (result !== '[{"bf":[1234n,-2],"kind":"number","value":"12.34"}]') {
262
+ throw result;
263
+ }
264
+ },
265
+ () => {
266
+ const result = stringify(tokenizeString('-12.00'));
267
+ if (result !== '[{"kind":"-"},{"bf":[1200n,-2],"kind":"number","value":"12.00"}]') {
268
+ throw result;
269
+ }
270
+ },
271
+ () => {
272
+ const result = stringify(tokenizeString('-12.'));
273
+ if (result !== '[{"kind":"-"},{"kind":"error","message":"invalid number"}]') {
274
+ throw result;
275
+ }
276
+ },
277
+ () => {
278
+ const result = stringify(tokenizeString('12.]'));
279
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"]"}]') {
280
+ throw result;
281
+ }
282
+ },
283
+ () => {
284
+ const result = stringify(tokenizeString('0e1'));
285
+ if (result !== '[{"bf":[0n,1],"kind":"number","value":"0e1"}]') {
286
+ throw result;
287
+ }
288
+ },
289
+ () => {
290
+ const result = stringify(tokenizeString('0e+2'));
291
+ if (result !== '[{"bf":[0n,2],"kind":"number","value":"0e+2"}]') {
292
+ throw result;
293
+ }
294
+ },
295
+ () => {
296
+ const result = stringify(tokenizeString('0e-0'));
297
+ if (result !== '[{"bf":[0n,0],"kind":"number","value":"0e-0"}]') {
298
+ throw result;
299
+ }
300
+ },
301
+ () => {
302
+ const result = stringify(tokenizeString('12e0000'));
303
+ if (result !== '[{"bf":[12n,0],"kind":"number","value":"12e0000"}]') {
304
+ throw result;
305
+ }
306
+ },
307
+ () => {
308
+ const result = stringify(tokenizeString('-12e-0001'));
309
+ if (result !== '[{"kind":"-"},{"bf":[12n,-1],"kind":"number","value":"12e-0001"}]') {
310
+ throw result;
311
+ }
312
+ },
313
+ () => {
314
+ const result = stringify(tokenizeString('-12.34e1234'));
315
+ if (result !== '[{"kind":"-"},{"bf":[1234n,1232],"kind":"number","value":"12.34e1234"}]') {
316
+ throw result;
317
+ }
318
+ },
319
+ () => {
320
+ const result = stringify(tokenizeString('0e'));
321
+ if (result !== '[{"kind":"error","message":"invalid number"}]') {
322
+ throw result;
323
+ }
324
+ },
325
+ () => {
326
+ const result = stringify(tokenizeString('0e-'));
327
+ if (result !== '[{"kind":"error","message":"invalid number"}]') {
328
+ throw result;
329
+ }
330
+ },
331
+ () => {
332
+ const result = stringify(tokenizeString('ABCdef1234567890$_'));
333
+ if (result !== '[{"kind":"id","value":"ABCdef1234567890$_"}]') {
334
+ throw result;
335
+ }
336
+ },
337
+ () => {
338
+ const result = stringify(tokenizeString('{ABCdef1234567890$_}'));
339
+ if (result !== '[{"kind":"{"},{"kind":"id","value":"ABCdef1234567890$_"},{"kind":"}"}]') {
340
+ throw result;
341
+ }
342
+ },
343
+ () => {
344
+ const result = stringify(tokenizeString('123 _123'));
345
+ if (result !== '[{"bf":[123n,0],"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"_123"}]') {
346
+ throw result;
347
+ }
348
+ },
349
+ () => {
350
+ const result = stringify(tokenizeString('123 $123'));
351
+ if (result !== '[{"bf":[123n,0],"kind":"number","value":"123"},{"kind":"ws"},{"kind":"id","value":"$123"}]') {
352
+ throw result;
353
+ }
354
+ },
355
+ () => {
356
+ const result = stringify(tokenizeString('123_123'));
357
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"_123"}]') {
358
+ throw result;
359
+ }
360
+ },
361
+ () => {
362
+ const result = stringify(tokenizeString('123$123'));
363
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"$123"}]') {
364
+ throw result;
365
+ }
366
+ },
367
+ () => {
368
+ const result = stringify(tokenizeString('1234567890n'));
369
+ if (result !== '[{"kind":"bigint","value":1234567890n}]') {
370
+ throw result;
371
+ }
372
+ },
373
+ () => {
374
+ const result = stringify(tokenizeString('0n'));
375
+ if (result !== '[{"kind":"bigint","value":0n}]') {
376
+ throw result;
377
+ }
378
+ },
379
+ () => {
380
+ const result = stringify(tokenizeString('[-1234567890n]'));
381
+ if (result !== '[{"kind":"["},{"kind":"-"},{"kind":"bigint","value":1234567890n},{"kind":"]"}]') {
382
+ throw result;
383
+ }
384
+ },
385
+ () => {
386
+ const result = stringify(tokenizeString('123.456n'));
387
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
388
+ throw result;
389
+ }
390
+ },
391
+ () => {
392
+ const result = stringify(tokenizeString('123e456n'));
393
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
394
+ throw result;
395
+ }
396
+ },
397
+ () => {
398
+ const result = stringify(tokenizeString('1234567890na'));
399
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"a"}]') {
400
+ throw result;
401
+ }
402
+ },
403
+ () => {
404
+ const result = stringify(tokenizeString('1234567890nn'));
405
+ if (result !== '[{"kind":"error","message":"invalid number"},{"kind":"id","value":"n"}]') {
406
+ throw result;
407
+ }
408
+ },
409
+ ],
410
+ operators: [
411
+ () => {
412
+ const result = stringify(tokenizeString('='));
413
+ if (result !== '[{"kind":"="}]') {
414
+ throw result;
415
+ }
416
+ },
417
+ () => {
418
+ const result = stringify(tokenizeString('=a'));
419
+ if (result !== '[{"kind":"="},{"kind":"id","value":"a"}]') {
420
+ throw result;
421
+ }
422
+ },
423
+ () => {
424
+ const result = stringify(tokenizeString('-'));
425
+ if (result !== '[{"kind":"-"}]') {
426
+ throw result;
427
+ }
428
+ },
429
+ () => {
430
+ const result = stringify(tokenizeString('1*2'));
431
+ if (result !== '[{"bf":[1n,0],"kind":"number","value":"1"},{"kind":"*"},{"bf":[2n,0],"kind":"number","value":"2"}]') {
432
+ throw result;
433
+ }
434
+ },
435
+ () => {
436
+ const result = stringify(tokenizeString('( )'));
437
+ if (result !== '[{"kind":"("},{"kind":"ws"},{"kind":")"}]') {
438
+ throw result;
439
+ }
440
+ },
441
+ () => {
442
+ const result = stringify(tokenizeString('== != === !== > >= < <='));
443
+ if (result !== '[{"kind":"=="},{"kind":"ws"},{"kind":"!="},{"kind":"ws"},{"kind":"==="},{"kind":"ws"},{"kind":"!=="},{"kind":"ws"},{"kind":">"},{"kind":"ws"},{"kind":">="},{"kind":"ws"},{"kind":"<"},{"kind":"ws"},{"kind":"<="}]') {
444
+ throw result;
445
+ }
446
+ },
447
+ () => {
448
+ const result = stringify(tokenizeString('+ - * / % ++ -- **'));
449
+ if (result !== '[{"kind":"+"},{"kind":"ws"},{"kind":"-"},{"kind":"ws"},{"kind":"*"},{"kind":"ws"},{"kind":"/"},{"kind":"ws"},{"kind":"%"},{"kind":"ws"},{"kind":"++"},{"kind":"ws"},{"kind":"--"},{"kind":"ws"},{"kind":"**"}]') {
450
+ throw result;
451
+ }
452
+ },
453
+ () => {
454
+ const result = stringify(tokenizeString('= += -= *= /= %= **='));
455
+ if (result !== '[{"kind":"="},{"kind":"ws"},{"kind":"+="},{"kind":"ws"},{"kind":"-="},{"kind":"ws"},{"kind":"*="},{"kind":"ws"},{"kind":"/="},{"kind":"ws"},{"kind":"%="},{"kind":"ws"},{"kind":"**="}]') {
456
+ throw result;
457
+ }
458
+ },
459
+ () => {
460
+ const result = stringify(tokenizeString('& | ^ ~ << >> >>>'));
461
+ if (result !== '[{"kind":"&"},{"kind":"ws"},{"kind":"|"},{"kind":"ws"},{"kind":"^"},{"kind":"ws"},{"kind":"~"},{"kind":"ws"},{"kind":"<<"},{"kind":"ws"},{"kind":">>"},{"kind":"ws"},{"kind":">>>"}]') {
462
+ throw result;
463
+ }
464
+ },
465
+ () => {
466
+ const result = stringify(tokenizeString('&= |= ^= <<= >>= >>>='));
467
+ if (result !== '[{"kind":"&="},{"kind":"ws"},{"kind":"|="},{"kind":"ws"},{"kind":"^="},{"kind":"ws"},{"kind":"<<="},{"kind":"ws"},{"kind":">>="},{"kind":"ws"},{"kind":">>>="}]') {
468
+ throw result;
469
+ }
470
+ },
471
+ () => {
472
+ const result = stringify(tokenizeString('&& || ! ??'));
473
+ if (result !== '[{"kind":"&&"},{"kind":"ws"},{"kind":"||"},{"kind":"ws"},{"kind":"!"},{"kind":"ws"},{"kind":"??"}]') {
474
+ throw result;
475
+ }
476
+ },
477
+ () => {
478
+ const result = stringify(tokenizeString('&&= ||= ??='));
479
+ if (result !== '[{"kind":"&&="},{"kind":"ws"},{"kind":"||="},{"kind":"ws"},{"kind":"??="}]') {
480
+ throw result;
481
+ }
482
+ },
483
+ () => {
484
+ const result = stringify(tokenizeString('? ?. . =>'));
485
+ if (result !== '[{"kind":"?"},{"kind":"ws"},{"kind":"?."},{"kind":"ws"},{"kind":"."},{"kind":"ws"},{"kind":"=>"}]') {
486
+ throw result;
487
+ }
488
+ },
489
+ ],
490
+ ws: [
491
+ () => {
492
+ const result = stringify(tokenizeString(' '));
493
+ if (result !== '[{"kind":"ws"}]') {
494
+ throw result;
495
+ }
496
+ },
497
+ () => {
498
+ const result = stringify(tokenizeString('\t'));
499
+ if (result !== '[{"kind":"ws"}]') {
500
+ throw result;
501
+ }
502
+ },
503
+ () => {
504
+ const result = stringify(tokenizeString(' \t'));
505
+ if (result !== '[{"kind":"ws"}]') {
506
+ throw result;
507
+ }
508
+ },
509
+ () => {
510
+ const result = stringify(tokenizeString('\n'));
511
+ if (result !== '[{"kind":"nl"}]') {
512
+ throw result;
513
+ }
514
+ },
515
+ () => {
516
+ const result = stringify(tokenizeString('\r'));
517
+ if (result !== '[{"kind":"nl"}]') {
518
+ throw result;
519
+ }
520
+ },
521
+ () => {
522
+ const result = stringify(tokenizeString(' \t\n\r '));
523
+ if (result !== '[{"kind":"nl"}]') {
524
+ throw result;
525
+ }
526
+ },
527
+ ],
528
+ id: [
529
+ () => {
530
+ const result = stringify(tokenizeString('err'));
531
+ if (result !== '[{"kind":"id","value":"err"}]') {
532
+ throw result;
533
+ }
534
+ },
535
+ () => {
536
+ const result = stringify(tokenizeString('{e}'));
537
+ if (result !== '[{"kind":"{"},{"kind":"id","value":"e"},{"kind":"}"}]') {
538
+ throw result;
539
+ }
540
+ },
541
+ () => {
542
+ const result = stringify(tokenizeString('tru'));
543
+ if (result !== '[{"kind":"id","value":"tru"}]') {
544
+ throw result;
545
+ }
546
+ },
547
+ ],
548
+ keywords: [
549
+ () => {
550
+ const result = stringify(tokenizeString('true'));
551
+ if (result !== '[{"kind":"true"}]') {
552
+ throw result;
553
+ }
554
+ },
555
+ () => {
556
+ const result = stringify(tokenizeString('false'));
557
+ if (result !== '[{"kind":"false"}]') {
558
+ throw result;
559
+ }
560
+ },
561
+ () => {
562
+ const result = stringify(tokenizeString('null'));
563
+ if (result !== '[{"kind":"null"}]') {
564
+ throw result;
565
+ }
566
+ },
567
+ () => {
568
+ const result = stringify(tokenizeString('[null]'));
569
+ if (result !== '[{"kind":"["},{"kind":"null"},{"kind":"]"}]') {
570
+ throw result;
571
+ }
572
+ },
573
+ () => {
574
+ const result = stringify(tokenizeString('arguments'));
575
+ if (result !== '[{"kind":"arguments"}]') {
576
+ throw result;
577
+ }
578
+ },
579
+ () => {
580
+ const result = stringify(tokenizeString('await'));
581
+ if (result !== '[{"kind":"await"}]') {
582
+ throw result;
583
+ }
584
+ },
585
+ () => {
586
+ const result = stringify(tokenizeString('break'));
587
+ if (result !== '[{"kind":"break"}]') {
588
+ throw result;
589
+ }
590
+ },
591
+ () => {
592
+ const result = stringify(tokenizeString('case'));
593
+ if (result !== '[{"kind":"case"}]') {
594
+ throw result;
595
+ }
596
+ },
597
+ () => {
598
+ const result = stringify(tokenizeString('catch'));
599
+ if (result !== '[{"kind":"catch"}]') {
600
+ throw result;
601
+ }
602
+ },
603
+ () => {
604
+ const result = stringify(tokenizeString('class'));
605
+ if (result !== '[{"kind":"class"}]') {
606
+ throw result;
607
+ }
608
+ },
609
+ () => {
610
+ const result = stringify(tokenizeString('const'));
611
+ if (result !== '[{"kind":"const"}]') {
612
+ throw result;
613
+ }
614
+ },
615
+ () => {
616
+ const result = stringify(tokenizeString('continue'));
617
+ if (result !== '[{"kind":"continue"}]') {
618
+ throw result;
619
+ }
620
+ },
621
+ () => {
622
+ const result = stringify(tokenizeString('debugger'));
623
+ if (result !== '[{"kind":"debugger"}]') {
624
+ throw result;
625
+ }
626
+ },
627
+ () => {
628
+ const result = stringify(tokenizeString('default'));
629
+ if (result !== '[{"kind":"default"}]') {
630
+ throw result;
631
+ }
632
+ },
633
+ () => {
634
+ const result = stringify(tokenizeString('delete'));
635
+ if (result !== '[{"kind":"delete"}]') {
636
+ throw result;
637
+ }
638
+ },
639
+ () => {
640
+ const result = stringify(tokenizeString('do'));
641
+ if (result !== '[{"kind":"do"}]') {
642
+ throw result;
643
+ }
644
+ },
645
+ () => {
646
+ const result = stringify(tokenizeString('else'));
647
+ if (result !== '[{"kind":"else"}]') {
648
+ throw result;
649
+ }
650
+ },
651
+ () => {
652
+ const result = stringify(tokenizeString('enum'));
653
+ if (result !== '[{"kind":"enum"}]') {
654
+ throw result;
655
+ }
656
+ },
657
+ () => {
658
+ const result = stringify(tokenizeString('eval'));
659
+ if (result !== '[{"kind":"eval"}]') {
660
+ throw result;
661
+ }
662
+ },
663
+ () => {
664
+ const result = stringify(tokenizeString('export'));
665
+ if (result !== '[{"kind":"export"}]') {
666
+ throw result;
667
+ }
668
+ },
669
+ () => {
670
+ const result = stringify(tokenizeString('extends'));
671
+ if (result !== '[{"kind":"extends"}]') {
672
+ throw result;
673
+ }
674
+ },
675
+ () => {
676
+ const result = stringify(tokenizeString('finally'));
677
+ if (result !== '[{"kind":"finally"}]') {
678
+ throw result;
679
+ }
680
+ },
681
+ () => {
682
+ const result = stringify(tokenizeString('for'));
683
+ if (result !== '[{"kind":"for"}]') {
684
+ throw result;
685
+ }
686
+ },
687
+ () => {
688
+ const result = stringify(tokenizeString('function'));
689
+ if (result !== '[{"kind":"function"}]') {
690
+ throw result;
691
+ }
692
+ },
693
+ () => {
694
+ const result = stringify(tokenizeString('if'));
695
+ if (result !== '[{"kind":"if"}]') {
696
+ throw result;
697
+ }
698
+ },
699
+ () => {
700
+ const result = stringify(tokenizeString('implements'));
701
+ if (result !== '[{"kind":"implements"}]') {
702
+ throw result;
703
+ }
704
+ },
705
+ () => {
706
+ const result = stringify(tokenizeString('import'));
707
+ if (result !== '[{"kind":"import"}]') {
708
+ throw result;
709
+ }
710
+ },
711
+ () => {
712
+ const result = stringify(tokenizeString('in'));
713
+ if (result !== '[{"kind":"in"}]') {
714
+ throw result;
715
+ }
716
+ },
717
+ () => {
718
+ const result = stringify(tokenizeString('instanceof'));
719
+ if (result !== '[{"kind":"instanceof"}]') {
720
+ throw result;
721
+ }
722
+ },
723
+ () => {
724
+ const result = stringify(tokenizeString('interface'));
725
+ if (result !== '[{"kind":"interface"}]') {
726
+ throw result;
727
+ }
728
+ },
729
+ () => {
730
+ const result = stringify(tokenizeString('let'));
731
+ if (result !== '[{"kind":"let"}]') {
732
+ throw result;
733
+ }
734
+ },
735
+ () => {
736
+ const result = stringify(tokenizeString('new'));
737
+ if (result !== '[{"kind":"new"}]') {
738
+ throw result;
739
+ }
740
+ },
741
+ () => {
742
+ const result = stringify(tokenizeString('package'));
743
+ if (result !== '[{"kind":"package"}]') {
744
+ throw result;
745
+ }
746
+ },
747
+ () => {
748
+ const result = stringify(tokenizeString('private'));
749
+ if (result !== '[{"kind":"private"}]') {
750
+ throw result;
751
+ }
752
+ },
753
+ () => {
754
+ const result = stringify(tokenizeString('protected'));
755
+ if (result !== '[{"kind":"protected"}]') {
756
+ throw result;
757
+ }
758
+ },
759
+ () => {
760
+ const result = stringify(tokenizeString('public'));
761
+ if (result !== '[{"kind":"public"}]') {
762
+ throw result;
763
+ }
764
+ },
765
+ () => {
766
+ const result = stringify(tokenizeString('return'));
767
+ if (result !== '[{"kind":"return"}]') {
768
+ throw result;
769
+ }
770
+ },
771
+ () => {
772
+ const result = stringify(tokenizeString('static'));
773
+ if (result !== '[{"kind":"static"}]') {
774
+ throw result;
775
+ }
776
+ },
777
+ () => {
778
+ const result = stringify(tokenizeString('super'));
779
+ if (result !== '[{"kind":"super"}]') {
780
+ throw result;
781
+ }
782
+ },
783
+ () => {
784
+ const result = stringify(tokenizeString('switch'));
785
+ if (result !== '[{"kind":"switch"}]') {
786
+ throw result;
787
+ }
788
+ },
789
+ () => {
790
+ const result = stringify(tokenizeString('this'));
791
+ if (result !== '[{"kind":"this"}]') {
792
+ throw result;
793
+ }
794
+ },
795
+ () => {
796
+ const result = stringify(tokenizeString('throw'));
797
+ if (result !== '[{"kind":"throw"}]') {
798
+ throw result;
799
+ }
800
+ },
801
+ () => {
802
+ const result = stringify(tokenizeString('try'));
803
+ if (result !== '[{"kind":"try"}]') {
804
+ throw result;
805
+ }
806
+ },
807
+ () => {
808
+ const result = stringify(tokenizeString('typeof'));
809
+ if (result !== '[{"kind":"typeof"}]') {
810
+ throw result;
811
+ }
812
+ },
813
+ () => {
814
+ const result = stringify(tokenizeString('var'));
815
+ if (result !== '[{"kind":"var"}]') {
816
+ throw result;
817
+ }
818
+ },
819
+ () => {
820
+ const result = stringify(tokenizeString('void'));
821
+ if (result !== '[{"kind":"void"}]') {
822
+ throw result;
823
+ }
824
+ },
825
+ () => {
826
+ const result = stringify(tokenizeString('while'));
827
+ if (result !== '[{"kind":"while"}]') {
828
+ throw result;
829
+ }
830
+ },
831
+ () => {
832
+ const result = stringify(tokenizeString('with'));
833
+ if (result !== '[{"kind":"with"}]') {
834
+ throw result;
835
+ }
836
+ },
837
+ () => {
838
+ const result = stringify(tokenizeString('yield'));
839
+ if (result !== '[{"kind":"yield"}]') {
840
+ throw result;
841
+ }
842
+ },
843
+ ]
844
+ };