summaryrefslogtreecommitdiffstats
path: root/web/play/package-lock.json
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-08 03:29:35 +0100
committersalmonik <salmonik@tuta.io>2026-11-08 03:29:35 +0100
commit058432130628d00764663ecf819a9adc6793768d (patch)
treed3f49f111fbfaa48647cca2600adcf9017af2d30 /web/play/package-lock.json
parentweb: serve latest.php through PHP and refuse stray PHP files (diff)
downloadzagan-bet-058432130628d00764663ecf819a9adc6793768d.tar.gz
zagan-bet-058432130628d00764663ecf819a9adc6793768d.zip
v5.0.0: protocol v5 and the browser frontend
Protocol v5 replaces newline lines with bounded [u32 len][text] frames and REQ/RES/EVT envelopes. Requests carry correlation ids and the server replays the last 256 replies per connection, so a gateway retry cannot double-debit and a late reply cannot clobber a newer request. HELLO/PONG carry server time; crash rounds announce started_at and push coalesced 10 Hz ticks. Crash now commits sha256(seed) before a round and reveals the seed when it ends, so clients recompute the crash point. Adds the webd/ gateway: one blocking thread, one ClientCore and one pinned upstream TLS connection per session, an HttpOnly session cookie, takeover, and a 60-second grace window. The browser sends Command JSON and renders View JSON; it never speaks the game protocol or stores credentials. Adds the vanilla TypeScript browser app at /play/ (login, lobby, all four games, history, notices, crash verification), the nginx /play and /ws routes, and the headless DOM smoke test. webd and the app stay out of the TUI/GUI/server build graph. The client/server version moves to 5.0.0 in lockstep; v4 peers are refused at HELLO.
Diffstat (limited to 'web/play/package-lock.json')
-rw-r--r--web/play/package-lock.json1031
1 files changed, 1031 insertions, 0 deletions
diff --git a/web/play/package-lock.json b/web/play/package-lock.json
new file mode 100644
index 0000000..831527f
--- /dev/null
+++ b/web/play/package-lock.json
@@ -0,0 +1,1031 @@
1{
2 "name": "zagan-bet-play",
3 "version": "5.0.0",
4 "lockfileVersion": 3,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "zagan-bet-play",
9 "version": "5.0.0",
10 "devDependencies": {
11 "esbuild": "^0.28.0",
12 "jsdom": "^30.1.3",
13 "typescript": "^5.9.0"
14 }
15 },
16 "node_modules/@asamuzakjp/css-color": {
17 "version": "7.1.9",
18 "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-7.1.9.tgz",
19 "integrity": "sha512-vZ6JQVq8Ivgz6b/IBlAf90wZviXdluY13cQOPO+nJHbmXwGrPl2GcpqUY7a55/8ZVdfONXpCFMpRijOBCHNlcQ==",
20 "dev": true,
21 "license": "MIT",
22 "dependencies": {
23 "@csstools/css-calc": "^3.4.3",
24 "@csstools/css-color-parser": "^4.2.6",
25 "@csstools/css-parser-algorithms": "^4.0.2",
26 "@csstools/css-tokenizer": "^4.0.2",
27 "lru-cache": "^11.5.3"
28 },
29 "engines": {
30 "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
31 }
32 },
33 "node_modules/@asamuzakjp/dom-selector": {
34 "version": "10.0.5",
35 "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-10.0.5.tgz",
36 "integrity": "sha512-EgmJ7oEaGQECTn3H3wmnQpEy4hKY66VvM7VQndwPIQob3p877BgbyOUE3EX0LgXQCciF2H8KMdR+RznqjMNOLw==",
37 "dev": true,
38 "license": "MIT",
39 "dependencies": {
40 "bidi-js": "^1.1.0",
41 "css-tree": "^3.2.1",
42 "is-potential-custom-element-name": "^1.0.1",
43 "lru-cache": "^11.5.3"
44 },
45 "engines": {
46 "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
47 }
48 },
49 "node_modules/@bramus/specificity": {
50 "version": "2.4.3",
51 "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.3.tgz",
52 "integrity": "sha512-0GEz8qJWokkUVYQYRukmkSHIFNoBH8QTreeHrAFbvz1XFYc3Y+puhMs8PQ5x8GNugiC2l5jvDBXKLbBIByeSBw==",
53 "dev": true,
54 "license": "MIT",
55 "dependencies": {
56 "css-tree": "^3.2.1"
57 },
58 "bin": {
59 "specificity": "bin/cli.js"
60 }
61 },
62 "node_modules/@csstools/color-helpers": {
63 "version": "6.1.2",
64 "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.2.tgz",
65 "integrity": "sha512-grhRy3OKmniaAEKXMjua5z/EODX0MSqBGjunw8+j/3HQjOnahs2AGhvEOIYVUWcU6ScApbhLhVrQTX8XqrMrow==",
66 "dev": true,
67 "funding": [
68 {
69 "type": "github",
70 "url": "https://github.com/sponsors/csstools"
71 },
72 {
73 "type": "opencollective",
74 "url": "https://opencollective.com/csstools"
75 }
76 ],
77 "license": "MIT-0",
78 "engines": {
79 "node": ">=20.19.0"
80 }
81 },
82 "node_modules/@csstools/css-calc": {
83 "version": "3.4.3",
84 "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.4.3.tgz",
85 "integrity": "sha512-iex20d8CHVkyvg6B7UKV7uHnI2Bqo9g+EFfT9E0y+GvTvhZ/DwONJ+9aKb1dlqm0ZiGsL5RXjp0fCoJYnkeDjA==",
86 "dev": true,
87 "funding": [
88 {
89 "type": "github",
90 "url": "https://github.com/sponsors/csstools"
91 },
92 {
93 "type": "opencollective",
94 "url": "https://opencollective.com/csstools"
95 }
96 ],
97 "license": "MIT",
98 "engines": {
99 "node": ">=20.19.0"
100 },
101 "peerDependencies": {
102 "@csstools/css-parser-algorithms": "^4.0.2",
103 "@csstools/css-tokenizer": "^4.0.2"
104 }
105 },
106 "node_modules/@csstools/css-color-parser": {
107 "version": "4.2.7",
108 "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.7.tgz",
109 "integrity": "sha512-zgm9yjQz5iJB4VL8RyVwd71TWB8Q89FSxt/NzXoWqPSkEBOVtn9L6vAPtSc9hpKfB0Awo/AL2VKFHjYetBLFHQ==",
110 "dev": true,
111 "funding": [
112 {
113 "type": "github",
114 "url": "https://github.com/sponsors/csstools"
115 },
116 {
117 "type": "opencollective",
118 "url": "https://opencollective.com/csstools"
119 }
120 ],
121 "license": "MIT",
122 "dependencies": {
123 "@csstools/color-helpers": "^6.1.2",
124 "@csstools/css-calc": "^3.4.3"
125 },
126 "engines": {
127 "node": ">=20.19.0"
128 },
129 "peerDependencies": {
130 "@csstools/css-parser-algorithms": "^4.0.2",
131 "@csstools/css-tokenizer": "^4.0.2"
132 }
133 },
134 "node_modules/@csstools/css-parser-algorithms": {
135 "version": "4.0.2",
136 "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.2.tgz",
137 "integrity": "sha512-40cSKyMvK+tq4qz6Awrlye2WGuOKt3FwPgtGg6KTfbHOWNw+Rk1rzbAtZnZ6IBhsY491HLRnDXwoyBAijmmILA==",
138 "dev": true,
139 "funding": [
140 {
141 "type": "github",
142 "url": "https://github.com/sponsors/csstools"
143 },
144 {
145 "type": "opencollective",
146 "url": "https://opencollective.com/csstools"
147 }
148 ],
149 "license": "MIT",
150 "engines": {
151 "node": ">=20.19.0"
152 },
153 "peerDependencies": {
154 "@csstools/css-tokenizer": "^4.0.2"
155 }
156 },
157 "node_modules/@csstools/css-syntax-patches-for-csstree": {
158 "version": "1.1.16",
159 "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.16.tgz",
160 "integrity": "sha512-LsDbJPP/B8cPasUJyTA5S99F7C4G93ngW8hUluXz8CFeOaaRnBPtBiIlvgcPYU0HmHNz8CXg+1vwFrIB4F6Dgw==",
161 "dev": true,
162 "funding": [
163 {
164 "type": "github",
165 "url": "https://github.com/sponsors/csstools"
166 },
167 {
168 "type": "opencollective",
169 "url": "https://opencollective.com/csstools"
170 }
171 ],
172 "license": "MIT-0",
173 "peerDependencies": {
174 "css-tree": "^3.2.1"
175 },
176 "peerDependenciesMeta": {
177 "css-tree": {
178 "optional": true
179 }
180 }
181 },
182 "node_modules/@csstools/css-tokenizer": {
183 "version": "4.0.2",
184 "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.2.tgz",
185 "integrity": "sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==",
186 "dev": true,
187 "funding": [
188 {
189 "type": "github",
190 "url": "https://github.com/sponsors/csstools"
191 },
192 {
193 "type": "opencollective",
194 "url": "https://opencollective.com/csstools"
195 }
196 ],
197 "license": "MIT",
198 "engines": {
199 "node": ">=20.19.0"
200 }
201 },
202 "node_modules/@esbuild/aix-ppc64": {
203 "version": "0.28.2",
204 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
205 "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
206 "cpu": [
207 "ppc64"
208 ],
209 "dev": true,
210 "license": "MIT",
211 "optional": true,
212 "os": [
213 "aix"
214 ],
215 "engines": {
216 "node": ">=18"
217 }
218 },
219 "node_modules/@esbuild/android-arm": {
220 "version": "0.28.2",
221 "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
222 "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
223 "cpu": [
224 "arm"
225 ],
226 "dev": true,
227 "license": "MIT",
228 "optional": true,
229 "os": [
230 "android"
231 ],
232 "engines": {
233 "node": ">=18"
234 }
235 },
236 "node_modules/@esbuild/android-arm64": {
237 "version": "0.28.2",
238 "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
239 "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
240 "cpu": [
241 "arm64"
242 ],
243 "dev": true,
244 "license": "MIT",
245 "optional": true,
246 "os": [
247 "android"
248 ],
249 "engines": {
250 "node": ">=18"
251 }
252 },
253 "node_modules/@esbuild/android-x64": {
254 "version": "0.28.2",
255 "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
256 "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
257 "cpu": [
258 "x64"
259 ],
260 "dev": true,
261 "license": "MIT",
262 "optional": true,
263 "os": [
264 "android"
265 ],
266 "engines": {
267 "node": ">=18"
268 }
269 },
270 "node_modules/@esbuild/darwin-arm64": {
271 "version": "0.28.2",
272 "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
273 "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
274 "cpu": [
275 "arm64"
276 ],
277 "dev": true,
278 "license": "MIT",
279 "optional": true,
280 "os": [
281 "darwin"
282 ],
283 "engines": {
284 "node": ">=18"
285 }
286 },
287 "node_modules/@esbuild/darwin-x64": {
288 "version": "0.28.2",
289 "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
290 "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
291 "cpu": [
292 "x64"
293 ],
294 "dev": true,
295 "license": "MIT",
296 "optional": true,
297 "os": [
298 "darwin"
299 ],
300 "engines": {
301 "node": ">=18"
302 }
303 },
304 "node_modules/@esbuild/freebsd-arm64": {
305 "version": "0.28.2",
306 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
307 "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
308 "cpu": [
309 "arm64"
310 ],
311 "dev": true,
312 "license": "MIT",
313 "optional": true,
314 "os": [
315 "freebsd"
316 ],
317 "engines": {
318 "node": ">=18"
319 }
320 },
321 "node_modules/@esbuild/freebsd-x64": {
322 "version": "0.28.2",
323 "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
324 "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
325 "cpu": [
326 "x64"
327 ],
328 "dev": true,
329 "license": "MIT",
330 "optional": true,
331 "os": [
332 "freebsd"
333 ],
334 "engines": {
335 "node": ">=18"
336 }
337 },
338 "node_modules/@esbuild/linux-arm": {
339 "version": "0.28.2",
340 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
341 "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
342 "cpu": [
343 "arm"
344 ],
345 "dev": true,
346 "license": "MIT",
347 "optional": true,
348 "os": [
349 "linux"
350 ],
351 "engines": {
352 "node": ">=18"
353 }
354 },
355 "node_modules/@esbuild/linux-arm64": {
356 "version": "0.28.2",
357 "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
358 "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
359 "cpu": [
360 "arm64"
361 ],
362 "dev": true,
363 "license": "MIT",
364 "optional": true,
365 "os": [
366 "linux"
367 ],
368 "engines": {
369 "node": ">=18"
370 }
371 },
372 "node_modules/@esbuild/linux-ia32": {
373 "version": "0.28.2",
374 "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
375 "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
376 "cpu": [
377 "ia32"
378 ],
379 "dev": true,
380 "license": "MIT",
381 "optional": true,
382 "os": [
383 "linux"
384 ],
385 "engines": {
386 "node": ">=18"
387 }
388 },
389 "node_modules/@esbuild/linux-loong64": {
390 "version": "0.28.2",
391 "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
392 "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
393 "cpu": [
394 "loong64"
395 ],
396 "dev": true,
397 "license": "MIT",
398 "optional": true,
399 "os": [
400 "linux"
401 ],
402 "engines": {
403 "node": ">=18"
404 }
405 },
406 "node_modules/@esbuild/linux-mips64el": {
407 "version": "0.28.2",
408 "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
409 "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
410 "cpu": [
411 "mips64el"
412 ],
413 "dev": true,
414 "license": "MIT",
415 "optional": true,
416 "os": [
417 "linux"
418 ],
419 "engines": {
420 "node": ">=18"
421 }
422 },
423 "node_modules/@esbuild/linux-ppc64": {
424 "version": "0.28.2",
425 "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
426 "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
427 "cpu": [
428 "ppc64"
429 ],
430 "dev": true,
431 "license": "MIT",
432 "optional": true,
433 "os": [
434 "linux"
435 ],
436 "engines": {
437 "node": ">=18"
438 }
439 },
440 "node_modules/@esbuild/linux-riscv64": {
441 "version": "0.28.2",
442 "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
443 "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
444 "cpu": [
445 "riscv64"
446 ],
447 "dev": true,
448 "license": "MIT",
449 "optional": true,
450 "os": [
451 "linux"
452 ],
453 "engines": {
454 "node": ">=18"
455 }
456 },
457 "node_modules/@esbuild/linux-s390x": {
458 "version": "0.28.2",
459 "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
460 "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
461 "cpu": [
462 "s390x"
463 ],
464 "dev": true,
465 "license": "MIT",
466 "optional": true,
467 "os": [
468 "linux"
469 ],
470 "engines": {
471 "node": ">=18"
472 }
473 },
474 "node_modules/@esbuild/linux-x64": {
475 "version": "0.28.2",
476 "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
477 "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
478 "cpu": [
479 "x64"
480 ],
481 "dev": true,
482 "license": "MIT",
483 "optional": true,
484 "os": [
485 "linux"
486 ],
487 "engines": {
488 "node": ">=18"
489 }
490 },
491 "node_modules/@esbuild/netbsd-arm64": {
492 "version": "0.28.2",
493 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
494 "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
495 "cpu": [
496 "arm64"
497 ],
498 "dev": true,
499 "license": "MIT",
500 "optional": true,
501 "os": [
502 "netbsd"
503 ],
504 "engines": {
505 "node": ">=18"
506 }
507 },
508 "node_modules/@esbuild/netbsd-x64": {
509 "version": "0.28.2",
510 "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
511 "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
512 "cpu": [
513 "x64"
514 ],
515 "dev": true,
516 "license": "MIT",
517 "optional": true,
518 "os": [
519 "netbsd"
520 ],
521 "engines": {
522 "node": ">=18"
523 }
524 },
525 "node_modules/@esbuild/openbsd-arm64": {
526 "version": "0.28.2",
527 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
528 "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
529 "cpu": [
530 "arm64"
531 ],
532 "dev": true,
533 "license": "MIT",
534 "optional": true,
535 "os": [
536 "openbsd"
537 ],
538 "engines": {
539 "node": ">=18"
540 }
541 },
542 "node_modules/@esbuild/openbsd-x64": {
543 "version": "0.28.2",
544 "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
545 "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
546 "cpu": [
547 "x64"
548 ],
549 "dev": true,
550 "license": "MIT",
551 "optional": true,
552 "os": [
553 "openbsd"
554 ],
555 "engines": {
556 "node": ">=18"
557 }
558 },
559 "node_modules/@esbuild/openharmony-arm64": {
560 "version": "0.28.2",
561 "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
562 "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
563 "cpu": [
564 "arm64"
565 ],
566 "dev": true,
567 "license": "MIT",
568 "optional": true,
569 "os": [
570 "openharmony"
571 ],
572 "engines": {
573 "node": ">=18"
574 }
575 },
576 "node_modules/@esbuild/sunos-x64": {
577 "version": "0.28.2",
578 "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
579 "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
580 "cpu": [
581 "x64"
582 ],
583 "dev": true,
584 "license": "MIT",
585 "optional": true,
586 "os": [
587 "sunos"
588 ],
589 "engines": {
590 "node": ">=18"
591 }
592 },
593 "node_modules/@esbuild/win32-arm64": {
594 "version": "0.28.2",
595 "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
596 "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
597 "cpu": [
598 "arm64"
599 ],
600 "dev": true,
601 "license": "MIT",
602 "optional": true,
603 "os": [
604 "win32"
605 ],
606 "engines": {
607 "node": ">=18"
608 }
609 },
610 "node_modules/@esbuild/win32-ia32": {
611 "version": "0.28.2",
612 "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
613 "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
614 "cpu": [
615 "ia32"
616 ],
617 "dev": true,
618 "license": "MIT",
619 "optional": true,
620 "os": [
621 "win32"
622 ],
623 "engines": {
624 "node": ">=18"
625 }
626 },
627 "node_modules/@esbuild/win32-x64": {
628 "version": "0.28.2",
629 "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
630 "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
631 "cpu": [
632 "x64"
633 ],
634 "dev": true,
635 "license": "MIT",
636 "optional": true,
637 "os": [
638 "win32"
639 ],
640 "engines": {
641 "node": ">=18"
642 }
643 },
644 "node_modules/@exodus/bytes": {
645 "version": "1.16.0",
646 "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.16.0.tgz",
647 "integrity": "sha512-IcpW84uEn3N7ETtNZMlxKhfl6Pec8rUNGOTBtWbK1FKhJxIFAptZyVrvVRVBimAJxJCgc3PxepxkdWWG4DVzfA==",
648 "dev": true,
649 "license": "MIT",
650 "engines": {
651 "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
652 },
653 "peerDependencies": {
654 "@noble/hashes": "^1.8.0 || ^2.0.0"
655 },
656 "peerDependenciesMeta": {
657 "@noble/hashes": {
658 "optional": true
659 }
660 }
661 },
662 "node_modules/bidi-js": {
663 "version": "1.1.0",
664 "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.1.0.tgz",
665 "integrity": "sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==",
666 "dev": true,
667 "license": "MIT",
668 "dependencies": {
669 "require-from-string": "^2.0.2"
670 }
671 },
672 "node_modules/css-tree": {
673 "version": "3.2.1",
674 "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
675 "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
676 "dev": true,
677 "license": "MIT",
678 "dependencies": {
679 "mdn-data": "2.27.1",
680 "source-map-js": "^1.2.1"
681 },
682 "engines": {
683 "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
684 }
685 },
686 "node_modules/data-urls": {
687 "version": "8.0.0",
688 "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-8.0.0.tgz",
689 "integrity": "sha512-JQUCCK+/CAGbGGx618PlFZMXH81Jtj7t73CHv9dd/zVWvxgGT2zLFRjnKb+Ng46GIwcy+f7f88qd4duqllK+WQ==",
690 "dev": true,
691 "license": "MIT",
692 "dependencies": {
693 "whatwg-mimetype": "^5.0.0",
694 "whatwg-url": "^17.1.2"
695 },
696 "engines": {
697 "node": "^22.14.0 || >=24.0.0"
698 }
699 },
700 "node_modules/decimal.js": {
701 "version": "10.6.0",
702 "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
703 "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
704 "dev": true,
705 "license": "MIT"
706 },
707 "node_modules/entities": {
708 "version": "8.1.0",
709 "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz",
710 "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==",
711 "dev": true,
712 "license": "BSD-2-Clause",
713 "engines": {
714 "node": ">=20.19.0"
715 },
716 "funding": {
717 "url": "https://github.com/fb55/entities?sponsor=1"
718 }
719 },
720 "node_modules/esbuild": {
721 "version": "0.28.2",
722 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
723 "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
724 "dev": true,
725 "hasInstallScript": true,
726 "license": "MIT",
727 "bin": {
728 "esbuild": "bin/esbuild"
729 },
730 "engines": {
731 "node": ">=18"
732 },
733 "optionalDependencies": {
734 "@esbuild/aix-ppc64": "0.28.2",
735 "@esbuild/android-arm": "0.28.2",
736 "@esbuild/android-arm64": "0.28.2",
737 "@esbuild/android-x64": "0.28.2",
738 "@esbuild/darwin-arm64": "0.28.2",
739 "@esbuild/darwin-x64": "0.28.2",
740 "@esbuild/freebsd-arm64": "0.28.2",
741 "@esbuild/freebsd-x64": "0.28.2",
742 "@esbuild/linux-arm": "0.28.2",
743 "@esbuild/linux-arm64": "0.28.2",
744 "@esbuild/linux-ia32": "0.28.2",
745 "@esbuild/linux-loong64": "0.28.2",
746 "@esbuild/linux-mips64el": "0.28.2",
747 "@esbuild/linux-ppc64": "0.28.2",
748 "@esbuild/linux-riscv64": "0.28.2",
749 "@esbuild/linux-s390x": "0.28.2",
750 "@esbuild/linux-x64": "0.28.2",
751 "@esbuild/netbsd-arm64": "0.28.2",
752 "@esbuild/netbsd-x64": "0.28.2",
753 "@esbuild/openbsd-arm64": "0.28.2",
754 "@esbuild/openbsd-x64": "0.28.2",
755 "@esbuild/openharmony-arm64": "0.28.2",
756 "@esbuild/sunos-x64": "0.28.2",
757 "@esbuild/win32-arm64": "0.28.2",
758 "@esbuild/win32-ia32": "0.28.2",
759 "@esbuild/win32-x64": "0.28.2"
760 }
761 },
762 "node_modules/html-encoding-sniffer": {
763 "version": "7.0.0",
764 "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-7.0.0.tgz",
765 "integrity": "sha512-UikN5yr7xsCDAq87Or5or0PAlD3HJJOKVzM05az588WnpDJ4Ux7a2A53Qi6gofGg2/EtvF/H4hCi/TXfCW4Y6w==",
766 "dev": true,
767 "license": "MIT",
768 "dependencies": {
769 "@exodus/bytes": "^1.15.1"
770 },
771 "engines": {
772 "node": "^22.13.0 || >=24.0.0"
773 }
774 },
775 "node_modules/is-potential-custom-element-name": {
776 "version": "1.0.1",
777 "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
778 "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
779 "dev": true,
780 "license": "MIT"
781 },
782 "node_modules/jsdom": {
783 "version": "30.1.3",
784 "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-30.1.3.tgz",
785 "integrity": "sha512-hQMUPvRgN7KxsfIytDQji7bimuJeRQa6Qo5+iuiZQk5CafeRxLIA10/cG5YCBFNpD9RO3oqIiN4CO1Y44kxqXg==",
786 "dev": true,
787 "license": "MIT",
788 "dependencies": {
789 "@asamuzakjp/css-color": "^7.1.3",
790 "@asamuzakjp/dom-selector": "^10.0.3",
791 "@bramus/specificity": "^2.4.2",
792 "@csstools/css-syntax-patches-for-csstree": "^1.1.15",
793 "@exodus/bytes": "^1.16.0",
794 "css-tree": "^3.2.1",
795 "data-urls": "^8.0.0",
796 "decimal.js": "^10.6.0",
797 "html-encoding-sniffer": "^7.0.0",
798 "is-potential-custom-element-name": "^1.0.1",
799 "lru-cache": "^11.5.3",
800 "parse5": "^8.0.1",
801 "saxes": "^6.0.0",
802 "tough-cookie": "^6.0.2",
803 "undici": "^8.12.1",
804 "w3c-xmlserializer": "^6.0.0",
805 "webidl-conversions": "^8.0.1",
806 "whatwg-mimetype": "^5.0.0",
807 "whatwg-url": "^17.2.0",
808 "xml-name-validator": "^5.0.0"
809 },
810 "engines": {
811 "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
812 },
813 "peerDependencies": {
814 "canvas": "^3.2.3"
815 },
816 "peerDependenciesMeta": {
817 "canvas": {
818 "optional": true
819 }
820 }
821 },
822 "node_modules/lru-cache": {
823 "version": "11.5.3",
824 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz",
825 "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==",
826 "dev": true,
827 "license": "BlueOak-1.0.0",
828 "engines": {
829 "node": "20 || >=22"
830 }
831 },
832 "node_modules/mdn-data": {
833 "version": "2.27.1",
834 "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
835 "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
836 "dev": true,
837 "license": "CC0-1.0"
838 },
839 "node_modules/parse5": {
840 "version": "8.0.1",
841 "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz",
842 "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==",
843 "dev": true,
844 "license": "MIT",
845 "dependencies": {
846 "entities": "^8.0.0"
847 },
848 "funding": {
849 "url": "https://github.com/inikulin/parse5?sponsor=1"
850 }
851 },
852 "node_modules/punycode": {
853 "version": "2.3.1",
854 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
855 "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
856 "dev": true,
857 "license": "MIT",
858 "engines": {
859 "node": ">=6"
860 }
861 },
862 "node_modules/require-from-string": {
863 "version": "2.0.2",
864 "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
865 "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
866 "dev": true,
867 "license": "MIT",
868 "engines": {
869 "node": ">=0.10.0"
870 }
871 },
872 "node_modules/saxes": {
873 "version": "6.0.0",
874 "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
875 "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
876 "dev": true,
877 "license": "ISC",
878 "dependencies": {
879 "xmlchars": "^2.2.0"
880 },
881 "engines": {
882 "node": ">=v12.22.7"
883 }
884 },
885 "node_modules/source-map-js": {
886 "version": "1.2.2",
887 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
888 "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
889 "dev": true,
890 "license": "BSD-3-Clause",
891 "engines": {
892 "node": ">=0.10.0"
893 }
894 },
895 "node_modules/tldts": {
896 "version": "7.4.19",
897 "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.19.tgz",
898 "integrity": "sha512-48dH6aSpQnpbzDUc4vIQZ1VjB8tkK+e8c1yx05/SZK+rkssgjEOlxDd/yU8/a4vGYQ9vRgJr9dwMq9TJ0b3X2Q==",
899 "dev": true,
900 "license": "MIT",
901 "dependencies": {
902 "tldts-core": "^7.4.19"
903 },
904 "bin": {
905 "tldts": "bin/cli.js"
906 }
907 },
908 "node_modules/tldts-core": {
909 "version": "7.4.20",
910 "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.20.tgz",
911 "integrity": "sha512-C630TWXZCZmLq0F2bW4QqwnaaxCQ/svpAqvJwnC4JvgEM5ohhBnGsEzTLSOXcN+xjz+kEaHS5uoWIw2klnqd0A==",
912 "dev": true,
913 "license": "MIT"
914 },
915 "node_modules/tough-cookie": {
916 "version": "6.0.2",
917 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz",
918 "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==",
919 "dev": true,
920 "license": "BSD-3-Clause",
921 "dependencies": {
922 "tldts": "^7.0.5"
923 },
924 "engines": {
925 "node": ">=16"
926 }
927 },
928 "node_modules/tr46": {
929 "version": "7.0.0",
930 "resolved": "https://registry.npmjs.org/tr46/-/tr46-7.0.0.tgz",
931 "integrity": "sha512-BcDSDW+SIGWVOns1Zm6Yg91q9AEj7eaID0QDY9oIqJD1A8dscNwMcl9Sms2DeuWCNov1X0/oXanHGYQBSLwZsg==",
932 "dev": true,
933 "license": "MIT",
934 "dependencies": {
935 "punycode": "^2.3.1"
936 },
937 "engines": {
938 "node": "^22.14.0 || >=24.0.0"
939 }
940 },
941 "node_modules/typescript": {
942 "version": "5.9.3",
943 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
944 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
945 "dev": true,
946 "license": "Apache-2.0",
947 "bin": {
948 "tsc": "bin/tsc",
949 "tsserver": "bin/tsserver"
950 },
951 "engines": {
952 "node": ">=14.17"
953 }
954 },
955 "node_modules/undici": {
956 "version": "8.12.3",
957 "resolved": "https://registry.npmjs.org/undici/-/undici-8.12.3.tgz",
958 "integrity": "sha512-+fdndUTwBP86cVjihTp21hZHo7d6oj1c/47XPA3lL8mM0XHs+C4EkcjmgRsFnFk2f/UONGDy9ItBItmXsLOQHw==",
959 "dev": true,
960 "license": "MIT",
961 "engines": {
962 "node": ">=22.19.0"
963 }
964 },
965 "node_modules/w3c-xmlserializer": {
966 "version": "6.0.0",
967 "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-6.0.0.tgz",
968 "integrity": "sha512-4Nsy8K5Tr6SPDH9jhKJOHf7ChDrc1zufZTVSF7x72hwuEXBqxqk9G6cK+K2NRUtB3iELRJqjXb4JPDMBjMTl2Q==",
969 "dev": true,
970 "license": "MIT",
971 "dependencies": {
972 "xml-name-validator": "^5.0.0"
973 },
974 "engines": {
975 "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
976 }
977 },
978 "node_modules/webidl-conversions": {
979 "version": "8.0.1",
980 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz",
981 "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==",
982 "dev": true,
983 "license": "BSD-2-Clause",
984 "engines": {
985 "node": ">=20"
986 }
987 },
988 "node_modules/whatwg-mimetype": {
989 "version": "5.0.0",
990 "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz",
991 "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==",
992 "dev": true,
993 "license": "MIT",
994 "engines": {
995 "node": ">=20"
996 }
997 },
998 "node_modules/whatwg-url": {
999 "version": "17.3.0",
1000 "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-17.3.0.tgz",
1001 "integrity": "sha512-KwOAJrpf+GTgBvcBQJcP38sMF0DsQKdwtG+TxM2pW44P6E5k0hDbWrDmyuJDIF0Uef0aQq0ZoJs+5oI+k8ddhg==",
1002 "dev": true,
1003 "license": "MIT",
1004 "dependencies": {
1005 "@exodus/bytes": "^1.16.0",
1006 "tr46": "^7.0.0",
1007 "webidl-conversions": "^8.0.1"
1008 },
1009 "engines": {
1010 "node": "^22.14.0 || >=24.0.0"
1011 }
1012 },
1013 "node_modules/xml-name-validator": {
1014 "version": "5.0.0",
1015 "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
1016 "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
1017 "dev": true,
1018 "license": "Apache-2.0",
1019 "engines": {
1020 "node": ">=18"
1021 }
1022 },
1023 "node_modules/xmlchars": {
1024 "version": "2.2.0",
1025 "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
1026 "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
1027 "dev": true,
1028 "license": "MIT"
1029 }
1030 }
1031}