detached 802f0d0

refactor(frontend): remove typescript frontend in favor of svelte gui

commit
802f0d09c26dc69d8ed818dd906a020a88d80f00
author
bamen · · 2025-09-15 05:21 UTC
parent
68e80d7
signature
unsigned
18 files · +0 -5389
D frontend/bindings/database/sql/index.ts +0 -8
@@ -1,8 +0,0 @@
1-// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
2-// This file is automatically generated. DO NOT EDIT
3-
4-export {
5- NullInt64,
6- NullString,
7- NullTime
8-} from "./models.js";
D frontend/bindings/time/index.ts +0 -10
@@ -1,10 +0,0 @@
1-// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
2-// This file is automatically generated. DO NOT EDIT
3-
4-export {
5- Duration
6-} from "./models.js";
7-
8-export type {
9- Time
10-} from "./models.js";
D frontend/eslint.config.js +0 -35
@@ -1,35 +0,0 @@
1-import js from '@eslint/js';
2-import tseslint from 'typescript-eslint';
3-
4-export default tseslint.config(
5- js.configs.recommended,
6- ...tseslint.configs.recommended,
7- {
8- files: ['**/*.{js,mjs,cjs,ts}'],
9- languageOptions: {
10- ecmaVersion: 2024,
11- sourceType: 'module',
12- },
13- rules: {
14- // Modern TypeScript best practices
15- '@typescript-eslint/no-unused-vars': ['error', {
16- 'argsIgnorePattern': '^_',
17- 'varsIgnorePattern': '^_'
18- }],
19- '@typescript-eslint/no-explicit-any': 'warn',
20- '@typescript-eslint/no-empty-function': 'off',
21- '@typescript-eslint/consistent-type-imports': 'error',
22- '@typescript-eslint/no-import-type-side-effects': 'error',
23-
24- // Modern JavaScript/TypeScript patterns
25- 'prefer-const': 'error',
26- 'no-var': 'error',
27- 'object-shorthand': 'error',
28- 'prefer-template': 'error',
29- },
30- },
31- {
32- files: ['**/*.js', '**/*.mjs'],
33- ...tseslint.configs.disableTypeChecked,
34- }
35-);⏎̸
D frontend/package-lock.json +0 -3831
@@ -1,3831 +0,0 @@
1-{
2- "name": "@dumber/frontend",
3- "version": "0.1.0",
4- "lockfileVersion": 3,
5- "requires": true,
6- "packages": {
7- "": {
8- "name": "@dumber/frontend",
9- "version": "0.1.0",
10- "devDependencies": {
11- "@types/node": "^20.0.0",
12- "@typescript-eslint/eslint-plugin": "^7.0.0",
13- "@typescript-eslint/parser": "^7.0.0",
14- "eslint": "^8.57.0",
15- "tsup": "^8.0.0",
16- "typescript": "^5.3.0",
17- "typescript-eslint": "^8.43.0"
18- }
19- },
20- "node_modules/@esbuild/aix-ppc64": {
21- "version": "0.25.9",
22- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
23- "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
24- "cpu": [
25- "ppc64"
26- ],
27- "dev": true,
28- "license": "MIT",
29- "optional": true,
30- "os": [
31- "aix"
32- ],
33- "engines": {
34- "node": ">=18"
35- }
36- },
37- "node_modules/@esbuild/android-arm": {
38- "version": "0.25.9",
39- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
40- "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
41- "cpu": [
42- "arm"
43- ],
44- "dev": true,
45- "license": "MIT",
46- "optional": true,
47- "os": [
48- "android"
49- ],
50- "engines": {
51- "node": ">=18"
52- }
53- },
54- "node_modules/@esbuild/android-arm64": {
55- "version": "0.25.9",
56- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
57- "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
58- "cpu": [
59- "arm64"
60- ],
61- "dev": true,
62- "license": "MIT",
63- "optional": true,
64- "os": [
65- "android"
66- ],
67- "engines": {
68- "node": ">=18"
69- }
70- },
71- "node_modules/@esbuild/android-x64": {
72- "version": "0.25.9",
73- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
74- "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
75- "cpu": [
76- "x64"
77- ],
78- "dev": true,
79- "license": "MIT",
80- "optional": true,
81- "os": [
82- "android"
83- ],
84- "engines": {
85- "node": ">=18"
86- }
87- },
88- "node_modules/@esbuild/darwin-arm64": {
89- "version": "0.25.9",
90- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
91- "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
92- "cpu": [
93- "arm64"
94- ],
95- "dev": true,
96- "license": "MIT",
97- "optional": true,
98- "os": [
99- "darwin"
100- ],
101- "engines": {
102- "node": ">=18"
103- }
104- },
105- "node_modules/@esbuild/darwin-x64": {
106- "version": "0.25.9",
107- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
108- "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
109- "cpu": [
110- "x64"
111- ],
112- "dev": true,
113- "license": "MIT",
114- "optional": true,
115- "os": [
116- "darwin"
117- ],
118- "engines": {
119- "node": ">=18"
120- }
121- },
122- "node_modules/@esbuild/freebsd-arm64": {
123- "version": "0.25.9",
124- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
125- "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
126- "cpu": [
127- "arm64"
128- ],
129- "dev": true,
130- "license": "MIT",
131- "optional": true,
132- "os": [
133- "freebsd"
134- ],
135- "engines": {
136- "node": ">=18"
137- }
138- },
139- "node_modules/@esbuild/freebsd-x64": {
140- "version": "0.25.9",
141- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
142- "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
143- "cpu": [
144- "x64"
145- ],
146- "dev": true,
147- "license": "MIT",
148- "optional": true,
149- "os": [
150- "freebsd"
151- ],
152- "engines": {
153- "node": ">=18"
154- }
155- },
156- "node_modules/@esbuild/linux-arm": {
157- "version": "0.25.9",
158- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
159- "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
160- "cpu": [
161- "arm"
162- ],
163- "dev": true,
164- "license": "MIT",
165- "optional": true,
166- "os": [
167- "linux"
168- ],
169- "engines": {
170- "node": ">=18"
171- }
172- },
173- "node_modules/@esbuild/linux-arm64": {
174- "version": "0.25.9",
175- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
176- "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
177- "cpu": [
178- "arm64"
179- ],
180- "dev": true,
181- "license": "MIT",
182- "optional": true,
183- "os": [
184- "linux"
185- ],
186- "engines": {
187- "node": ">=18"
188- }
189- },
190- "node_modules/@esbuild/linux-ia32": {
191- "version": "0.25.9",
192- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
193- "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
194- "cpu": [
195- "ia32"
196- ],
197- "dev": true,
198- "license": "MIT",
199- "optional": true,
200- "os": [
201- "linux"
202- ],
203- "engines": {
204- "node": ">=18"
205- }
206- },
207- "node_modules/@esbuild/linux-loong64": {
208- "version": "0.25.9",
209- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
210- "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
211- "cpu": [
212- "loong64"
213- ],
214- "dev": true,
215- "license": "MIT",
216- "optional": true,
217- "os": [
218- "linux"
219- ],
220- "engines": {
221- "node": ">=18"
222- }
223- },
224- "node_modules/@esbuild/linux-mips64el": {
225- "version": "0.25.9",
226- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
227- "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
228- "cpu": [
229- "mips64el"
230- ],
231- "dev": true,
232- "license": "MIT",
233- "optional": true,
234- "os": [
235- "linux"
236- ],
237- "engines": {
238- "node": ">=18"
239- }
240- },
241- "node_modules/@esbuild/linux-ppc64": {
242- "version": "0.25.9",
243- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
244- "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
245- "cpu": [
246- "ppc64"
247- ],
248- "dev": true,
249- "license": "MIT",
250- "optional": true,
251- "os": [
252- "linux"
253- ],
254- "engines": {
255- "node": ">=18"
256- }
257- },
258- "node_modules/@esbuild/linux-riscv64": {
259- "version": "0.25.9",
260- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
261- "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
262- "cpu": [
263- "riscv64"
264- ],
265- "dev": true,
266- "license": "MIT",
267- "optional": true,
268- "os": [
269- "linux"
270- ],
271- "engines": {
272- "node": ">=18"
273- }
274- },
275- "node_modules/@esbuild/linux-s390x": {
276- "version": "0.25.9",
277- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
278- "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
279- "cpu": [
280- "s390x"
281- ],
282- "dev": true,
283- "license": "MIT",
284- "optional": true,
285- "os": [
286- "linux"
287- ],
288- "engines": {
289- "node": ">=18"
290- }
291- },
292- "node_modules/@esbuild/linux-x64": {
293- "version": "0.25.9",
294- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
295- "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
296- "cpu": [
297- "x64"
298- ],
299- "dev": true,
300- "license": "MIT",
301- "optional": true,
302- "os": [
303- "linux"
304- ],
305- "engines": {
306- "node": ">=18"
307- }
308- },
309- "node_modules/@esbuild/netbsd-arm64": {
310- "version": "0.25.9",
311- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
312- "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
313- "cpu": [
314- "arm64"
315- ],
316- "dev": true,
317- "license": "MIT",
318- "optional": true,
319- "os": [
320- "netbsd"
321- ],
322- "engines": {
323- "node": ">=18"
324- }
325- },
326- "node_modules/@esbuild/netbsd-x64": {
327- "version": "0.25.9",
328- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
329- "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
330- "cpu": [
331- "x64"
332- ],
333- "dev": true,
334- "license": "MIT",
335- "optional": true,
336- "os": [
337- "netbsd"
338- ],
339- "engines": {
340- "node": ">=18"
341- }
342- },
343- "node_modules/@esbuild/openbsd-arm64": {
344- "version": "0.25.9",
345- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
346- "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
347- "cpu": [
348- "arm64"
349- ],
350- "dev": true,
351- "license": "MIT",
352- "optional": true,
353- "os": [
354- "openbsd"
355- ],
356- "engines": {
357- "node": ">=18"
358- }
359- },
360- "node_modules/@esbuild/openbsd-x64": {
361- "version": "0.25.9",
362- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
363- "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
364- "cpu": [
365- "x64"
366- ],
367- "dev": true,
368- "license": "MIT",
369- "optional": true,
370- "os": [
371- "openbsd"
372- ],
373- "engines": {
374- "node": ">=18"
375- }
376- },
377- "node_modules/@esbuild/openharmony-arm64": {
378- "version": "0.25.9",
379- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
380- "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
381- "cpu": [
382- "arm64"
383- ],
384- "dev": true,
385- "license": "MIT",
386- "optional": true,
387- "os": [
388- "openharmony"
389- ],
390- "engines": {
391- "node": ">=18"
392- }
393- },
394- "node_modules/@esbuild/sunos-x64": {
395- "version": "0.25.9",
396- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
397- "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
398- "cpu": [
399- "x64"
400- ],
401- "dev": true,
402- "license": "MIT",
403- "optional": true,
404- "os": [
405- "sunos"
406- ],
407- "engines": {
408- "node": ">=18"
409- }
410- },
411- "node_modules/@esbuild/win32-arm64": {
412- "version": "0.25.9",
413- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
414- "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
415- "cpu": [
416- "arm64"
417- ],
418- "dev": true,
419- "license": "MIT",
420- "optional": true,
421- "os": [
422- "win32"
423- ],
424- "engines": {
425- "node": ">=18"
426- }
427- },
428- "node_modules/@esbuild/win32-ia32": {
429- "version": "0.25.9",
430- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
431- "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
432- "cpu": [
433- "ia32"
434- ],
435- "dev": true,
436- "license": "MIT",
437- "optional": true,
438- "os": [
439- "win32"
440- ],
441- "engines": {
442- "node": ">=18"
443- }
444- },
445- "node_modules/@esbuild/win32-x64": {
446- "version": "0.25.9",
447- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
448- "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
449- "cpu": [
450- "x64"
451- ],
452- "dev": true,
453- "license": "MIT",
454- "optional": true,
455- "os": [
456- "win32"
457- ],
458- "engines": {
459- "node": ">=18"
460- }
461- },
462- "node_modules/@eslint-community/eslint-utils": {
463- "version": "4.9.0",
464- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
465- "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
466- "dev": true,
467- "license": "MIT",
468- "dependencies": {
469- "eslint-visitor-keys": "^3.4.3"
470- },
471- "engines": {
472- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
473- },
474- "funding": {
475- "url": "https://opencollective.com/eslint"
476- },
477- "peerDependencies": {
478- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
479- }
480- },
481- "node_modules/@eslint-community/regexpp": {
482- "version": "4.12.1",
483- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
484- "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
485- "dev": true,
486- "license": "MIT",
487- "engines": {
488- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
489- }
490- },
491- "node_modules/@eslint/eslintrc": {
492- "version": "2.1.4",
493- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
494- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
495- "dev": true,
496- "license": "MIT",
497- "dependencies": {
498- "ajv": "^6.12.4",
499- "debug": "^4.3.2",
500- "espree": "^9.6.0",
501- "globals": "^13.19.0",
502- "ignore": "^5.2.0",
503- "import-fresh": "^3.2.1",
504- "js-yaml": "^4.1.0",
505- "minimatch": "^3.1.2",
506- "strip-json-comments": "^3.1.1"
507- },
508- "engines": {
509- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
510- },
511- "funding": {
512- "url": "https://opencollective.com/eslint"
513- }
514- },
515- "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
516- "version": "1.1.12",
517- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
518- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
519- "dev": true,
520- "license": "MIT",
521- "dependencies": {
522- "balanced-match": "^1.0.0",
523- "concat-map": "0.0.1"
524- }
525- },
526- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
527- "version": "3.1.2",
528- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
529- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
530- "dev": true,
531- "license": "ISC",
532- "dependencies": {
533- "brace-expansion": "^1.1.7"
534- },
535- "engines": {
536- "node": "*"
537- }
538- },
539- "node_modules/@eslint/js": {
540- "version": "8.57.1",
541- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
542- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
543- "dev": true,
544- "license": "MIT",
545- "engines": {
546- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
547- }
548- },
549- "node_modules/@humanwhocodes/config-array": {
550- "version": "0.13.0",
551- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
552- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
553- "deprecated": "Use @eslint/config-array instead",
554- "dev": true,
555- "license": "Apache-2.0",
556- "dependencies": {
557- "@humanwhocodes/object-schema": "^2.0.3",
558- "debug": "^4.3.1",
559- "minimatch": "^3.0.5"
560- },
561- "engines": {
562- "node": ">=10.10.0"
563- }
564- },
565- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
566- "version": "1.1.12",
567- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
568- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
569- "dev": true,
570- "license": "MIT",
571- "dependencies": {
572- "balanced-match": "^1.0.0",
573- "concat-map": "0.0.1"
574- }
575- },
576- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
577- "version": "3.1.2",
578- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
579- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
580- "dev": true,
581- "license": "ISC",
582- "dependencies": {
583- "brace-expansion": "^1.1.7"
584- },
585- "engines": {
586- "node": "*"
587- }
588- },
589- "node_modules/@humanwhocodes/module-importer": {
590- "version": "1.0.1",
591- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
592- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
593- "dev": true,
594- "license": "Apache-2.0",
595- "engines": {
596- "node": ">=12.22"
597- },
598- "funding": {
599- "type": "github",
600- "url": "https://github.com/sponsors/nzakas"
601- }
602- },
603- "node_modules/@humanwhocodes/object-schema": {
604- "version": "2.0.3",
605- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
606- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
607- "deprecated": "Use @eslint/object-schema instead",
608- "dev": true,
609- "license": "BSD-3-Clause"
610- },
611- "node_modules/@isaacs/cliui": {
612- "version": "8.0.2",
613- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
614- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
615- "dev": true,
616- "license": "ISC",
617- "dependencies": {
618- "string-width": "^5.1.2",
619- "string-width-cjs": "npm:string-width@^4.2.0",
620- "strip-ansi": "^7.0.1",
621- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
622- "wrap-ansi": "^8.1.0",
623- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
624- },
625- "engines": {
626- "node": ">=12"
627- }
628- },
629- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
630- "version": "6.2.2",
631- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
632- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
633- "dev": true,
634- "license": "MIT",
635- "engines": {
636- "node": ">=12"
637- },
638- "funding": {
639- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
640- }
641- },
642- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
643- "version": "7.1.2",
644- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
645- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
646- "dev": true,
647- "license": "MIT",
648- "dependencies": {
649- "ansi-regex": "^6.0.1"
650- },
651- "engines": {
652- "node": ">=12"
653- },
654- "funding": {
655- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
656- }
657- },
658- "node_modules/@jridgewell/gen-mapping": {
659- "version": "0.3.13",
660- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
661- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
662- "dev": true,
663- "license": "MIT",
664- "dependencies": {
665- "@jridgewell/sourcemap-codec": "^1.5.0",
666- "@jridgewell/trace-mapping": "^0.3.24"
667- }
668- },
669- "node_modules/@jridgewell/resolve-uri": {
670- "version": "3.1.2",
671- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
672- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
673- "dev": true,
674- "license": "MIT",
675- "engines": {
676- "node": ">=6.0.0"
677- }
678- },
679- "node_modules/@jridgewell/sourcemap-codec": {
680- "version": "1.5.5",
681- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
682- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
683- "dev": true,
684- "license": "MIT"
685- },
686- "node_modules/@jridgewell/trace-mapping": {
687- "version": "0.3.30",
688- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz",
689- "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==",
690- "dev": true,
691- "license": "MIT",
692- "dependencies": {
693- "@jridgewell/resolve-uri": "^3.1.0",
694- "@jridgewell/sourcemap-codec": "^1.4.14"
695- }
696- },
697- "node_modules/@nodelib/fs.scandir": {
698- "version": "2.1.5",
699- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
700- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
701- "dev": true,
702- "license": "MIT",
703- "dependencies": {
704- "@nodelib/fs.stat": "2.0.5",
705- "run-parallel": "^1.1.9"
706- },
707- "engines": {
708- "node": ">= 8"
709- }
710- },
711- "node_modules/@nodelib/fs.stat": {
712- "version": "2.0.5",
713- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
714- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
715- "dev": true,
716- "license": "MIT",
717- "engines": {
718- "node": ">= 8"
719- }
720- },
721- "node_modules/@nodelib/fs.walk": {
722- "version": "1.2.8",
723- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
724- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
725- "dev": true,
726- "license": "MIT",
727- "dependencies": {
728- "@nodelib/fs.scandir": "2.1.5",
729- "fastq": "^1.6.0"
730- },
731- "engines": {
732- "node": ">= 8"
733- }
734- },
735- "node_modules/@pkgjs/parseargs": {
736- "version": "0.11.0",
737- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
738- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
739- "dev": true,
740- "license": "MIT",
741- "optional": true,
742- "engines": {
743- "node": ">=14"
744- }
745- },
746- "node_modules/@rollup/rollup-android-arm-eabi": {
747- "version": "4.50.1",
748- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz",
749- "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==",
750- "cpu": [
751- "arm"
752- ],
753- "dev": true,
754- "license": "MIT",
755- "optional": true,
756- "os": [
757- "android"
758- ]
759- },
760- "node_modules/@rollup/rollup-android-arm64": {
761- "version": "4.50.1",
762- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz",
763- "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==",
764- "cpu": [
765- "arm64"
766- ],
767- "dev": true,
768- "license": "MIT",
769- "optional": true,
770- "os": [
771- "android"
772- ]
773- },
774- "node_modules/@rollup/rollup-darwin-arm64": {
775- "version": "4.50.1",
776- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz",
777- "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==",
778- "cpu": [
779- "arm64"
780- ],
781- "dev": true,
782- "license": "MIT",
783- "optional": true,
784- "os": [
785- "darwin"
786- ]
787- },
788- "node_modules/@rollup/rollup-darwin-x64": {
789- "version": "4.50.1",
790- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz",
791- "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==",
792- "cpu": [
793- "x64"
794- ],
795- "dev": true,
796- "license": "MIT",
797- "optional": true,
798- "os": [
799- "darwin"
800- ]
801- },
802- "node_modules/@rollup/rollup-freebsd-arm64": {
803- "version": "4.50.1",
804- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz",
805- "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==",
806- "cpu": [
807- "arm64"
808- ],
809- "dev": true,
810- "license": "MIT",
811- "optional": true,
812- "os": [
813- "freebsd"
814- ]
815- },
816- "node_modules/@rollup/rollup-freebsd-x64": {
817- "version": "4.50.1",
818- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz",
819- "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==",
820- "cpu": [
821- "x64"
822- ],
823- "dev": true,
824- "license": "MIT",
825- "optional": true,
826- "os": [
827- "freebsd"
828- ]
829- },
830- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
831- "version": "4.50.1",
832- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz",
833- "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==",
834- "cpu": [
835- "arm"
836- ],
837- "dev": true,
838- "license": "MIT",
839- "optional": true,
840- "os": [
841- "linux"
842- ]
843- },
844- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
845- "version": "4.50.1",
846- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz",
847- "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==",
848- "cpu": [
849- "arm"
850- ],
851- "dev": true,
852- "license": "MIT",
853- "optional": true,
854- "os": [
855- "linux"
856- ]
857- },
858- "node_modules/@rollup/rollup-linux-arm64-gnu": {
859- "version": "4.50.1",
860- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz",
861- "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==",
862- "cpu": [
863- "arm64"
864- ],
865- "dev": true,
866- "license": "MIT",
867- "optional": true,
868- "os": [
869- "linux"
870- ]
871- },
872- "node_modules/@rollup/rollup-linux-arm64-musl": {
873- "version": "4.50.1",
874- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz",
875- "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==",
876- "cpu": [
877- "arm64"
878- ],
879- "dev": true,
880- "license": "MIT",
881- "optional": true,
882- "os": [
883- "linux"
884- ]
885- },
886- "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
887- "version": "4.50.1",
888- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz",
889- "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==",
890- "cpu": [
891- "loong64"
892- ],
893- "dev": true,
894- "license": "MIT",
895- "optional": true,
896- "os": [
897- "linux"
898- ]
899- },
900- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
901- "version": "4.50.1",
902- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz",
903- "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==",
904- "cpu": [
905- "ppc64"
906- ],
907- "dev": true,
908- "license": "MIT",
909- "optional": true,
910- "os": [
911- "linux"
912- ]
913- },
914- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
915- "version": "4.50.1",
916- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz",
917- "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==",
918- "cpu": [
919- "riscv64"
920- ],
921- "dev": true,
922- "license": "MIT",
923- "optional": true,
924- "os": [
925- "linux"
926- ]
927- },
928- "node_modules/@rollup/rollup-linux-riscv64-musl": {
929- "version": "4.50.1",
930- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz",
931- "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==",
932- "cpu": [
933- "riscv64"
934- ],
935- "dev": true,
936- "license": "MIT",
937- "optional": true,
938- "os": [
939- "linux"
940- ]
941- },
942- "node_modules/@rollup/rollup-linux-s390x-gnu": {
943- "version": "4.50.1",
944- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz",
945- "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==",
946- "cpu": [
947- "s390x"
948- ],
949- "dev": true,
950- "license": "MIT",
951- "optional": true,
952- "os": [
953- "linux"
954- ]
955- },
956- "node_modules/@rollup/rollup-linux-x64-gnu": {
957- "version": "4.50.1",
958- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz",
959- "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==",
960- "cpu": [
961- "x64"
962- ],
963- "dev": true,
964- "license": "MIT",
965- "optional": true,
966- "os": [
967- "linux"
968- ]
969- },
970- "node_modules/@rollup/rollup-linux-x64-musl": {
971- "version": "4.50.1",
972- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz",
973- "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==",
974- "cpu": [
975- "x64"
976- ],
977- "dev": true,
978- "license": "MIT",
979- "optional": true,
980- "os": [
981- "linux"
982- ]
983- },
984- "node_modules/@rollup/rollup-openharmony-arm64": {
985- "version": "4.50.1",
986- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz",
987- "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==",
988- "cpu": [
989- "arm64"
990- ],
991- "dev": true,
992- "license": "MIT",
993- "optional": true,
994- "os": [
995- "openharmony"
996- ]
997- },
998- "node_modules/@rollup/rollup-win32-arm64-msvc": {
999- "version": "4.50.1",
1000- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz",
1001- "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==",
1002- "cpu": [
1003- "arm64"
1004- ],
1005- "dev": true,
1006- "license": "MIT",
1007- "optional": true,
1008- "os": [
1009- "win32"
1010- ]
1011- },
1012- "node_modules/@rollup/rollup-win32-ia32-msvc": {
1013- "version": "4.50.1",
1014- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz",
1015- "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==",
1016- "cpu": [
1017- "ia32"
1018- ],
1019- "dev": true,
1020- "license": "MIT",
1021- "optional": true,
1022- "os": [
1023- "win32"
1024- ]
1025- },
1026- "node_modules/@rollup/rollup-win32-x64-msvc": {
1027- "version": "4.50.1",
1028- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz",
1029- "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==",
1030- "cpu": [
1031- "x64"
1032- ],
1033- "dev": true,
1034- "license": "MIT",
1035- "optional": true,
1036- "os": [
1037- "win32"
1038- ]
1039- },
1040- "node_modules/@types/estree": {
1041- "version": "1.0.8",
1042- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
1043- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
1044- "dev": true,
1045- "license": "MIT"
1046- },
1047- "node_modules/@types/node": {
1048- "version": "20.19.13",
1049- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.13.tgz",
1050- "integrity": "sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==",
1051- "dev": true,
1052- "license": "MIT",
1053- "dependencies": {
1054- "undici-types": "~6.21.0"
1055- }
1056- },
1057- "node_modules/@typescript-eslint/eslint-plugin": {
1058- "version": "7.18.0",
1059- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
1060- "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
1061- "dev": true,
1062- "license": "MIT",
1063- "dependencies": {
1064- "@eslint-community/regexpp": "^4.10.0",
1065- "@typescript-eslint/scope-manager": "7.18.0",
1066- "@typescript-eslint/type-utils": "7.18.0",
1067- "@typescript-eslint/utils": "7.18.0",
1068- "@typescript-eslint/visitor-keys": "7.18.0",
1069- "graphemer": "^1.4.0",
1070- "ignore": "^5.3.1",
1071- "natural-compare": "^1.4.0",
1072- "ts-api-utils": "^1.3.0"
1073- },
1074- "engines": {
1075- "node": "^18.18.0 || >=20.0.0"
1076- },
1077- "funding": {
1078- "type": "opencollective",
1079- "url": "https://opencollective.com/typescript-eslint"
1080- },
1081- "peerDependencies": {
1082- "@typescript-eslint/parser": "^7.0.0",
1083- "eslint": "^8.56.0"
1084- },
1085- "peerDependenciesMeta": {
1086- "typescript": {
1087- "optional": true
1088- }
1089- }
1090- },
1091- "node_modules/@typescript-eslint/parser": {
1092- "version": "7.18.0",
1093- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
1094- "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
1095- "dev": true,
1096- "license": "BSD-2-Clause",
1097- "dependencies": {
1098- "@typescript-eslint/scope-manager": "7.18.0",
1099- "@typescript-eslint/types": "7.18.0",
1100- "@typescript-eslint/typescript-estree": "7.18.0",
1101- "@typescript-eslint/visitor-keys": "7.18.0",
1102- "debug": "^4.3.4"
1103- },
1104- "engines": {
1105- "node": "^18.18.0 || >=20.0.0"
1106- },
1107- "funding": {
1108- "type": "opencollective",
1109- "url": "https://opencollective.com/typescript-eslint"
1110- },
1111- "peerDependencies": {
1112- "eslint": "^8.56.0"
1113- },
1114- "peerDependenciesMeta": {
1115- "typescript": {
1116- "optional": true
1117- }
1118- }
1119- },
1120- "node_modules/@typescript-eslint/project-service": {
1121- "version": "8.43.0",
1122- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.43.0.tgz",
1123- "integrity": "sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==",
1124- "dev": true,
1125- "license": "MIT",
1126- "dependencies": {
1127- "@typescript-eslint/tsconfig-utils": "^8.43.0",
1128- "@typescript-eslint/types": "^8.43.0",
1129- "debug": "^4.3.4"
1130- },
1131- "engines": {
1132- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1133- },
1134- "funding": {
1135- "type": "opencollective",
1136- "url": "https://opencollective.com/typescript-eslint"
1137- },
1138- "peerDependencies": {
1139- "typescript": ">=4.8.4 <6.0.0"
1140- }
1141- },
1142- "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": {
1143- "version": "8.43.0",
1144- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz",
1145- "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==",
1146- "dev": true,
1147- "license": "MIT",
1148- "engines": {
1149- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1150- },
1151- "funding": {
1152- "type": "opencollective",
1153- "url": "https://opencollective.com/typescript-eslint"
1154- }
1155- },
1156- "node_modules/@typescript-eslint/scope-manager": {
1157- "version": "7.18.0",
1158- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
1159- "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
1160- "dev": true,
1161- "license": "MIT",
1162- "dependencies": {
1163- "@typescript-eslint/types": "7.18.0",
1164- "@typescript-eslint/visitor-keys": "7.18.0"
1165- },
1166- "engines": {
1167- "node": "^18.18.0 || >=20.0.0"
1168- },
1169- "funding": {
1170- "type": "opencollective",
1171- "url": "https://opencollective.com/typescript-eslint"
1172- }
1173- },
1174- "node_modules/@typescript-eslint/tsconfig-utils": {
1175- "version": "8.43.0",
1176- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.43.0.tgz",
1177- "integrity": "sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==",
1178- "dev": true,
1179- "license": "MIT",
1180- "engines": {
1181- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1182- },
1183- "funding": {
1184- "type": "opencollective",
1185- "url": "https://opencollective.com/typescript-eslint"
1186- },
1187- "peerDependencies": {
1188- "typescript": ">=4.8.4 <6.0.0"
1189- }
1190- },
1191- "node_modules/@typescript-eslint/type-utils": {
1192- "version": "7.18.0",
1193- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
1194- "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
1195- "dev": true,
1196- "license": "MIT",
1197- "dependencies": {
1198- "@typescript-eslint/typescript-estree": "7.18.0",
1199- "@typescript-eslint/utils": "7.18.0",
1200- "debug": "^4.3.4",
1201- "ts-api-utils": "^1.3.0"
1202- },
1203- "engines": {
1204- "node": "^18.18.0 || >=20.0.0"
1205- },
1206- "funding": {
1207- "type": "opencollective",
1208- "url": "https://opencollective.com/typescript-eslint"
1209- },
1210- "peerDependencies": {
1211- "eslint": "^8.56.0"
1212- },
1213- "peerDependenciesMeta": {
1214- "typescript": {
1215- "optional": true
1216- }
1217- }
1218- },
1219- "node_modules/@typescript-eslint/types": {
1220- "version": "7.18.0",
1221- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
1222- "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
1223- "dev": true,
1224- "license": "MIT",
1225- "engines": {
1226- "node": "^18.18.0 || >=20.0.0"
1227- },
1228- "funding": {
1229- "type": "opencollective",
1230- "url": "https://opencollective.com/typescript-eslint"
1231- }
1232- },
1233- "node_modules/@typescript-eslint/typescript-estree": {
1234- "version": "7.18.0",
1235- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
1236- "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
1237- "dev": true,
1238- "license": "BSD-2-Clause",
1239- "dependencies": {
1240- "@typescript-eslint/types": "7.18.0",
1241- "@typescript-eslint/visitor-keys": "7.18.0",
1242- "debug": "^4.3.4",
1243- "globby": "^11.1.0",
1244- "is-glob": "^4.0.3",
1245- "minimatch": "^9.0.4",
1246- "semver": "^7.6.0",
1247- "ts-api-utils": "^1.3.0"
1248- },
1249- "engines": {
1250- "node": "^18.18.0 || >=20.0.0"
1251- },
1252- "funding": {
1253- "type": "opencollective",
1254- "url": "https://opencollective.com/typescript-eslint"
1255- },
1256- "peerDependenciesMeta": {
1257- "typescript": {
1258- "optional": true
1259- }
1260- }
1261- },
1262- "node_modules/@typescript-eslint/utils": {
1263- "version": "7.18.0",
1264- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
1265- "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
1266- "dev": true,
1267- "license": "MIT",
1268- "dependencies": {
1269- "@eslint-community/eslint-utils": "^4.4.0",
1270- "@typescript-eslint/scope-manager": "7.18.0",
1271- "@typescript-eslint/types": "7.18.0",
1272- "@typescript-eslint/typescript-estree": "7.18.0"
1273- },
1274- "engines": {
1275- "node": "^18.18.0 || >=20.0.0"
1276- },
1277- "funding": {
1278- "type": "opencollective",
1279- "url": "https://opencollective.com/typescript-eslint"
1280- },
1281- "peerDependencies": {
1282- "eslint": "^8.56.0"
1283- }
1284- },
1285- "node_modules/@typescript-eslint/visitor-keys": {
1286- "version": "7.18.0",
1287- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
1288- "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
1289- "dev": true,
1290- "license": "MIT",
1291- "dependencies": {
1292- "@typescript-eslint/types": "7.18.0",
1293- "eslint-visitor-keys": "^3.4.3"
1294- },
1295- "engines": {
1296- "node": "^18.18.0 || >=20.0.0"
1297- },
1298- "funding": {
1299- "type": "opencollective",
1300- "url": "https://opencollective.com/typescript-eslint"
1301- }
1302- },
1303- "node_modules/@ungap/structured-clone": {
1304- "version": "1.3.0",
1305- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
1306- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
1307- "dev": true,
1308- "license": "ISC"
1309- },
1310- "node_modules/acorn": {
1311- "version": "8.15.0",
1312- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
1313- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
1314- "dev": true,
1315- "license": "MIT",
1316- "bin": {
1317- "acorn": "bin/acorn"
1318- },
1319- "engines": {
1320- "node": ">=0.4.0"
1321- }
1322- },
1323- "node_modules/acorn-jsx": {
1324- "version": "5.3.2",
1325- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1326- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1327- "dev": true,
1328- "license": "MIT",
1329- "peerDependencies": {
1330- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
1331- }
1332- },
1333- "node_modules/ajv": {
1334- "version": "6.12.6",
1335- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1336- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1337- "dev": true,
1338- "license": "MIT",
1339- "dependencies": {
1340- "fast-deep-equal": "^3.1.1",
1341- "fast-json-stable-stringify": "^2.0.0",
1342- "json-schema-traverse": "^0.4.1",
1343- "uri-js": "^4.2.2"
1344- },
1345- "funding": {
1346- "type": "github",
1347- "url": "https://github.com/sponsors/epoberezkin"
1348- }
1349- },
1350- "node_modules/ansi-regex": {
1351- "version": "5.0.1",
1352- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1353- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1354- "dev": true,
1355- "license": "MIT",
1356- "engines": {
1357- "node": ">=8"
1358- }
1359- },
1360- "node_modules/ansi-styles": {
1361- "version": "4.3.0",
1362- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1363- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1364- "dev": true,
1365- "license": "MIT",
1366- "dependencies": {
1367- "color-convert": "^2.0.1"
1368- },
1369- "engines": {
1370- "node": ">=8"
1371- },
1372- "funding": {
1373- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1374- }
1375- },
1376- "node_modules/any-promise": {
1377- "version": "1.3.0",
1378- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
1379- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
1380- "dev": true,
1381- "license": "MIT"
1382- },
1383- "node_modules/argparse": {
1384- "version": "2.0.1",
1385- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1386- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1387- "dev": true,
1388- "license": "Python-2.0"
1389- },
1390- "node_modules/array-union": {
1391- "version": "2.1.0",
1392- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
1393- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
1394- "dev": true,
1395- "license": "MIT",
1396- "engines": {
1397- "node": ">=8"
1398- }
1399- },
1400- "node_modules/balanced-match": {
1401- "version": "1.0.2",
1402- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1403- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1404- "dev": true,
1405- "license": "MIT"
1406- },
1407- "node_modules/brace-expansion": {
1408- "version": "2.0.2",
1409- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1410- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1411- "dev": true,
1412- "license": "MIT",
1413- "dependencies": {
1414- "balanced-match": "^1.0.0"
1415- }
1416- },
1417- "node_modules/braces": {
1418- "version": "3.0.3",
1419- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1420- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1421- "dev": true,
1422- "license": "MIT",
1423- "dependencies": {
1424- "fill-range": "^7.1.1"
1425- },
1426- "engines": {
1427- "node": ">=8"
1428- }
1429- },
1430- "node_modules/bundle-require": {
1431- "version": "5.1.0",
1432- "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz",
1433- "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==",
1434- "dev": true,
1435- "license": "MIT",
1436- "dependencies": {
1437- "load-tsconfig": "^0.2.3"
1438- },
1439- "engines": {
1440- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1441- },
1442- "peerDependencies": {
1443- "esbuild": ">=0.18"
1444- }
1445- },
1446- "node_modules/cac": {
1447- "version": "6.7.14",
1448- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
1449- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
1450- "dev": true,
1451- "license": "MIT",
1452- "engines": {
1453- "node": ">=8"
1454- }
1455- },
1456- "node_modules/callsites": {
1457- "version": "3.1.0",
1458- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1459- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1460- "dev": true,
1461- "license": "MIT",
1462- "engines": {
1463- "node": ">=6"
1464- }
1465- },
1466- "node_modules/chalk": {
1467- "version": "4.1.2",
1468- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1469- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1470- "dev": true,
1471- "license": "MIT",
1472- "dependencies": {
1473- "ansi-styles": "^4.1.0",
1474- "supports-color": "^7.1.0"
1475- },
1476- "engines": {
1477- "node": ">=10"
1478- },
1479- "funding": {
1480- "url": "https://github.com/chalk/chalk?sponsor=1"
1481- }
1482- },
1483- "node_modules/chokidar": {
1484- "version": "4.0.3",
1485- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
1486- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
1487- "dev": true,
1488- "license": "MIT",
1489- "dependencies": {
1490- "readdirp": "^4.0.1"
1491- },
1492- "engines": {
1493- "node": ">= 14.16.0"
1494- },
1495- "funding": {
1496- "url": "https://paulmillr.com/funding/"
1497- }
1498- },
1499- "node_modules/color-convert": {
1500- "version": "2.0.1",
1501- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1502- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1503- "dev": true,
1504- "license": "MIT",
1505- "dependencies": {
1506- "color-name": "~1.1.4"
1507- },
1508- "engines": {
1509- "node": ">=7.0.0"
1510- }
1511- },
1512- "node_modules/color-name": {
1513- "version": "1.1.4",
1514- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1515- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1516- "dev": true,
1517- "license": "MIT"
1518- },
1519- "node_modules/commander": {
1520- "version": "4.1.1",
1521- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1522- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1523- "dev": true,
1524- "license": "MIT",
1525- "engines": {
1526- "node": ">= 6"
1527- }
1528- },
1529- "node_modules/concat-map": {
1530- "version": "0.0.1",
1531- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1532- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1533- "dev": true,
1534- "license": "MIT"
1535- },
1536- "node_modules/confbox": {
1537- "version": "0.1.8",
1538- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
1539- "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
1540- "dev": true,
1541- "license": "MIT"
1542- },
1543- "node_modules/consola": {
1544- "version": "3.4.2",
1545- "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
1546- "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
1547- "dev": true,
1548- "license": "MIT",
1549- "engines": {
1550- "node": "^14.18.0 || >=16.10.0"
1551- }
1552- },
1553- "node_modules/cross-spawn": {
1554- "version": "7.0.6",
1555- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1556- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1557- "dev": true,
1558- "license": "MIT",
1559- "dependencies": {
1560- "path-key": "^3.1.0",
1561- "shebang-command": "^2.0.0",
1562- "which": "^2.0.1"
1563- },
1564- "engines": {
1565- "node": ">= 8"
1566- }
1567- },
1568- "node_modules/debug": {
1569- "version": "4.4.1",
1570- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
1571- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
1572- "dev": true,
1573- "license": "MIT",
1574- "dependencies": {
1575- "ms": "^2.1.3"
1576- },
1577- "engines": {
1578- "node": ">=6.0"
1579- },
1580- "peerDependenciesMeta": {
1581- "supports-color": {
1582- "optional": true
1583- }
1584- }
1585- },
1586- "node_modules/deep-is": {
1587- "version": "0.1.4",
1588- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1589- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1590- "dev": true,
1591- "license": "MIT"
1592- },
1593- "node_modules/dir-glob": {
1594- "version": "3.0.1",
1595- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
1596- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
1597- "dev": true,
1598- "license": "MIT",
1599- "dependencies": {
1600- "path-type": "^4.0.0"
1601- },
1602- "engines": {
1603- "node": ">=8"
1604- }
1605- },
1606- "node_modules/doctrine": {
1607- "version": "3.0.0",
1608- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1609- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1610- "dev": true,
1611- "license": "Apache-2.0",
1612- "dependencies": {
1613- "esutils": "^2.0.2"
1614- },
1615- "engines": {
1616- "node": ">=6.0.0"
1617- }
1618- },
1619- "node_modules/eastasianwidth": {
1620- "version": "0.2.0",
1621- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1622- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1623- "dev": true,
1624- "license": "MIT"
1625- },
1626- "node_modules/emoji-regex": {
1627- "version": "9.2.2",
1628- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1629- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1630- "dev": true,
1631- "license": "MIT"
1632- },
1633- "node_modules/esbuild": {
1634- "version": "0.25.9",
1635- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
1636- "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
1637- "dev": true,
1638- "hasInstallScript": true,
1639- "license": "MIT",
1640- "bin": {
1641- "esbuild": "bin/esbuild"
1642- },
1643- "engines": {
1644- "node": ">=18"
1645- },
1646- "optionalDependencies": {
1647- "@esbuild/aix-ppc64": "0.25.9",
1648- "@esbuild/android-arm": "0.25.9",
1649- "@esbuild/android-arm64": "0.25.9",
1650- "@esbuild/android-x64": "0.25.9",
1651- "@esbuild/darwin-arm64": "0.25.9",
1652- "@esbuild/darwin-x64": "0.25.9",
1653- "@esbuild/freebsd-arm64": "0.25.9",
1654- "@esbuild/freebsd-x64": "0.25.9",
1655- "@esbuild/linux-arm": "0.25.9",
1656- "@esbuild/linux-arm64": "0.25.9",
1657- "@esbuild/linux-ia32": "0.25.9",
1658- "@esbuild/linux-loong64": "0.25.9",
1659- "@esbuild/linux-mips64el": "0.25.9",
1660- "@esbuild/linux-ppc64": "0.25.9",
1661- "@esbuild/linux-riscv64": "0.25.9",
1662- "@esbuild/linux-s390x": "0.25.9",
1663- "@esbuild/linux-x64": "0.25.9",
1664- "@esbuild/netbsd-arm64": "0.25.9",
1665- "@esbuild/netbsd-x64": "0.25.9",
1666- "@esbuild/openbsd-arm64": "0.25.9",
1667- "@esbuild/openbsd-x64": "0.25.9",
1668- "@esbuild/openharmony-arm64": "0.25.9",
1669- "@esbuild/sunos-x64": "0.25.9",
1670- "@esbuild/win32-arm64": "0.25.9",
1671- "@esbuild/win32-ia32": "0.25.9",
1672- "@esbuild/win32-x64": "0.25.9"
1673- }
1674- },
1675- "node_modules/escape-string-regexp": {
1676- "version": "4.0.0",
1677- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1678- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1679- "dev": true,
1680- "license": "MIT",
1681- "engines": {
1682- "node": ">=10"
1683- },
1684- "funding": {
1685- "url": "https://github.com/sponsors/sindresorhus"
1686- }
1687- },
1688- "node_modules/eslint": {
1689- "version": "8.57.1",
1690- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
1691- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
1692- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
1693- "dev": true,
1694- "license": "MIT",
1695- "dependencies": {
1696- "@eslint-community/eslint-utils": "^4.2.0",
1697- "@eslint-community/regexpp": "^4.6.1",
1698- "@eslint/eslintrc": "^2.1.4",
1699- "@eslint/js": "8.57.1",
1700- "@humanwhocodes/config-array": "^0.13.0",
1701- "@humanwhocodes/module-importer": "^1.0.1",
1702- "@nodelib/fs.walk": "^1.2.8",
1703- "@ungap/structured-clone": "^1.2.0",
1704- "ajv": "^6.12.4",
1705- "chalk": "^4.0.0",
1706- "cross-spawn": "^7.0.2",
1707- "debug": "^4.3.2",
1708- "doctrine": "^3.0.0",
1709- "escape-string-regexp": "^4.0.0",
1710- "eslint-scope": "^7.2.2",
1711- "eslint-visitor-keys": "^3.4.3",
1712- "espree": "^9.6.1",
1713- "esquery": "^1.4.2",
1714- "esutils": "^2.0.2",
1715- "fast-deep-equal": "^3.1.3",
1716- "file-entry-cache": "^6.0.1",
1717- "find-up": "^5.0.0",
1718- "glob-parent": "^6.0.2",
1719- "globals": "^13.19.0",
1720- "graphemer": "^1.4.0",
1721- "ignore": "^5.2.0",
1722- "imurmurhash": "^0.1.4",
1723- "is-glob": "^4.0.0",
1724- "is-path-inside": "^3.0.3",
1725- "js-yaml": "^4.1.0",
1726- "json-stable-stringify-without-jsonify": "^1.0.1",
1727- "levn": "^0.4.1",
1728- "lodash.merge": "^4.6.2",
1729- "minimatch": "^3.1.2",
1730- "natural-compare": "^1.4.0",
1731- "optionator": "^0.9.3",
1732- "strip-ansi": "^6.0.1",
1733- "text-table": "^0.2.0"
1734- },
1735- "bin": {
1736- "eslint": "bin/eslint.js"
1737- },
1738- "engines": {
1739- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1740- },
1741- "funding": {
1742- "url": "https://opencollective.com/eslint"
1743- }
1744- },
1745- "node_modules/eslint-scope": {
1746- "version": "7.2.2",
1747- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
1748- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
1749- "dev": true,
1750- "license": "BSD-2-Clause",
1751- "dependencies": {
1752- "esrecurse": "^4.3.0",
1753- "estraverse": "^5.2.0"
1754- },
1755- "engines": {
1756- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1757- },
1758- "funding": {
1759- "url": "https://opencollective.com/eslint"
1760- }
1761- },
1762- "node_modules/eslint-visitor-keys": {
1763- "version": "3.4.3",
1764- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
1765- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
1766- "dev": true,
1767- "license": "Apache-2.0",
1768- "engines": {
1769- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1770- },
1771- "funding": {
1772- "url": "https://opencollective.com/eslint"
1773- }
1774- },
1775- "node_modules/eslint/node_modules/brace-expansion": {
1776- "version": "1.1.12",
1777- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
1778- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
1779- "dev": true,
1780- "license": "MIT",
1781- "dependencies": {
1782- "balanced-match": "^1.0.0",
1783- "concat-map": "0.0.1"
1784- }
1785- },
1786- "node_modules/eslint/node_modules/minimatch": {
1787- "version": "3.1.2",
1788- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1789- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1790- "dev": true,
1791- "license": "ISC",
1792- "dependencies": {
1793- "brace-expansion": "^1.1.7"
1794- },
1795- "engines": {
1796- "node": "*"
1797- }
1798- },
1799- "node_modules/espree": {
1800- "version": "9.6.1",
1801- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
1802- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
1803- "dev": true,
1804- "license": "BSD-2-Clause",
1805- "dependencies": {
1806- "acorn": "^8.9.0",
1807- "acorn-jsx": "^5.3.2",
1808- "eslint-visitor-keys": "^3.4.1"
1809- },
1810- "engines": {
1811- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1812- },
1813- "funding": {
1814- "url": "https://opencollective.com/eslint"
1815- }
1816- },
1817- "node_modules/esquery": {
1818- "version": "1.6.0",
1819- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
1820- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
1821- "dev": true,
1822- "license": "BSD-3-Clause",
1823- "dependencies": {
1824- "estraverse": "^5.1.0"
1825- },
1826- "engines": {
1827- "node": ">=0.10"
1828- }
1829- },
1830- "node_modules/esrecurse": {
1831- "version": "4.3.0",
1832- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1833- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1834- "dev": true,
1835- "license": "BSD-2-Clause",
1836- "dependencies": {
1837- "estraverse": "^5.2.0"
1838- },
1839- "engines": {
1840- "node": ">=4.0"
1841- }
1842- },
1843- "node_modules/estraverse": {
1844- "version": "5.3.0",
1845- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1846- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1847- "dev": true,
1848- "license": "BSD-2-Clause",
1849- "engines": {
1850- "node": ">=4.0"
1851- }
1852- },
1853- "node_modules/esutils": {
1854- "version": "2.0.3",
1855- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1856- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1857- "dev": true,
1858- "license": "BSD-2-Clause",
1859- "engines": {
1860- "node": ">=0.10.0"
1861- }
1862- },
1863- "node_modules/fast-deep-equal": {
1864- "version": "3.1.3",
1865- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1866- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1867- "dev": true,
1868- "license": "MIT"
1869- },
1870- "node_modules/fast-glob": {
1871- "version": "3.3.3",
1872- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
1873- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1874- "dev": true,
1875- "license": "MIT",
1876- "dependencies": {
1877- "@nodelib/fs.stat": "^2.0.2",
1878- "@nodelib/fs.walk": "^1.2.3",
1879- "glob-parent": "^5.1.2",
1880- "merge2": "^1.3.0",
1881- "micromatch": "^4.0.8"
1882- },
1883- "engines": {
1884- "node": ">=8.6.0"
1885- }
1886- },
1887- "node_modules/fast-glob/node_modules/glob-parent": {
1888- "version": "5.1.2",
1889- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1890- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1891- "dev": true,
1892- "license": "ISC",
1893- "dependencies": {
1894- "is-glob": "^4.0.1"
1895- },
1896- "engines": {
1897- "node": ">= 6"
1898- }
1899- },
1900- "node_modules/fast-json-stable-stringify": {
1901- "version": "2.1.0",
1902- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1903- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1904- "dev": true,
1905- "license": "MIT"
1906- },
1907- "node_modules/fast-levenshtein": {
1908- "version": "2.0.6",
1909- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1910- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
1911- "dev": true,
1912- "license": "MIT"
1913- },
1914- "node_modules/fastq": {
1915- "version": "1.19.1",
1916- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
1917- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
1918- "dev": true,
1919- "license": "ISC",
1920- "dependencies": {
1921- "reusify": "^1.0.4"
1922- }
1923- },
1924- "node_modules/file-entry-cache": {
1925- "version": "6.0.1",
1926- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1927- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1928- "dev": true,
1929- "license": "MIT",
1930- "dependencies": {
1931- "flat-cache": "^3.0.4"
1932- },
1933- "engines": {
1934- "node": "^10.12.0 || >=12.0.0"
1935- }
1936- },
1937- "node_modules/fill-range": {
1938- "version": "7.1.1",
1939- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1940- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1941- "dev": true,
1942- "license": "MIT",
1943- "dependencies": {
1944- "to-regex-range": "^5.0.1"
1945- },
1946- "engines": {
1947- "node": ">=8"
1948- }
1949- },
1950- "node_modules/find-up": {
1951- "version": "5.0.0",
1952- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1953- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1954- "dev": true,
1955- "license": "MIT",
1956- "dependencies": {
1957- "locate-path": "^6.0.0",
1958- "path-exists": "^4.0.0"
1959- },
1960- "engines": {
1961- "node": ">=10"
1962- },
1963- "funding": {
1964- "url": "https://github.com/sponsors/sindresorhus"
1965- }
1966- },
1967- "node_modules/fix-dts-default-cjs-exports": {
1968- "version": "1.0.1",
1969- "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz",
1970- "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==",
1971- "dev": true,
1972- "license": "MIT",
1973- "dependencies": {
1974- "magic-string": "^0.30.17",
1975- "mlly": "^1.7.4",
1976- "rollup": "^4.34.8"
1977- }
1978- },
1979- "node_modules/flat-cache": {
1980- "version": "3.2.0",
1981- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
1982- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
1983- "dev": true,
1984- "license": "MIT",
1985- "dependencies": {
1986- "flatted": "^3.2.9",
1987- "keyv": "^4.5.3",
1988- "rimraf": "^3.0.2"
1989- },
1990- "engines": {
1991- "node": "^10.12.0 || >=12.0.0"
1992- }
1993- },
1994- "node_modules/flatted": {
1995- "version": "3.3.3",
1996- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
1997- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
1998- "dev": true,
1999- "license": "ISC"
2000- },
2001- "node_modules/foreground-child": {
2002- "version": "3.3.1",
2003- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
2004- "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
2005- "dev": true,
2006- "license": "ISC",
2007- "dependencies": {
2008- "cross-spawn": "^7.0.6",
2009- "signal-exit": "^4.0.1"
2010- },
2011- "engines": {
2012- "node": ">=14"
2013- },
2014- "funding": {
2015- "url": "https://github.com/sponsors/isaacs"
2016- }
2017- },
2018- "node_modules/fs.realpath": {
2019- "version": "1.0.0",
2020- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2021- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
2022- "dev": true,
2023- "license": "ISC"
2024- },
2025- "node_modules/fsevents": {
2026- "version": "2.3.3",
2027- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2028- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2029- "dev": true,
2030- "hasInstallScript": true,
2031- "license": "MIT",
2032- "optional": true,
2033- "os": [
2034- "darwin"
2035- ],
2036- "engines": {
2037- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
2038- }
2039- },
2040- "node_modules/glob": {
2041- "version": "7.2.3",
2042- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2043- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2044- "deprecated": "Glob versions prior to v9 are no longer supported",
2045- "dev": true,
2046- "license": "ISC",
2047- "dependencies": {
2048- "fs.realpath": "^1.0.0",
2049- "inflight": "^1.0.4",
2050- "inherits": "2",
2051- "minimatch": "^3.1.1",
2052- "once": "^1.3.0",
2053- "path-is-absolute": "^1.0.0"
2054- },
2055- "engines": {
2056- "node": "*"
2057- },
2058- "funding": {
2059- "url": "https://github.com/sponsors/isaacs"
2060- }
2061- },
2062- "node_modules/glob-parent": {
2063- "version": "6.0.2",
2064- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2065- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2066- "dev": true,
2067- "license": "ISC",
2068- "dependencies": {
2069- "is-glob": "^4.0.3"
2070- },
2071- "engines": {
2072- "node": ">=10.13.0"
2073- }
2074- },
2075- "node_modules/glob/node_modules/brace-expansion": {
2076- "version": "1.1.12",
2077- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
2078- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
2079- "dev": true,
2080- "license": "MIT",
2081- "dependencies": {
2082- "balanced-match": "^1.0.0",
2083- "concat-map": "0.0.1"
2084- }
2085- },
2086- "node_modules/glob/node_modules/minimatch": {
2087- "version": "3.1.2",
2088- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2089- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2090- "dev": true,
2091- "license": "ISC",
2092- "dependencies": {
2093- "brace-expansion": "^1.1.7"
2094- },
2095- "engines": {
2096- "node": "*"
2097- }
2098- },
2099- "node_modules/globals": {
2100- "version": "13.24.0",
2101- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
2102- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
2103- "dev": true,
2104- "license": "MIT",
2105- "dependencies": {
2106- "type-fest": "^0.20.2"
2107- },
2108- "engines": {
2109- "node": ">=8"
2110- },
2111- "funding": {
2112- "url": "https://github.com/sponsors/sindresorhus"
2113- }
2114- },
2115- "node_modules/globby": {
2116- "version": "11.1.0",
2117- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
2118- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
2119- "dev": true,
2120- "license": "MIT",
2121- "dependencies": {
2122- "array-union": "^2.1.0",
2123- "dir-glob": "^3.0.1",
2124- "fast-glob": "^3.2.9",
2125- "ignore": "^5.2.0",
2126- "merge2": "^1.4.1",
2127- "slash": "^3.0.0"
2128- },
2129- "engines": {
2130- "node": ">=10"
2131- },
2132- "funding": {
2133- "url": "https://github.com/sponsors/sindresorhus"
2134- }
2135- },
2136- "node_modules/graphemer": {
2137- "version": "1.4.0",
2138- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
2139- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
2140- "dev": true,
2141- "license": "MIT"
2142- },
2143- "node_modules/has-flag": {
2144- "version": "4.0.0",
2145- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2146- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2147- "dev": true,
2148- "license": "MIT",
2149- "engines": {
2150- "node": ">=8"
2151- }
2152- },
2153- "node_modules/ignore": {
2154- "version": "5.3.2",
2155- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
2156- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
2157- "dev": true,
2158- "license": "MIT",
2159- "engines": {
2160- "node": ">= 4"
2161- }
2162- },
2163- "node_modules/import-fresh": {
2164- "version": "3.3.1",
2165- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
2166- "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
2167- "dev": true,
2168- "license": "MIT",
2169- "dependencies": {
2170- "parent-module": "^1.0.0",
2171- "resolve-from": "^4.0.0"
2172- },
2173- "engines": {
2174- "node": ">=6"
2175- },
2176- "funding": {
2177- "url": "https://github.com/sponsors/sindresorhus"
2178- }
2179- },
2180- "node_modules/imurmurhash": {
2181- "version": "0.1.4",
2182- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2183- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2184- "dev": true,
2185- "license": "MIT",
2186- "engines": {
2187- "node": ">=0.8.19"
2188- }
2189- },
2190- "node_modules/inflight": {
2191- "version": "1.0.6",
2192- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2193- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
2194- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
2195- "dev": true,
2196- "license": "ISC",
2197- "dependencies": {
2198- "once": "^1.3.0",
2199- "wrappy": "1"
2200- }
2201- },
2202- "node_modules/inherits": {
2203- "version": "2.0.4",
2204- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2205- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2206- "dev": true,
2207- "license": "ISC"
2208- },
2209- "node_modules/is-extglob": {
2210- "version": "2.1.1",
2211- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2212- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2213- "dev": true,
2214- "license": "MIT",
2215- "engines": {
2216- "node": ">=0.10.0"
2217- }
2218- },
2219- "node_modules/is-fullwidth-code-point": {
2220- "version": "3.0.0",
2221- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
2222- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
2223- "dev": true,
2224- "license": "MIT",
2225- "engines": {
2226- "node": ">=8"
2227- }
2228- },
2229- "node_modules/is-glob": {
2230- "version": "4.0.3",
2231- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2232- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2233- "dev": true,
2234- "license": "MIT",
2235- "dependencies": {
2236- "is-extglob": "^2.1.1"
2237- },
2238- "engines": {
2239- "node": ">=0.10.0"
2240- }
2241- },
2242- "node_modules/is-number": {
2243- "version": "7.0.0",
2244- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2245- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2246- "dev": true,
2247- "license": "MIT",
2248- "engines": {
2249- "node": ">=0.12.0"
2250- }
2251- },
2252- "node_modules/is-path-inside": {
2253- "version": "3.0.3",
2254- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
2255- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
2256- "dev": true,
2257- "license": "MIT",
2258- "engines": {
2259- "node": ">=8"
2260- }
2261- },
2262- "node_modules/isexe": {
2263- "version": "2.0.0",
2264- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2265- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2266- "dev": true,
2267- "license": "ISC"
2268- },
2269- "node_modules/jackspeak": {
2270- "version": "3.4.3",
2271- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
2272- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
2273- "dev": true,
2274- "license": "BlueOak-1.0.0",
2275- "dependencies": {
2276- "@isaacs/cliui": "^8.0.2"
2277- },
2278- "funding": {
2279- "url": "https://github.com/sponsors/isaacs"
2280- },
2281- "optionalDependencies": {
2282- "@pkgjs/parseargs": "^0.11.0"
2283- }
2284- },
2285- "node_modules/joycon": {
2286- "version": "3.1.1",
2287- "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
2288- "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
2289- "dev": true,
2290- "license": "MIT",
2291- "engines": {
2292- "node": ">=10"
2293- }
2294- },
2295- "node_modules/js-yaml": {
2296- "version": "4.1.0",
2297- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2298- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2299- "dev": true,
2300- "license": "MIT",
2301- "dependencies": {
2302- "argparse": "^2.0.1"
2303- },
2304- "bin": {
2305- "js-yaml": "bin/js-yaml.js"
2306- }
2307- },
2308- "node_modules/json-buffer": {
2309- "version": "3.0.1",
2310- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
2311- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
2312- "dev": true,
2313- "license": "MIT"
2314- },
2315- "node_modules/json-schema-traverse": {
2316- "version": "0.4.1",
2317- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2318- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2319- "dev": true,
2320- "license": "MIT"
2321- },
2322- "node_modules/json-stable-stringify-without-jsonify": {
2323- "version": "1.0.1",
2324- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2325- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
2326- "dev": true,
2327- "license": "MIT"
2328- },
2329- "node_modules/keyv": {
2330- "version": "4.5.4",
2331- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
2332- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
2333- "dev": true,
2334- "license": "MIT",
2335- "dependencies": {
2336- "json-buffer": "3.0.1"
2337- }
2338- },
2339- "node_modules/levn": {
2340- "version": "0.4.1",
2341- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2342- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2343- "dev": true,
2344- "license": "MIT",
2345- "dependencies": {
2346- "prelude-ls": "^1.2.1",
2347- "type-check": "~0.4.0"
2348- },
2349- "engines": {
2350- "node": ">= 0.8.0"
2351- }
2352- },
2353- "node_modules/lilconfig": {
2354- "version": "3.1.3",
2355- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
2356- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
2357- "dev": true,
2358- "license": "MIT",
2359- "engines": {
2360- "node": ">=14"
2361- },
2362- "funding": {
2363- "url": "https://github.com/sponsors/antonk52"
2364- }
2365- },
2366- "node_modules/lines-and-columns": {
2367- "version": "1.2.4",
2368- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
2369- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
2370- "dev": true,
2371- "license": "MIT"
2372- },
2373- "node_modules/load-tsconfig": {
2374- "version": "0.2.5",
2375- "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
2376- "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
2377- "dev": true,
2378- "license": "MIT",
2379- "engines": {
2380- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2381- }
2382- },
2383- "node_modules/locate-path": {
2384- "version": "6.0.0",
2385- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2386- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2387- "dev": true,
2388- "license": "MIT",
2389- "dependencies": {
2390- "p-locate": "^5.0.0"
2391- },
2392- "engines": {
2393- "node": ">=10"
2394- },
2395- "funding": {
2396- "url": "https://github.com/sponsors/sindresorhus"
2397- }
2398- },
2399- "node_modules/lodash.merge": {
2400- "version": "4.6.2",
2401- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2402- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2403- "dev": true,
2404- "license": "MIT"
2405- },
2406- "node_modules/lodash.sortby": {
2407- "version": "4.7.0",
2408- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
2409- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
2410- "dev": true,
2411- "license": "MIT"
2412- },
2413- "node_modules/lru-cache": {
2414- "version": "10.4.3",
2415- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
2416- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
2417- "dev": true,
2418- "license": "ISC"
2419- },
2420- "node_modules/magic-string": {
2421- "version": "0.30.19",
2422- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
2423- "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
2424- "dev": true,
2425- "license": "MIT",
2426- "dependencies": {
2427- "@jridgewell/sourcemap-codec": "^1.5.5"
2428- }
2429- },
2430- "node_modules/merge2": {
2431- "version": "1.4.1",
2432- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2433- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2434- "dev": true,
2435- "license": "MIT",
2436- "engines": {
2437- "node": ">= 8"
2438- }
2439- },
2440- "node_modules/micromatch": {
2441- "version": "4.0.8",
2442- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
2443- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2444- "dev": true,
2445- "license": "MIT",
2446- "dependencies": {
2447- "braces": "^3.0.3",
2448- "picomatch": "^2.3.1"
2449- },
2450- "engines": {
2451- "node": ">=8.6"
2452- }
2453- },
2454- "node_modules/minimatch": {
2455- "version": "9.0.5",
2456- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2457- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2458- "dev": true,
2459- "license": "ISC",
2460- "dependencies": {
2461- "brace-expansion": "^2.0.1"
2462- },
2463- "engines": {
2464- "node": ">=16 || 14 >=14.17"
2465- },
2466- "funding": {
2467- "url": "https://github.com/sponsors/isaacs"
2468- }
2469- },
2470- "node_modules/minipass": {
2471- "version": "7.1.2",
2472- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
2473- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
2474- "dev": true,
2475- "license": "ISC",
2476- "engines": {
2477- "node": ">=16 || 14 >=14.17"
2478- }
2479- },
2480- "node_modules/mlly": {
2481- "version": "1.8.0",
2482- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
2483- "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==",
2484- "dev": true,
2485- "license": "MIT",
2486- "dependencies": {
2487- "acorn": "^8.15.0",
2488- "pathe": "^2.0.3",
2489- "pkg-types": "^1.3.1",
2490- "ufo": "^1.6.1"
2491- }
2492- },
2493- "node_modules/ms": {
2494- "version": "2.1.3",
2495- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2496- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2497- "dev": true,
2498- "license": "MIT"
2499- },
2500- "node_modules/mz": {
2501- "version": "2.7.0",
2502- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
2503- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
2504- "dev": true,
2505- "license": "MIT",
2506- "dependencies": {
2507- "any-promise": "^1.0.0",
2508- "object-assign": "^4.0.1",
2509- "thenify-all": "^1.0.0"
2510- }
2511- },
2512- "node_modules/natural-compare": {
2513- "version": "1.4.0",
2514- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2515- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
2516- "dev": true,
2517- "license": "MIT"
2518- },
2519- "node_modules/object-assign": {
2520- "version": "4.1.1",
2521- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2522- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2523- "dev": true,
2524- "license": "MIT",
2525- "engines": {
2526- "node": ">=0.10.0"
2527- }
2528- },
2529- "node_modules/once": {
2530- "version": "1.4.0",
2531- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2532- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2533- "dev": true,
2534- "license": "ISC",
2535- "dependencies": {
2536- "wrappy": "1"
2537- }
2538- },
2539- "node_modules/optionator": {
2540- "version": "0.9.4",
2541- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
2542- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
2543- "dev": true,
2544- "license": "MIT",
2545- "dependencies": {
2546- "deep-is": "^0.1.3",
2547- "fast-levenshtein": "^2.0.6",
2548- "levn": "^0.4.1",
2549- "prelude-ls": "^1.2.1",
2550- "type-check": "^0.4.0",
2551- "word-wrap": "^1.2.5"
2552- },
2553- "engines": {
2554- "node": ">= 0.8.0"
2555- }
2556- },
2557- "node_modules/p-limit": {
2558- "version": "3.1.0",
2559- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2560- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2561- "dev": true,
2562- "license": "MIT",
2563- "dependencies": {
2564- "yocto-queue": "^0.1.0"
2565- },
2566- "engines": {
2567- "node": ">=10"
2568- },
2569- "funding": {
2570- "url": "https://github.com/sponsors/sindresorhus"
2571- }
2572- },
2573- "node_modules/p-locate": {
2574- "version": "5.0.0",
2575- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2576- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2577- "dev": true,
2578- "license": "MIT",
2579- "dependencies": {
2580- "p-limit": "^3.0.2"
2581- },
2582- "engines": {
2583- "node": ">=10"
2584- },
2585- "funding": {
2586- "url": "https://github.com/sponsors/sindresorhus"
2587- }
2588- },
2589- "node_modules/package-json-from-dist": {
2590- "version": "1.0.1",
2591- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
2592- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
2593- "dev": true,
2594- "license": "BlueOak-1.0.0"
2595- },
2596- "node_modules/parent-module": {
2597- "version": "1.0.1",
2598- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2599- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2600- "dev": true,
2601- "license": "MIT",
2602- "dependencies": {
2603- "callsites": "^3.0.0"
2604- },
2605- "engines": {
2606- "node": ">=6"
2607- }
2608- },
2609- "node_modules/path-exists": {
2610- "version": "4.0.0",
2611- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2612- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2613- "dev": true,
2614- "license": "MIT",
2615- "engines": {
2616- "node": ">=8"
2617- }
2618- },
2619- "node_modules/path-is-absolute": {
2620- "version": "1.0.1",
2621- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2622- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2623- "dev": true,
2624- "license": "MIT",
2625- "engines": {
2626- "node": ">=0.10.0"
2627- }
2628- },
2629- "node_modules/path-key": {
2630- "version": "3.1.1",
2631- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2632- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2633- "dev": true,
2634- "license": "MIT",
2635- "engines": {
2636- "node": ">=8"
2637- }
2638- },
2639- "node_modules/path-scurry": {
2640- "version": "1.11.1",
2641- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
2642- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
2643- "dev": true,
2644- "license": "BlueOak-1.0.0",
2645- "dependencies": {
2646- "lru-cache": "^10.2.0",
2647- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
2648- },
2649- "engines": {
2650- "node": ">=16 || 14 >=14.18"
2651- },
2652- "funding": {
2653- "url": "https://github.com/sponsors/isaacs"
2654- }
2655- },
2656- "node_modules/path-type": {
2657- "version": "4.0.0",
2658- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2659- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
2660- "dev": true,
2661- "license": "MIT",
2662- "engines": {
2663- "node": ">=8"
2664- }
2665- },
2666- "node_modules/pathe": {
2667- "version": "2.0.3",
2668- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
2669- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
2670- "dev": true,
2671- "license": "MIT"
2672- },
2673- "node_modules/picocolors": {
2674- "version": "1.1.1",
2675- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
2676- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
2677- "dev": true,
2678- "license": "ISC"
2679- },
2680- "node_modules/picomatch": {
2681- "version": "2.3.1",
2682- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2683- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2684- "dev": true,
2685- "license": "MIT",
2686- "engines": {
2687- "node": ">=8.6"
2688- },
2689- "funding": {
2690- "url": "https://github.com/sponsors/jonschlinkert"
2691- }
2692- },
2693- "node_modules/pirates": {
2694- "version": "4.0.7",
2695- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
2696- "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
2697- "dev": true,
2698- "license": "MIT",
2699- "engines": {
2700- "node": ">= 6"
2701- }
2702- },
2703- "node_modules/pkg-types": {
2704- "version": "1.3.1",
2705- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
2706- "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
2707- "dev": true,
2708- "license": "MIT",
2709- "dependencies": {
2710- "confbox": "^0.1.8",
2711- "mlly": "^1.7.4",
2712- "pathe": "^2.0.1"
2713- }
2714- },
2715- "node_modules/postcss-load-config": {
2716- "version": "6.0.1",
2717- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz",
2718- "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==",
2719- "dev": true,
2720- "funding": [
2721- {
2722- "type": "opencollective",
2723- "url": "https://opencollective.com/postcss/"
2724- },
2725- {
2726- "type": "github",
2727- "url": "https://github.com/sponsors/ai"
2728- }
2729- ],
2730- "license": "MIT",
2731- "dependencies": {
2732- "lilconfig": "^3.1.1"
2733- },
2734- "engines": {
2735- "node": ">= 18"
2736- },
2737- "peerDependencies": {
2738- "jiti": ">=1.21.0",
2739- "postcss": ">=8.0.9",
2740- "tsx": "^4.8.1",
2741- "yaml": "^2.4.2"
2742- },
2743- "peerDependenciesMeta": {
2744- "jiti": {
2745- "optional": true
2746- },
2747- "postcss": {
2748- "optional": true
2749- },
2750- "tsx": {
2751- "optional": true
2752- },
2753- "yaml": {
2754- "optional": true
2755- }
2756- }
2757- },
2758- "node_modules/prelude-ls": {
2759- "version": "1.2.1",
2760- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2761- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2762- "dev": true,
2763- "license": "MIT",
2764- "engines": {
2765- "node": ">= 0.8.0"
2766- }
2767- },
2768- "node_modules/punycode": {
2769- "version": "2.3.1",
2770- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
2771- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
2772- "dev": true,
2773- "license": "MIT",
2774- "engines": {
2775- "node": ">=6"
2776- }
2777- },
2778- "node_modules/queue-microtask": {
2779- "version": "1.2.3",
2780- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2781- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2782- "dev": true,
2783- "funding": [
2784- {
2785- "type": "github",
2786- "url": "https://github.com/sponsors/feross"
2787- },
2788- {
2789- "type": "patreon",
2790- "url": "https://www.patreon.com/feross"
2791- },
2792- {
2793- "type": "consulting",
2794- "url": "https://feross.org/support"
2795- }
2796- ],
2797- "license": "MIT"
2798- },
2799- "node_modules/readdirp": {
2800- "version": "4.1.2",
2801- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
2802- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
2803- "dev": true,
2804- "license": "MIT",
2805- "engines": {
2806- "node": ">= 14.18.0"
2807- },
2808- "funding": {
2809- "type": "individual",
2810- "url": "https://paulmillr.com/funding/"
2811- }
2812- },
2813- "node_modules/resolve-from": {
2814- "version": "4.0.0",
2815- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2816- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2817- "dev": true,
2818- "license": "MIT",
2819- "engines": {
2820- "node": ">=4"
2821- }
2822- },
2823- "node_modules/reusify": {
2824- "version": "1.1.0",
2825- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
2826- "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
2827- "dev": true,
2828- "license": "MIT",
2829- "engines": {
2830- "iojs": ">=1.0.0",
2831- "node": ">=0.10.0"
2832- }
2833- },
2834- "node_modules/rimraf": {
2835- "version": "3.0.2",
2836- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2837- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2838- "deprecated": "Rimraf versions prior to v4 are no longer supported",
2839- "dev": true,
2840- "license": "ISC",
2841- "dependencies": {
2842- "glob": "^7.1.3"
2843- },
2844- "bin": {
2845- "rimraf": "bin.js"
2846- },
2847- "funding": {
2848- "url": "https://github.com/sponsors/isaacs"
2849- }
2850- },
2851- "node_modules/rollup": {
2852- "version": "4.50.1",
2853- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz",
2854- "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==",
2855- "dev": true,
2856- "license": "MIT",
2857- "dependencies": {
2858- "@types/estree": "1.0.8"
2859- },
2860- "bin": {
2861- "rollup": "dist/bin/rollup"
2862- },
2863- "engines": {
2864- "node": ">=18.0.0",
2865- "npm": ">=8.0.0"
2866- },
2867- "optionalDependencies": {
2868- "@rollup/rollup-android-arm-eabi": "4.50.1",
2869- "@rollup/rollup-android-arm64": "4.50.1",
2870- "@rollup/rollup-darwin-arm64": "4.50.1",
2871- "@rollup/rollup-darwin-x64": "4.50.1",
2872- "@rollup/rollup-freebsd-arm64": "4.50.1",
2873- "@rollup/rollup-freebsd-x64": "4.50.1",
2874- "@rollup/rollup-linux-arm-gnueabihf": "4.50.1",
2875- "@rollup/rollup-linux-arm-musleabihf": "4.50.1",
2876- "@rollup/rollup-linux-arm64-gnu": "4.50.1",
2877- "@rollup/rollup-linux-arm64-musl": "4.50.1",
2878- "@rollup/rollup-linux-loongarch64-gnu": "4.50.1",
2879- "@rollup/rollup-linux-ppc64-gnu": "4.50.1",
2880- "@rollup/rollup-linux-riscv64-gnu": "4.50.1",
2881- "@rollup/rollup-linux-riscv64-musl": "4.50.1",
2882- "@rollup/rollup-linux-s390x-gnu": "4.50.1",
2883- "@rollup/rollup-linux-x64-gnu": "4.50.1",
2884- "@rollup/rollup-linux-x64-musl": "4.50.1",
2885- "@rollup/rollup-openharmony-arm64": "4.50.1",
2886- "@rollup/rollup-win32-arm64-msvc": "4.50.1",
2887- "@rollup/rollup-win32-ia32-msvc": "4.50.1",
2888- "@rollup/rollup-win32-x64-msvc": "4.50.1",
2889- "fsevents": "~2.3.2"
2890- }
2891- },
2892- "node_modules/run-parallel": {
2893- "version": "1.2.0",
2894- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2895- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2896- "dev": true,
2897- "funding": [
2898- {
2899- "type": "github",
2900- "url": "https://github.com/sponsors/feross"
2901- },
2902- {
2903- "type": "patreon",
2904- "url": "https://www.patreon.com/feross"
2905- },
2906- {
2907- "type": "consulting",
2908- "url": "https://feross.org/support"
2909- }
2910- ],
2911- "license": "MIT",
2912- "dependencies": {
2913- "queue-microtask": "^1.2.2"
2914- }
2915- },
2916- "node_modules/semver": {
2917- "version": "7.7.2",
2918- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
2919- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
2920- "dev": true,
2921- "license": "ISC",
2922- "bin": {
2923- "semver": "bin/semver.js"
2924- },
2925- "engines": {
2926- "node": ">=10"
2927- }
2928- },
2929- "node_modules/shebang-command": {
2930- "version": "2.0.0",
2931- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2932- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2933- "dev": true,
2934- "license": "MIT",
2935- "dependencies": {
2936- "shebang-regex": "^3.0.0"
2937- },
2938- "engines": {
2939- "node": ">=8"
2940- }
2941- },
2942- "node_modules/shebang-regex": {
2943- "version": "3.0.0",
2944- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2945- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2946- "dev": true,
2947- "license": "MIT",
2948- "engines": {
2949- "node": ">=8"
2950- }
2951- },
2952- "node_modules/signal-exit": {
2953- "version": "4.1.0",
2954- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2955- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2956- "dev": true,
2957- "license": "ISC",
2958- "engines": {
2959- "node": ">=14"
2960- },
2961- "funding": {
2962- "url": "https://github.com/sponsors/isaacs"
2963- }
2964- },
2965- "node_modules/slash": {
2966- "version": "3.0.0",
2967- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
2968- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
2969- "dev": true,
2970- "license": "MIT",
2971- "engines": {
2972- "node": ">=8"
2973- }
2974- },
2975- "node_modules/source-map": {
2976- "version": "0.8.0-beta.0",
2977- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
2978- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
2979- "deprecated": "The work that was done in this beta branch won't be included in future versions",
2980- "dev": true,
2981- "license": "BSD-3-Clause",
2982- "dependencies": {
2983- "whatwg-url": "^7.0.0"
2984- },
2985- "engines": {
2986- "node": ">= 8"
2987- }
2988- },
2989- "node_modules/string-width": {
2990- "version": "5.1.2",
2991- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2992- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2993- "dev": true,
2994- "license": "MIT",
2995- "dependencies": {
2996- "eastasianwidth": "^0.2.0",
2997- "emoji-regex": "^9.2.2",
2998- "strip-ansi": "^7.0.1"
2999- },
3000- "engines": {
3001- "node": ">=12"
3002- },
3003- "funding": {
3004- "url": "https://github.com/sponsors/sindresorhus"
3005- }
3006- },
3007- "node_modules/string-width-cjs": {
3008- "name": "string-width",
3009- "version": "4.2.3",
3010- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3011- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3012- "dev": true,
3013- "license": "MIT",
3014- "dependencies": {
3015- "emoji-regex": "^8.0.0",
3016- "is-fullwidth-code-point": "^3.0.0",
3017- "strip-ansi": "^6.0.1"
3018- },
3019- "engines": {
3020- "node": ">=8"
3021- }
3022- },
3023- "node_modules/string-width-cjs/node_modules/emoji-regex": {
3024- "version": "8.0.0",
3025- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3026- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3027- "dev": true,
3028- "license": "MIT"
3029- },
3030- "node_modules/string-width/node_modules/ansi-regex": {
3031- "version": "6.2.2",
3032- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
3033- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
3034- "dev": true,
3035- "license": "MIT",
3036- "engines": {
3037- "node": ">=12"
3038- },
3039- "funding": {
3040- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
3041- }
3042- },
3043- "node_modules/string-width/node_modules/strip-ansi": {
3044- "version": "7.1.2",
3045- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
3046- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
3047- "dev": true,
3048- "license": "MIT",
3049- "dependencies": {
3050- "ansi-regex": "^6.0.1"
3051- },
3052- "engines": {
3053- "node": ">=12"
3054- },
3055- "funding": {
3056- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
3057- }
3058- },
3059- "node_modules/strip-ansi": {
3060- "version": "6.0.1",
3061- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3062- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3063- "dev": true,
3064- "license": "MIT",
3065- "dependencies": {
3066- "ansi-regex": "^5.0.1"
3067- },
3068- "engines": {
3069- "node": ">=8"
3070- }
3071- },
3072- "node_modules/strip-ansi-cjs": {
3073- "name": "strip-ansi",
3074- "version": "6.0.1",
3075- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3076- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3077- "dev": true,
3078- "license": "MIT",
3079- "dependencies": {
3080- "ansi-regex": "^5.0.1"
3081- },
3082- "engines": {
3083- "node": ">=8"
3084- }
3085- },
3086- "node_modules/strip-json-comments": {
3087- "version": "3.1.1",
3088- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
3089- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
3090- "dev": true,
3091- "license": "MIT",
3092- "engines": {
3093- "node": ">=8"
3094- },
3095- "funding": {
3096- "url": "https://github.com/sponsors/sindresorhus"
3097- }
3098- },
3099- "node_modules/sucrase": {
3100- "version": "3.35.0",
3101- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
3102- "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
3103- "dev": true,
3104- "license": "MIT",
3105- "dependencies": {
3106- "@jridgewell/gen-mapping": "^0.3.2",
3107- "commander": "^4.0.0",
3108- "glob": "^10.3.10",
3109- "lines-and-columns": "^1.1.6",
3110- "mz": "^2.7.0",
3111- "pirates": "^4.0.1",
3112- "ts-interface-checker": "^0.1.9"
3113- },
3114- "bin": {
3115- "sucrase": "bin/sucrase",
3116- "sucrase-node": "bin/sucrase-node"
3117- },
3118- "engines": {
3119- "node": ">=16 || 14 >=14.17"
3120- }
3121- },
3122- "node_modules/sucrase/node_modules/glob": {
3123- "version": "10.4.5",
3124- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
3125- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
3126- "dev": true,
3127- "license": "ISC",
3128- "dependencies": {
3129- "foreground-child": "^3.1.0",
3130- "jackspeak": "^3.1.2",
3131- "minimatch": "^9.0.4",
3132- "minipass": "^7.1.2",
3133- "package-json-from-dist": "^1.0.0",
3134- "path-scurry": "^1.11.1"
3135- },
3136- "bin": {
3137- "glob": "dist/esm/bin.mjs"
3138- },
3139- "funding": {
3140- "url": "https://github.com/sponsors/isaacs"
3141- }
3142- },
3143- "node_modules/supports-color": {
3144- "version": "7.2.0",
3145- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
3146- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
3147- "dev": true,
3148- "license": "MIT",
3149- "dependencies": {
3150- "has-flag": "^4.0.0"
3151- },
3152- "engines": {
3153- "node": ">=8"
3154- }
3155- },
3156- "node_modules/text-table": {
3157- "version": "0.2.0",
3158- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
3159- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
3160- "dev": true,
3161- "license": "MIT"
3162- },
3163- "node_modules/thenify": {
3164- "version": "3.3.1",
3165- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
3166- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
3167- "dev": true,
3168- "license": "MIT",
3169- "dependencies": {
3170- "any-promise": "^1.0.0"
3171- }
3172- },
3173- "node_modules/thenify-all": {
3174- "version": "1.6.0",
3175- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
3176- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
3177- "dev": true,
3178- "license": "MIT",
3179- "dependencies": {
3180- "thenify": ">= 3.1.0 < 4"
3181- },
3182- "engines": {
3183- "node": ">=0.8"
3184- }
3185- },
3186- "node_modules/tinyexec": {
3187- "version": "0.3.2",
3188- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
3189- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
3190- "dev": true,
3191- "license": "MIT"
3192- },
3193- "node_modules/tinyglobby": {
3194- "version": "0.2.15",
3195- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
3196- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
3197- "dev": true,
3198- "license": "MIT",
3199- "dependencies": {
3200- "fdir": "^6.5.0",
3201- "picomatch": "^4.0.3"
3202- },
3203- "engines": {
3204- "node": ">=12.0.0"
3205- },
3206- "funding": {
3207- "url": "https://github.com/sponsors/SuperchupuDev"
3208- }
3209- },
3210- "node_modules/tinyglobby/node_modules/fdir": {
3211- "version": "6.5.0",
3212- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
3213- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
3214- "dev": true,
3215- "license": "MIT",
3216- "engines": {
3217- "node": ">=12.0.0"
3218- },
3219- "peerDependencies": {
3220- "picomatch": "^3 || ^4"
3221- },
3222- "peerDependenciesMeta": {
3223- "picomatch": {
3224- "optional": true
3225- }
3226- }
3227- },
3228- "node_modules/tinyglobby/node_modules/picomatch": {
3229- "version": "4.0.3",
3230- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
3231- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
3232- "dev": true,
3233- "license": "MIT",
3234- "engines": {
3235- "node": ">=12"
3236- },
3237- "funding": {
3238- "url": "https://github.com/sponsors/jonschlinkert"
3239- }
3240- },
3241- "node_modules/to-regex-range": {
3242- "version": "5.0.1",
3243- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3244- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3245- "dev": true,
3246- "license": "MIT",
3247- "dependencies": {
3248- "is-number": "^7.0.0"
3249- },
3250- "engines": {
3251- "node": ">=8.0"
3252- }
3253- },
3254- "node_modules/tr46": {
3255- "version": "1.0.1",
3256- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
3257- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
3258- "dev": true,
3259- "license": "MIT",
3260- "dependencies": {
3261- "punycode": "^2.1.0"
3262- }
3263- },
3264- "node_modules/tree-kill": {
3265- "version": "1.2.2",
3266- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
3267- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
3268- "dev": true,
3269- "license": "MIT",
3270- "bin": {
3271- "tree-kill": "cli.js"
3272- }
3273- },
3274- "node_modules/ts-api-utils": {
3275- "version": "1.4.3",
3276- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
3277- "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
3278- "dev": true,
3279- "license": "MIT",
3280- "engines": {
3281- "node": ">=16"
3282- },
3283- "peerDependencies": {
3284- "typescript": ">=4.2.0"
3285- }
3286- },
3287- "node_modules/ts-interface-checker": {
3288- "version": "0.1.13",
3289- "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
3290- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
3291- "dev": true,
3292- "license": "Apache-2.0"
3293- },
3294- "node_modules/tsup": {
3295- "version": "8.5.0",
3296- "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz",
3297- "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==",
3298- "dev": true,
3299- "license": "MIT",
3300- "dependencies": {
3301- "bundle-require": "^5.1.0",
3302- "cac": "^6.7.14",
3303- "chokidar": "^4.0.3",
3304- "consola": "^3.4.0",
3305- "debug": "^4.4.0",
3306- "esbuild": "^0.25.0",
3307- "fix-dts-default-cjs-exports": "^1.0.0",
3308- "joycon": "^3.1.1",
3309- "picocolors": "^1.1.1",
3310- "postcss-load-config": "^6.0.1",
3311- "resolve-from": "^5.0.0",
3312- "rollup": "^4.34.8",
3313- "source-map": "0.8.0-beta.0",
3314- "sucrase": "^3.35.0",
3315- "tinyexec": "^0.3.2",
3316- "tinyglobby": "^0.2.11",
3317- "tree-kill": "^1.2.2"
3318- },
3319- "bin": {
3320- "tsup": "dist/cli-default.js",
3321- "tsup-node": "dist/cli-node.js"
3322- },
3323- "engines": {
3324- "node": ">=18"
3325- },
3326- "peerDependencies": {
3327- "@microsoft/api-extractor": "^7.36.0",
3328- "@swc/core": "^1",
3329- "postcss": "^8.4.12",
3330- "typescript": ">=4.5.0"
3331- },
3332- "peerDependenciesMeta": {
3333- "@microsoft/api-extractor": {
3334- "optional": true
3335- },
3336- "@swc/core": {
3337- "optional": true
3338- },
3339- "postcss": {
3340- "optional": true
3341- },
3342- "typescript": {
3343- "optional": true
3344- }
3345- }
3346- },
3347- "node_modules/tsup/node_modules/resolve-from": {
3348- "version": "5.0.0",
3349- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
3350- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
3351- "dev": true,
3352- "license": "MIT",
3353- "engines": {
3354- "node": ">=8"
3355- }
3356- },
3357- "node_modules/type-check": {
3358- "version": "0.4.0",
3359- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
3360- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
3361- "dev": true,
3362- "license": "MIT",
3363- "dependencies": {
3364- "prelude-ls": "^1.2.1"
3365- },
3366- "engines": {
3367- "node": ">= 0.8.0"
3368- }
3369- },
3370- "node_modules/type-fest": {
3371- "version": "0.20.2",
3372- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
3373- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
3374- "dev": true,
3375- "license": "(MIT OR CC0-1.0)",
3376- "engines": {
3377- "node": ">=10"
3378- },
3379- "funding": {
3380- "url": "https://github.com/sponsors/sindresorhus"
3381- }
3382- },
3383- "node_modules/typescript": {
3384- "version": "5.9.2",
3385- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
3386- "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
3387- "dev": true,
3388- "license": "Apache-2.0",
3389- "bin": {
3390- "tsc": "bin/tsc",
3391- "tsserver": "bin/tsserver"
3392- },
3393- "engines": {
3394- "node": ">=14.17"
3395- }
3396- },
3397- "node_modules/typescript-eslint": {
3398- "version": "8.43.0",
3399- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.43.0.tgz",
3400- "integrity": "sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==",
3401- "dev": true,
3402- "license": "MIT",
3403- "dependencies": {
3404- "@typescript-eslint/eslint-plugin": "8.43.0",
3405- "@typescript-eslint/parser": "8.43.0",
3406- "@typescript-eslint/typescript-estree": "8.43.0",
3407- "@typescript-eslint/utils": "8.43.0"
3408- },
3409- "engines": {
3410- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3411- },
3412- "funding": {
3413- "type": "opencollective",
3414- "url": "https://opencollective.com/typescript-eslint"
3415- },
3416- "peerDependencies": {
3417- "eslint": "^8.57.0 || ^9.0.0",
3418- "typescript": ">=4.8.4 <6.0.0"
3419- }
3420- },
3421- "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": {
3422- "version": "8.43.0",
3423- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.43.0.tgz",
3424- "integrity": "sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==",
3425- "dev": true,
3426- "license": "MIT",
3427- "dependencies": {
3428- "@eslint-community/regexpp": "^4.10.0",
3429- "@typescript-eslint/scope-manager": "8.43.0",
3430- "@typescript-eslint/type-utils": "8.43.0",
3431- "@typescript-eslint/utils": "8.43.0",
3432- "@typescript-eslint/visitor-keys": "8.43.0",
3433- "graphemer": "^1.4.0",
3434- "ignore": "^7.0.0",
3435- "natural-compare": "^1.4.0",
3436- "ts-api-utils": "^2.1.0"
3437- },
3438- "engines": {
3439- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3440- },
3441- "funding": {
3442- "type": "opencollective",
3443- "url": "https://opencollective.com/typescript-eslint"
3444- },
3445- "peerDependencies": {
3446- "@typescript-eslint/parser": "^8.43.0",
3447- "eslint": "^8.57.0 || ^9.0.0",
3448- "typescript": ">=4.8.4 <6.0.0"
3449- }
3450- },
3451- "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": {
3452- "version": "8.43.0",
3453- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.43.0.tgz",
3454- "integrity": "sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==",
3455- "dev": true,
3456- "license": "MIT",
3457- "dependencies": {
3458- "@typescript-eslint/scope-manager": "8.43.0",
3459- "@typescript-eslint/types": "8.43.0",
3460- "@typescript-eslint/typescript-estree": "8.43.0",
3461- "@typescript-eslint/visitor-keys": "8.43.0",
3462- "debug": "^4.3.4"
3463- },
3464- "engines": {
3465- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3466- },
3467- "funding": {
3468- "type": "opencollective",
3469- "url": "https://opencollective.com/typescript-eslint"
3470- },
3471- "peerDependencies": {
3472- "eslint": "^8.57.0 || ^9.0.0",
3473- "typescript": ">=4.8.4 <6.0.0"
3474- }
3475- },
3476- "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": {
3477- "version": "8.43.0",
3478- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.43.0.tgz",
3479- "integrity": "sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==",
3480- "dev": true,
3481- "license": "MIT",
3482- "dependencies": {
3483- "@typescript-eslint/types": "8.43.0",
3484- "@typescript-eslint/visitor-keys": "8.43.0"
3485- },
3486- "engines": {
3487- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3488- },
3489- "funding": {
3490- "type": "opencollective",
3491- "url": "https://opencollective.com/typescript-eslint"
3492- }
3493- },
3494- "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": {
3495- "version": "8.43.0",
3496- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.43.0.tgz",
3497- "integrity": "sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==",
3498- "dev": true,
3499- "license": "MIT",
3500- "dependencies": {
3501- "@typescript-eslint/types": "8.43.0",
3502- "@typescript-eslint/typescript-estree": "8.43.0",
3503- "@typescript-eslint/utils": "8.43.0",
3504- "debug": "^4.3.4",
3505- "ts-api-utils": "^2.1.0"
3506- },
3507- "engines": {
3508- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3509- },
3510- "funding": {
3511- "type": "opencollective",
3512- "url": "https://opencollective.com/typescript-eslint"
3513- },
3514- "peerDependencies": {
3515- "eslint": "^8.57.0 || ^9.0.0",
3516- "typescript": ">=4.8.4 <6.0.0"
3517- }
3518- },
3519- "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": {
3520- "version": "8.43.0",
3521- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.43.0.tgz",
3522- "integrity": "sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==",
3523- "dev": true,
3524- "license": "MIT",
3525- "engines": {
3526- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3527- },
3528- "funding": {
3529- "type": "opencollective",
3530- "url": "https://opencollective.com/typescript-eslint"
3531- }
3532- },
3533- "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": {
3534- "version": "8.43.0",
3535- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.43.0.tgz",
3536- "integrity": "sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==",
3537- "dev": true,
3538- "license": "MIT",
3539- "dependencies": {
3540- "@typescript-eslint/project-service": "8.43.0",
3541- "@typescript-eslint/tsconfig-utils": "8.43.0",
3542- "@typescript-eslint/types": "8.43.0",
3543- "@typescript-eslint/visitor-keys": "8.43.0",
3544- "debug": "^4.3.4",
3545- "fast-glob": "^3.3.2",
3546- "is-glob": "^4.0.3",
3547- "minimatch": "^9.0.4",
3548- "semver": "^7.6.0",
3549- "ts-api-utils": "^2.1.0"
3550- },
3551- "engines": {
3552- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3553- },
3554- "funding": {
3555- "type": "opencollective",
3556- "url": "https://opencollective.com/typescript-eslint"
3557- },
3558- "peerDependencies": {
3559- "typescript": ">=4.8.4 <6.0.0"
3560- }
3561- },
3562- "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": {
3563- "version": "8.43.0",
3564- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.43.0.tgz",
3565- "integrity": "sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==",
3566- "dev": true,
3567- "license": "MIT",
3568- "dependencies": {
3569- "@eslint-community/eslint-utils": "^4.7.0",
3570- "@typescript-eslint/scope-manager": "8.43.0",
3571- "@typescript-eslint/types": "8.43.0",
3572- "@typescript-eslint/typescript-estree": "8.43.0"
3573- },
3574- "engines": {
3575- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3576- },
3577- "funding": {
3578- "type": "opencollective",
3579- "url": "https://opencollective.com/typescript-eslint"
3580- },
3581- "peerDependencies": {
3582- "eslint": "^8.57.0 || ^9.0.0",
3583- "typescript": ">=4.8.4 <6.0.0"
3584- }
3585- },
3586- "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": {
3587- "version": "8.43.0",
3588- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.43.0.tgz",
3589- "integrity": "sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==",
3590- "dev": true,
3591- "license": "MIT",
3592- "dependencies": {
3593- "@typescript-eslint/types": "8.43.0",
3594- "eslint-visitor-keys": "^4.2.1"
3595- },
3596- "engines": {
3597- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3598- },
3599- "funding": {
3600- "type": "opencollective",
3601- "url": "https://opencollective.com/typescript-eslint"
3602- }
3603- },
3604- "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": {
3605- "version": "4.2.1",
3606- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
3607- "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
3608- "dev": true,
3609- "license": "Apache-2.0",
3610- "engines": {
3611- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3612- },
3613- "funding": {
3614- "url": "https://opencollective.com/eslint"
3615- }
3616- },
3617- "node_modules/typescript-eslint/node_modules/ignore": {
3618- "version": "7.0.5",
3619- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
3620- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
3621- "dev": true,
3622- "license": "MIT",
3623- "engines": {
3624- "node": ">= 4"
3625- }
3626- },
3627- "node_modules/typescript-eslint/node_modules/ts-api-utils": {
3628- "version": "2.1.0",
3629- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
3630- "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
3631- "dev": true,
3632- "license": "MIT",
3633- "engines": {
3634- "node": ">=18.12"
3635- },
3636- "peerDependencies": {
3637- "typescript": ">=4.8.4"
3638- }
3639- },
3640- "node_modules/ufo": {
3641- "version": "1.6.1",
3642- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
3643- "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
3644- "dev": true,
3645- "license": "MIT"
3646- },
3647- "node_modules/undici-types": {
3648- "version": "6.21.0",
3649- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
3650- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
3651- "dev": true,
3652- "license": "MIT"
3653- },
3654- "node_modules/uri-js": {
3655- "version": "4.4.1",
3656- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
3657- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3658- "dev": true,
3659- "license": "BSD-2-Clause",
3660- "dependencies": {
3661- "punycode": "^2.1.0"
3662- }
3663- },
3664- "node_modules/webidl-conversions": {
3665- "version": "4.0.2",
3666- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
3667- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
3668- "dev": true,
3669- "license": "BSD-2-Clause"
3670- },
3671- "node_modules/whatwg-url": {
3672- "version": "7.1.0",
3673- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
3674- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
3675- "dev": true,
3676- "license": "MIT",
3677- "dependencies": {
3678- "lodash.sortby": "^4.7.0",
3679- "tr46": "^1.0.1",
3680- "webidl-conversions": "^4.0.2"
3681- }
3682- },
3683- "node_modules/which": {
3684- "version": "2.0.2",
3685- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3686- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3687- "dev": true,
3688- "license": "ISC",
3689- "dependencies": {
3690- "isexe": "^2.0.0"
3691- },
3692- "bin": {
3693- "node-which": "bin/node-which"
3694- },
3695- "engines": {
3696- "node": ">= 8"
3697- }
3698- },
3699- "node_modules/word-wrap": {
3700- "version": "1.2.5",
3701- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
3702- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
3703- "dev": true,
3704- "license": "MIT",
3705- "engines": {
3706- "node": ">=0.10.0"
3707- }
3708- },
3709- "node_modules/wrap-ansi": {
3710- "version": "8.1.0",
3711- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
3712- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
3713- "dev": true,
3714- "license": "MIT",
3715- "dependencies": {
3716- "ansi-styles": "^6.1.0",
3717- "string-width": "^5.0.1",
3718- "strip-ansi": "^7.0.1"
3719- },
3720- "engines": {
3721- "node": ">=12"
3722- },
3723- "funding": {
3724- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3725- }
3726- },
3727- "node_modules/wrap-ansi-cjs": {
3728- "name": "wrap-ansi",
3729- "version": "7.0.0",
3730- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3731- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3732- "dev": true,
3733- "license": "MIT",
3734- "dependencies": {
3735- "ansi-styles": "^4.0.0",
3736- "string-width": "^4.1.0",
3737- "strip-ansi": "^6.0.0"
3738- },
3739- "engines": {
3740- "node": ">=10"
3741- },
3742- "funding": {
3743- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3744- }
3745- },
3746- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
3747- "version": "8.0.0",
3748- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3749- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3750- "dev": true,
3751- "license": "MIT"
3752- },
3753- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
3754- "version": "4.2.3",
3755- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3756- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3757- "dev": true,
3758- "license": "MIT",
3759- "dependencies": {
3760- "emoji-regex": "^8.0.0",
3761- "is-fullwidth-code-point": "^3.0.0",
3762- "strip-ansi": "^6.0.1"
3763- },
3764- "engines": {
3765- "node": ">=8"
3766- }
3767- },
3768- "node_modules/wrap-ansi/node_modules/ansi-regex": {
3769- "version": "6.2.2",
3770- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
3771- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
3772- "dev": true,
3773- "license": "MIT",
3774- "engines": {
3775- "node": ">=12"
3776- },
3777- "funding": {
3778- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
3779- }
3780- },
3781- "node_modules/wrap-ansi/node_modules/ansi-styles": {
3782- "version": "6.2.3",
3783- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
3784- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
3785- "dev": true,
3786- "license": "MIT",
3787- "engines": {
3788- "node": ">=12"
3789- },
3790- "funding": {
3791- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
3792- }
3793- },
3794- "node_modules/wrap-ansi/node_modules/strip-ansi": {
3795- "version": "7.1.2",
3796- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
3797- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
3798- "dev": true,
3799- "license": "MIT",
3800- "dependencies": {
3801- "ansi-regex": "^6.0.1"
3802- },
3803- "engines": {
3804- "node": ">=12"
3805- },
3806- "funding": {
3807- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
3808- }
3809- },
3810- "node_modules/wrappy": {
3811- "version": "1.0.2",
3812- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3813- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
3814- "dev": true,
3815- "license": "ISC"
3816- },
3817- "node_modules/yocto-queue": {
3818- "version": "0.1.0",
3819- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3820- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
3821- "dev": true,
3822- "license": "MIT",
3823- "engines": {
3824- "node": ">=10"
3825- },
3826- "funding": {
3827- "url": "https://github.com/sponsors/sindresorhus"
3828- }
3829- }
3830- }
3831-}
D frontend/package.json +0 -23
@@ -1,23 +0,0 @@
1-{
2- "name": "@dumber/frontend",
3- "version": "0.1.0",
4- "private": true,
5- "type": "module",
6- "scripts": {
7- "build": "tsup && node dist/build-html.js",
8- "dev": "tsup --watch",
9- "type-check": "tsc --noEmit",
10- "lint": "eslint src --fix",
11- "generate:types": "node ../scripts/generate-types.js"
12- },
13- "devDependencies": {
14- "@types/node": "^20.0.0",
15- "@typescript-eslint/eslint-plugin": "^7.0.0",
16- "@typescript-eslint/parser": "^7.0.0",
17- "eslint": "^8.57.0",
18- "tsup": "^8.0.0",
19- "typescript": "^5.3.0",
20- "typescript-eslint": "^8.43.0"
21- },
22- "dependencies": {}
23-}
D frontend/src/build-html.ts +0 -24
@@ -1,24 +0,0 @@
1-import { writeFileSync } from 'fs';
2-import { join } from 'path';
3-import { HTMLBuilder } from './utils/html-builder.js';
4-
5-// Generate the HTML file
6-function buildHTML() {
7- try {
8- const html = HTMLBuilder.createBaseHTML();
9- const outputPath = join(process.cwd(), 'dist', 'index.html');
10- writeFileSync(outputPath, html);
11- // Also emit favicon.svg as a file for dumb:// scheme lookups
12- const favPath = join(process.cwd(), 'dist', 'favicon.svg');
13- writeFileSync(favPath, HTMLBuilder.getFaviconSVG());
14- console.log('✓ Generated index.html');
15- } catch (error) {
16- console.error('✗ Failed to generate HTML:', error);
17- process.exit(1);
18- }
19-}
20-
21-// Only run when called directly (not imported)
22-if (import.meta.url === `file://${process.argv[1]}`) {
23- buildHTML();
24-}
D frontend/src/injected-controls.ts +0 -107
@@ -1,107 +0,0 @@
1-/**
2- * Injectable Controls Script
3- *
4- * This script is injected into every page loaded in the browser to provide
5- * global keyboard and mouse controls that work on all domains.
6- *
7- * Only includes essential controls that can work cross-origin:
8- * - Navigation (back/forward)
9- * - Mouse navigation buttons
10- *
11- * Zoom controls are handled natively by the GTK backend
12- */
13-
14-(function() {
15- 'use strict';
16-
17- // Prevent multiple injections with a unique timestamp
18- const injectionId = '__dumberControlsInjected_' + Date.now();
19- if ((window as any).__dumberControlsInjected) {
20- console.log('🔄 Dumber Browser controls already injected, skipping');
21- return;
22- }
23- (window as any).__dumberControlsInjected = injectionId;
24-
25- console.log('🚀 Dumber Browser controls injected on:', window.location.href);
26-
27- // Keyboard event handler for global controls
28- function handleKeyboardEvent(event: KeyboardEvent): void {
29- const { ctrlKey, metaKey, shiftKey, altKey, key } = event;
30- const isCmd = ctrlKey || metaKey;
31-
32- try {
33- // Navigation: Alt + Left Arrow (Back)
34- if (altKey && key === 'ArrowLeft') {
35- event.preventDefault();
36- event.stopPropagation();
37-
38- if (window.history.length > 1) {
39- console.log('⬅️ Navigating back');
40- window.history.back();
41- }
42- return;
43- }
44-
45- // Navigation: Alt + Right Arrow (Forward)
46- if (altKey && key === 'ArrowRight') {
47- event.preventDefault();
48- event.stopPropagation();
49-
50- console.log('➡️ Navigating forward');
51- window.history.forward();
52- return;
53- }
54-
55- } catch (error) {
56- console.error('❌ Error in keyboard handler:', error);
57- }
58- }
59-
60- // Mouse event handler for navigation buttons
61- function handleMouseEvent(event: MouseEvent): void {
62- try {
63- // Mouse button 3 (back button)
64- if (event.button === 3) {
65- event.preventDefault();
66- event.stopPropagation();
67-
68- if (window.history.length > 1) {
69- console.log('⬅️ Mouse back button pressed');
70- window.history.back();
71- }
72- return;
73- }
74-
75- // Mouse button 4 (forward button)
76- if (event.button === 4) {
77- event.preventDefault();
78- event.stopPropagation();
79-
80- console.log('➡️ Mouse forward button pressed');
81- window.history.forward();
82- return;
83- }
84-
85- } catch (error) {
86- console.error('❌ Error in mouse handler:', error);
87- }
88- }
89-
90- // Add event listeners with high priority (capture phase)
91- try {
92- document.addEventListener('keydown', handleKeyboardEvent, true);
93- document.addEventListener('mousedown', handleMouseEvent, true);
94-
95- console.log('✅ Dumber Browser global controls active');
96-
97- // Cleanup function for when page is unloaded
98- window.addEventListener('beforeunload', () => {
99- document.removeEventListener('keydown', handleKeyboardEvent, true);
100- document.removeEventListener('mousedown', handleMouseEvent, true);
101- console.log('🧹 Dumber Browser controls cleaned up');
102- });
103-
104- } catch (error) {
105- console.error('❌ Failed to initialize Dumber Browser controls:', error);
106- }
107-})();
D frontend/src/main.ts +0 -73
@@ -1,73 +0,0 @@
1-import { AppService } from './services/app.js';
2-import { BrowserControlsService } from './services/browser-controls.js';
3-import { DOMRenderer } from './utils/dom.js';
4-
5-class DumberBrowserApp {
6- private appService: AppService;
7- private browserControls: BrowserControlsService;
8- private domRenderer: DOMRenderer;
9-
10- constructor() {
11- this.appService = new AppService();
12- this.browserControls = new BrowserControlsService();
13- this.domRenderer = new DOMRenderer();
14- }
15-
16- async initialize(): Promise<void> {
17- try {
18- // Show loading states
19- this.domRenderer.showLoading('history');
20- this.domRenderer.showLoading('shortcuts');
21-
22- // Initialize services
23- await this.appService.initialize();
24-
25- // Initialize browser controls
26- await this.browserControls.initialize();
27-
28- // Render the UI
29- this.render();
30-
31- console.log('✓ Dumber Browser initialized successfully');
32- } catch (error) {
33- console.error('Failed to initialize Dumber Browser:', error);
34- this.handleInitializationError();
35- }
36- }
37-
38- private render(): void {
39- try {
40- // Render history
41- const history = this.appService.getHistory();
42- this.domRenderer.displayHistory(history);
43-
44- // Render shortcuts
45- const shortcuts = this.appService.getShortcuts();
46- this.domRenderer.displayShortcuts(shortcuts);
47- } catch (error) {
48- console.error('Failed to render UI:', error);
49- this.domRenderer.showError('history', 'Failed to load history');
50- this.domRenderer.showError('shortcuts', 'Failed to load shortcuts');
51- }
52- }
53-
54- private handleInitializationError(): void {
55- this.domRenderer.showError('history', 'Failed to initialize application');
56- this.domRenderer.showError('shortcuts', 'Failed to initialize application');
57- }
58-}
59-
60-// Initialize the application when the DOM is ready
61-function initializeApp(): void {
62- const app = new DumberBrowserApp();
63- app.initialize().catch(error => {
64- console.error('Critical error during app initialization:', error);
65- });
66-}
67-
68-// Wait for DOM to be ready
69-if (document.readyState === 'loading') {
70- document.addEventListener('DOMContentLoaded', initializeApp);
71-} else {
72- initializeApp();
73-}⏎̸
D frontend/src/services/app.ts +0 -105
@@ -1,105 +0,0 @@
1-type HistoryEntry = {
2- id: number;
3- url: string;
4- title: string;
5- visit_count: number;
6- last_visited: string | null;
7- created_at: string | null;
8-}
9-
10-export class AppService {
11- private history: HistoryEntry[] = [];
12- private shortcuts: Record<string, any> = {};
13-
14- constructor() {}
15-
16- async initialize(): Promise<void> {
17- try {
18- await Promise.all([
19- this.loadHistory(),
20- this.loadShortcuts()
21- ]);
22- } catch (error) {
23- console.error('Failed to initialize app:', error);
24- }
25- }
26-
27- async loadHistory(): Promise<void> {
28- try {
29- const recentHistory: HistoryEntry[] = await fetch('/api/history/recent?limit=50').then(r => r.json());
30- this.history = recentHistory;
31- } catch (error) {
32- console.error('Failed to load history:', error);
33- // Mock history for development/fallback
34- this.history = [
35- {
36- id: 1,
37- url: 'https://github.com/wailsapp/wails',
38- title: 'Wails Framework',
39- visit_count: 3,
40- last_visited: new Date().toISOString(),
41- created_at: new Date().toISOString()
42- },
43- {
44- id: 2,
45- url: 'https://go.dev',
46- title: 'The Go Programming Language',
47- visit_count: 2,
48- last_visited: new Date().toISOString(),
49- created_at: new Date().toISOString()
50- },
51- {
52- id: 3,
53- url: 'https://developer.mozilla.org',
54- title: 'MDN Web Docs',
55- visit_count: 1,
56- last_visited: new Date().toISOString(),
57- created_at: new Date().toISOString()
58- }
59- ];
60- }
61- }
62-
63- async loadShortcuts(): Promise<void> {
64- try {
65- const cfg = await fetch('/api/config').then(r => r.json());
66- const raw = cfg?.search_shortcuts || {};
67- // Normalize field casing from backend (supports URL/Description and url/description)
68- const normalized: Record<string, { description: string; url: string }> = {};
69- for (const [key, value] of Object.entries(raw)) {
70- const v: any = value as any;
71- normalized[key] = {
72- description: v.description ?? v.Description ?? '',
73- url: v.url ?? v.URL ?? ''
74- };
75- }
76- this.shortcuts = normalized;
77- } catch (error) {
78- console.error('Failed to load shortcuts:', error);
79- // Mock shortcuts for development/fallback
80- this.shortcuts = {
81- 'g': { description: 'Google Search', url: 'https://google.com/search?q={query}' },
82- 'gh': { description: 'GitHub Search', url: 'https://github.com/search?q={query}' },
83- 'so': { description: 'Stack Overflow', url: 'https://stackoverflow.com/search?q={query}' },
84- 'w': { description: 'Wikipedia', url: 'https://en.wikipedia.org/wiki/Special:Search?search={query}' }
85- };
86- }
87- }
88-
89- getHistory(): HistoryEntry[] {
90- return this.history;
91- }
92-
93- getShortcuts(): Record<string, any> {
94- return this.shortcuts;
95- }
96-
97- async copyToClipboard(text: string): Promise<void> {
98- try {
99- await navigator.clipboard.writeText(text);
100- console.log('Copied to clipboard:', text);
101- } catch (err) {
102- console.error('Failed to copy:', err);
103- }
104- }
105-}
D frontend/src/services/browser-controls.ts +0 -179
@@ -1,179 +0,0 @@
1-import { NotificationService } from './notifications.js';
2-import { DebugConsoleService } from './debug-console.js';
3-
4-export class BrowserControlsService {
5- private currentURL = '';
6- private notifications = new NotificationService();
7- private debugConsole = new DebugConsoleService();
8-
9- constructor() {
10- // Debug logging with enhanced details
11- this.debugConsole.addLog('info', 'frontend', 'init', 'BrowserControlsService initializing...');
12- this.debugConsole.addLog('info', 'frontend', 'init', 'Running without Wails bindings');
13-
14- this.initializeEventListeners();
15- this.debugConsole.addLog('info', 'frontend', 'init', 'BrowserControlsService initialized ✓');
16- }
17-
18-
19- private initializeEventListeners(): void {
20- // Keyboard event handler for browser controls
21- document.addEventListener('keydown', this.handleKeyboardEvent.bind(this));
22-
23- // Mouse button handler for navigation
24- document.addEventListener('mousedown', this.handleMouseEvent.bind(this));
25-
26- // URL change listener (for SPA navigation)
27- window.addEventListener('popstate', this.handleURLChange.bind(this));
28- }
29-
30- private async handleKeyboardEvent(event: KeyboardEvent): Promise<void> {
31- // Skip F12 (debug console toggle)
32- if (event.key === 'F12') {
33- return;
34- }
35-
36- // Log all keyboard events to debug console
37- this.debugConsole.logKeyboardEvent(event);
38-
39- const { ctrlKey, metaKey, shiftKey, altKey, key } = event;
40- const isCmd = ctrlKey || metaKey;
41-
42- // Zoom controls handled natively by GTK; don't intercept
43- if (isCmd && (key === '+' || key === '=' || key === '-' || key === '0')) {
44- return; // allow native handler to process
45- }
46-
47- // Copy URL
48- if (isCmd && shiftKey && key === 'C') {
49- this.debugConsole.addLog('info', 'frontend', 'action', 'Copy URL triggered');
50- event.preventDefault();
51- await this.copyCurrentURL();
52- return;
53- }
54-
55- // Navigation
56- if (altKey && key === 'ArrowLeft') {
57- this.debugConsole.addLog('info', 'frontend', 'action', 'Go Back triggered');
58- event.preventDefault();
59- history.back();
60- return;
61- }
62-
63- if (altKey && key === 'ArrowRight') {
64- this.debugConsole.addLog('info', 'frontend', 'action', 'Go Forward triggered');
65- event.preventDefault();
66- history.forward();
67- return;
68- }
69- }
70-
71- private async handleMouseEvent(event: MouseEvent): Promise<void> {
72- // Log all mouse events to debug console
73- this.debugConsole.logMouseEvent(event);
74-
75- // Mouse button 3 (back button)
76- if (event.button === 3) {
77- this.debugConsole.addLog('info', 'frontend', 'action', 'Mouse Back button triggered');
78- event.preventDefault();
79- await this.goBack();
80- return;
81- }
82-
83- // Mouse button 4 (forward button)
84- if (event.button === 4) {
85- this.debugConsole.addLog('info', 'frontend', 'action', 'Mouse Forward button triggered');
86- event.preventDefault();
87- await this.goForward();
88- return;
89- }
90- }
91-
92- private handleURLChange(): void {
93- this.setCurrentURL(window.location.href);
94- this.loadSavedZoom();
95- }
96-
97- // Zoom is handled natively; no JS-based zoom adjustments needed.
98-
99- async copyCurrentURL(): Promise<void> {
100- try {
101- const url = this.getCurrentURL();
102- await navigator.clipboard.writeText(url);
103-
104- // URL copied successfully - no backend notification needed
105-
106- this.notifications.show('URL copied to clipboard!', 'success');
107- } catch (error) {
108- console.error('Failed to copy URL:', error);
109- this.notifications.show('Failed to copy URL', 'error');
110- }
111- }
112-
113- async goBack(): Promise<void> {
114- this.debugConsole.addLog('info', 'frontend', 'service', 'Calling GoBack');
115-
116- try {
117- await BrowserService.GoBack();
118- this.debugConsole.logServiceCall('BrowserService', 'GoBack', []);
119- history.back();
120- this.debugConsole.addLog('info', 'frontend', 'navigation', 'Browser navigated back');
121- } catch (error) {
122- this.debugConsole.logServiceCall('BrowserService', 'GoBack', [], null, error as Error);
123- console.error('Failed to go back:', error);
124- }
125- }
126-
127- async goForward(): Promise<void> {
128- this.debugConsole.addLog('info', 'frontend', 'service', 'Calling GoForward');
129-
130- try {
131- await BrowserService.GoForward();
132- this.debugConsole.logServiceCall('BrowserService', 'GoForward', []);
133- history.forward();
134- this.debugConsole.addLog('info', 'frontend', 'navigation', 'Browser navigated forward');
135- } catch (error) {
136- this.debugConsole.logServiceCall('BrowserService', 'GoForward', [], null, error as Error);
137- console.error('Failed to go forward:', error);
138- }
139- }
140-
141- getCurrentURL(): string {
142- return this.currentURL || window.location.href;
143- }
144-
145- setCurrentURL(url: string): void {
146- this.currentURL = url;
147- this.updateWindowTitle(url);
148- }
149-
150- private async updateWindowTitle(url: string): Promise<void> {
151- try {
152- // Extract domain or path for title
153- let title = 'Dumber Browser';
154- if (url && url !== '/') {
155- const urlObj = new URL(url);
156- title = `Dumber - ${urlObj.hostname}`;
157- }
158-
159- document.title = title;
160-
161- // Backend title updates handled natively; no frontend call
162- } catch (error) {
163- console.error('Failed to update title:', error);
164- }
165- }
166-
167- async loadSavedZoom(): Promise<void> {
168- // Zoom persistence applied natively on page load
169- }
170-
171- async initialize(): Promise<void> {
172- // Check if there's an initial URL from backend (direct navigation)
173- // Set initial URL from browser location (homepage)
174- this.setCurrentURL(window.location.href);
175-
176- // Load saved zoom level (only if we're staying on homepage)
177- // Zoom handled natively
178- }
179-}
D frontend/src/services/debug-console.ts +0 -258
@@ -1,258 +0,0 @@
1-export interface DebugLogEntry {
2- timestamp: string;
3- level: 'info' | 'warn' | 'error' | 'debug';
4- source: 'frontend' | 'backend';
5- category: string;
6- message: string;
7- data?: any;
8-}
9-
10-export class DebugConsoleService {
11- private logs: DebugLogEntry[] = [];
12- private maxLogs = 1000;
13- private isVisible = false;
14- private debugElement: HTMLElement | null = null;
15- private logsContainer: HTMLElement | null = null;
16-
17- constructor() {
18- this.createDebugUI();
19- this.setupKeyboardShortcut();
20- this.interceptConsole();
21- }
22-
23- private createDebugUI(): void {
24- // Create debug panel
25- this.debugElement = document.createElement('div');
26- this.debugElement.id = 'debug-console';
27- this.debugElement.style.cssText = `
28- position: fixed;
29- top: 0;
30- right: 0;
31- width: 50%;
32- height: 100%;
33- background: rgba(0, 0, 0, 0.95);
34- color: #00ff00;
35- font-family: 'Courier New', monospace;
36- font-size: 12px;
37- z-index: 10000;
38- display: none;
39- border-left: 2px solid #00ff00;
40- `;
41-
42- // Create header
43- const header = document.createElement('div');
44- header.style.cssText = `
45- padding: 10px;
46- background: rgba(0, 255, 0, 0.1);
47- border-bottom: 1px solid #00ff00;
48- font-weight: bold;
49- display: flex;
50- justify-content: space-between;
51- align-items: center;
52- `;
53- header.innerHTML = `
54- <span>🐛 DUMBER DEBUG CONSOLE</span>
55- <div style="font-size: 10px;">
56- <span style="color: #888; margin-right: 10px;">F11: Inspect Services | F12: Toggle</span>
57- <button id="clear-logs" style="background: none; border: 1px solid #00ff00; color: #00ff00; padding: 2px 8px; margin-right: 5px; cursor: pointer;">Clear</button>
58- <button id="close-debug" style="background: none; border: 1px solid #00ff00; color: #00ff00; padding: 2px 8px; cursor: pointer;">Close</button>
59- </div>
60- `;
61-
62- // Create logs container
63- this.logsContainer = document.createElement('div');
64- this.logsContainer.style.cssText = `
65- height: calc(100% - 50px);
66- overflow-y: auto;
67- padding: 10px;
68- `;
69-
70- this.debugElement.appendChild(header);
71- this.debugElement.appendChild(this.logsContainer);
72- document.body.appendChild(this.debugElement);
73-
74- // Setup button handlers
75- header.querySelector('#clear-logs')?.addEventListener('click', () => this.clearLogs());
76- header.querySelector('#close-debug')?.addEventListener('click', () => this.hide());
77- }
78-
79- private setupKeyboardShortcut(): void {
80- document.addEventListener('keydown', (event) => {
81- // F12 to toggle debug console
82- if (event.key === 'F12') {
83- event.preventDefault();
84- this.toggle();
85- }
86- });
87- }
88-
89- private interceptConsole(): void {
90- const originalConsole = {
91- log: console.log,
92- warn: console.warn,
93- error: console.error,
94- info: console.info,
95- debug: console.debug
96- };
97-
98- console.log = (...args) => {
99- this.addLog('info', 'frontend', 'console', args.join(' '));
100- originalConsole.log(...args);
101- };
102-
103- console.warn = (...args) => {
104- this.addLog('warn', 'frontend', 'console', args.join(' '));
105- originalConsole.warn(...args);
106- };
107-
108- console.error = (...args) => {
109- this.addLog('error', 'frontend', 'console', args.join(' '));
110- originalConsole.error(...args);
111- };
112-
113- console.info = (...args) => {
114- this.addLog('info', 'frontend', 'console', args.join(' '));
115- originalConsole.info(...args);
116- };
117-
118- console.debug = (...args) => {
119- this.addLog('debug', 'frontend', 'console', args.join(' '));
120- originalConsole.debug(...args);
121- };
122- }
123-
124- public addLog(level: DebugLogEntry['level'], source: DebugLogEntry['source'], category: string, message: string, data?: any): void {
125- const entry: DebugLogEntry = {
126- timestamp: new Date().toISOString().split('T')[1].split('.')[0], // HH:MM:SS format
127- level,
128- source,
129- category,
130- message,
131- data
132- };
133-
134- this.logs.push(entry);
135-
136- // Keep only the last maxLogs entries
137- if (this.logs.length > this.maxLogs) {
138- this.logs.shift();
139- }
140-
141- this.updateDisplay();
142- }
143-
144- private updateDisplay(): void {
145- if (!this.logsContainer) return;
146-
147- const logHTML = this.logs.map(log => {
148- const levelColor = {
149- info: '#00ff00',
150- warn: '#ffff00',
151- error: '#ff0000',
152- debug: '#00ffff'
153- }[log.level];
154-
155- const sourceIcon = log.source === 'backend' ? '🖥️' : '🌐';
156-
157- return `
158- <div style="margin-bottom: 2px; font-size: 11px;">
159- <span style="color: #888;">[${log.timestamp}]</span>
160- <span style="color: ${levelColor};">${sourceIcon} ${log.level.toUpperCase()}</span>
161- <span style="color: #aaa;">[${log.category}]</span>
162- <span style="color: #fff;">${log.message}</span>
163- ${log.data ? `<pre style="color: #ccc; font-size: 10px; margin: 2px 0;">${JSON.stringify(log.data, null, 2)}</pre>` : ''}
164- </div>
165- `;
166- }).join('');
167-
168- this.logsContainer.innerHTML = logHTML;
169-
170- // Auto-scroll to bottom
171- this.logsContainer.scrollTop = this.logsContainer.scrollHeight;
172- }
173-
174- public logKeyboardEvent(event: KeyboardEvent): void {
175- const modifiers = [];
176- if (event.ctrlKey) modifiers.push('Ctrl');
177- if (event.shiftKey) modifiers.push('Shift');
178- if (event.altKey) modifiers.push('Alt');
179- if (event.metaKey) modifiers.push('Meta');
180-
181- const shortcut = modifiers.length > 0 ? `${modifiers.join('+')}+${event.key}` : event.key;
182-
183- this.addLog('info', 'frontend', 'keyboard', `Key pressed: ${shortcut}`, {
184- key: event.key,
185- code: event.code,
186- modifiers: modifiers,
187- target: event.target?.constructor.name
188- });
189- }
190-
191- public logMouseEvent(event: MouseEvent): void {
192- const buttonNames = {
193- 0: 'Left',
194- 1: 'Middle',
195- 2: 'Right',
196- 3: 'Back',
197- 4: 'Forward'
198- };
199-
200- this.addLog('info', 'frontend', 'mouse', `Mouse ${event.type}: ${buttonNames[event.button] || `Button${event.button}`}`, {
201- button: event.button,
202- clientX: event.clientX,
203- clientY: event.clientY,
204- target: event.target?.constructor.name
205- });
206- }
207-
208- public logServiceCall(serviceName: string, methodName: string, params: any[], result?: any, error?: Error): void {
209- if (error) {
210- this.addLog('error', 'frontend', 'service', `${serviceName}.${methodName}() failed`, {
211- params,
212- error: error.message
213- });
214- } else {
215- this.addLog('info', 'frontend', 'service', `${serviceName}.${methodName}() called`, {
216- params,
217- result
218- });
219- }
220- }
221-
222- public logBackendMessage(message: string, data?: any): void {
223- this.addLog('info', 'backend', 'service', message, data);
224- }
225-
226- public show(): void {
227- if (this.debugElement) {
228- this.debugElement.style.display = 'block';
229- this.isVisible = true;
230- this.addLog('info', 'frontend', 'debug', 'Debug console opened');
231- }
232- }
233-
234- public hide(): void {
235- if (this.debugElement) {
236- this.debugElement.style.display = 'none';
237- this.isVisible = false;
238- }
239- }
240-
241- public toggle(): void {
242- if (this.isVisible) {
243- this.hide();
244- } else {
245- this.show();
246- }
247- }
248-
249- public clearLogs(): void {
250- this.logs = [];
251- this.updateDisplay();
252- this.addLog('info', 'frontend', 'debug', 'Logs cleared');
253- }
254-
255- public isDebugVisible(): boolean {
256- return this.isVisible;
257- }
258-}
D frontend/src/services/notifications.ts +0 -91
@@ -1,91 +0,0 @@
1-import type { NotificationOptions } from '../types/app.js';
2-
3-export class NotificationService {
4- private zoomNotification: HTMLElement | null = null;
5- private generalNotification: HTMLElement | null = null;
6-
7- showZoom(message: string, duration = 2000): void {
8- // Create or update zoom notification
9- if (!this.zoomNotification) {
10- this.zoomNotification = this.createNotificationElement('zoom-notification', {
11- top: '20px',
12- right: '20px',
13- background: 'rgba(0, 0, 0, 0.8)',
14- color: 'white'
15- });
16- }
17-
18- this.updateNotification(this.zoomNotification, message, duration);
19- }
20-
21- show(message: string, type: NotificationOptions['type'] = 'info', duration = 3000): void {
22- // Create or update general notification
23- if (!this.generalNotification) {
24- this.generalNotification = this.createNotificationElement('general-notification', {
25- top: '60px',
26- right: '20px'
27- });
28- }
29-
30- // Set colors based on type
31- const colors = this.getNotificationColors(type);
32- this.generalNotification.style.background = colors.background;
33- this.generalNotification.style.color = colors.color;
34-
35- this.updateNotification(this.generalNotification, message, duration);
36- }
37-
38- private createNotificationElement(id: string, baseStyles: Record<string, string>): HTMLElement {
39- const notification = document.createElement('div');
40- notification.id = id;
41-
42- const styles = {
43- position: 'fixed',
44- padding: '10px 15px',
45- borderRadius: '5px',
46- fontSize: '14px',
47- zIndex: '10000',
48- transition: 'opacity 0.3s',
49- opacity: '0',
50- ...baseStyles
51- };
52-
53- notification.style.cssText = Object.entries(styles)
54- .map(([key, value]) => `${this.camelToKebab(key)}: ${value}`)
55- .join('; ');
56-
57- document.body.appendChild(notification);
58- return notification;
59- }
60-
61- private updateNotification(element: HTMLElement, message: string, duration: number): void {
62- element.textContent = message;
63- element.style.opacity = '1';
64-
65- // Clear any existing timeout
66- const existingTimeout = (element as any).timeout;
67- if (existingTimeout) {
68- clearTimeout(existingTimeout);
69- }
70-
71- // Hide after duration
72- (element as any).timeout = setTimeout(() => {
73- element.style.opacity = '0';
74- }, duration);
75- }
76-
77- private getNotificationColors(type: NotificationOptions['type']): { background: string; color: string } {
78- switch (type) {
79- case 'error':
80- return { background: 'rgba(220, 53, 69, 0.9)', color: 'white' };
81- case 'success':
82- return { background: 'rgba(25, 135, 84, 0.9)', color: 'white' };
83- default:
84- return { background: 'rgba(13, 110, 253, 0.9)', color: 'white' };
85- }
86- }
87-
88- private camelToKebab(str: string): string {
89- return str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);
90- }
91-}⏎̸
D frontend/src/types/app.ts +0 -26
@@ -1,26 +0,0 @@
1-import type { HistoryEntry, SearchShortcut } from './generated.js';
2-
3-export interface AppState {
4- currentURL: string;
5- currentZoom: number;
6- history: HistoryEntry[];
7- shortcuts: Record<string, SearchShortcut>;
8- isLoading: boolean;
9-}
10-
11-export interface NotificationOptions {
12- message: string;
13- type?: 'info' | 'success' | 'error';
14- duration?: number;
15-}
16-
17-export interface KeyboardShortcut {
18- key: string;
19- ctrlKey?: boolean;
20- metaKey?: boolean;
21- shiftKey?: boolean;
22- altKey?: boolean;
23- handler: () => void | Promise<void>;
24-}
25-
26-export { HistoryEntry, SearchShortcut } from './generated.js';⏎̸
D frontend/src/types/generated.ts +0 -80
@@ -1,80 +0,0 @@
1-// GENERATED FROM GO FILES: SEE THE GENERATOR SCRIPT
2-// Auto-generated TypeScript types from Go structs
3-// Generated on: 2025-09-09T09:57:41.059Z
4-// Generator script: scripts/generate-types.js
5-// Source files: internal/db/models.go, internal/parser/types.go
6-// Do not edit manually - run 'node scripts/generate-types.js' to regenerate
7-
8-export interface History {
9- id: number;
10- url: string;
11- title: string | null;
12- visit_count: number | null;
13- last_visited: string | null;
14- created_at: string | null;
15-}
16-
17-export interface Shortcut {
18- id: number;
19- shortcut: string;
20- url_template: string;
21- description: string | null;
22- created_at: string | null;
23-}
24-
25-export interface ZoomSetting {
26- id: number;
27- url: string;
28- zoom_level: number;
29- last_updated: string | null;
30-}
31-
32-export interface ParseResult {
33- type: InputType;
34- url: string;
35- query: string;
36- confidence: number;
37- fuzzy_matches?: FuzzyMatch[];
38- shortcut?: DetectedShortcut;
39- processing_time: number;
40-}
41-
42-export interface DetectedShortcut {
43- key: string;
44- query: string;
45- url: string;
46- description: string;
47-}
48-
49-export interface FuzzyMatch {
50- history_entry?: History;
51- score: number;
52- url_score: number;
53- title_score: number;
54- recency_score: number;
55- visit_score: number;
56- matched_field: string;
57-}
58-
59-export interface FuzzyConfig {
60- min_similarity_threshold: number;
61- max_results: number;
62- url_weight: number;
63- title_weight: number;
64- recency_weight: number;
65- visit_weight: number;
66- recency_decay_days: number;
67-}
68-
69-// Manual types and enums
70-export enum InputType {
71- InputTypeDirectURL = 0,
72- InputTypeSearchShortcut = 1,
73- InputTypeHistorySearch = 2,
74- InputTypeFallbackSearch = 3
75-}
76-
77-// Type aliases for frontend usage
78-export type HistoryEntry = History;
79-export type SearchShortcut = Shortcut;
80-export type ZoomEntry = ZoomSetting;
D frontend/src/utils/dom.ts +0 -212
@@ -1,212 +0,0 @@
1-type HistoryEntry = { id: number; url: string; title: string };
2-type SearchShortcut = { description: string; url: string };
3-
4-export class DOMRenderer {
5- private historyListElement: HTMLElement | null = null;
6- private shortcutsElement: HTMLElement | null = null;
7-
8- constructor() {
9- this.historyListElement = document.getElementById('historyList');
10- this.shortcutsElement = document.getElementById('shortcuts');
11- }
12-
13- displayHistory(historyEntries: HistoryEntry[]): void {
14- if (!this.historyListElement) return;
15-
16- if (!historyEntries || historyEntries.length === 0) {
17- this.historyListElement.innerHTML = `
18- <div class="empty-state">
19- <h3>No history yet</h3>
20- <p>Use CLI commands to browse websites</p>
21- </div>
22- `;
23- return;
24- }
25-
26- this.historyListElement.innerHTML = '';
27- historyEntries.forEach(item => {
28- const historyItem = this.createHistoryItem(item);
29- this.historyListElement!.appendChild(historyItem);
30- });
31- }
32-
33- displayShortcuts(shortcutsData: Record<string, SearchShortcut>): void {
34- if (!this.shortcutsElement) return;
35-
36- if (!shortcutsData || Object.keys(shortcutsData).length === 0) {
37- this.shortcutsElement.innerHTML = `
38- <div class="empty-state">
39- <h3>No shortcuts configured</h3>
40- <p>Add shortcuts to your config file</p>
41- </div>
42- `;
43- return;
44- }
45-
46- this.shortcutsElement.innerHTML = '';
47- Object.entries(shortcutsData).forEach(([key, shortcut]) => {
48- const shortcutEl = this.createShortcutElement(key, shortcut);
49- this.shortcutsElement!.appendChild(shortcutEl);
50- });
51- }
52-
53- showLoading(container: 'history' | 'shortcuts'): void {
54- const element = container === 'history' ? this.historyListElement : this.shortcutsElement;
55- if (element) {
56- element.innerHTML = '<div class="loading">Loading...</div>';
57- }
58- }
59-
60- showError(container: 'history' | 'shortcuts', message: string): void {
61- const element = container === 'history' ? this.historyListElement : this.shortcutsElement;
62- if (element) {
63- element.innerHTML = `
64- <div class="empty-state">
65- <h3>Error</h3>
66- <p>${message}</p>
67- </div>
68- `;
69- }
70- }
71-
72- private createHistoryItem(item: HistoryEntry): HTMLElement {
73- const historyItem = document.createElement('div');
74- historyItem.className = 'history-item';
75- const parsed = this.safeParseURL(item.url);
76- const title = item.title && item.title.trim() !== '' ? item.title : (parsed.host || 'Untitled');
77-
78- const line = document.createElement('div');
79- line.className = 'history-line';
80-
81- // Favicon chip (wrapper ensures perfect circle sizing)
82- const iconWrap = document.createElement('div');
83- iconWrap.className = 'history-favicon-chip';
84- const icon = document.createElement('img');
85- icon.className = 'history-favicon-img';
86- icon.width = 16; icon.height = 16;
87- icon.loading = 'lazy';
88- icon.referrerPolicy = 'no-referrer';
89- icon.src = this.buildFaviconURL(item.url);
90- icon.addEventListener('error', () => { iconWrap.style.display = 'none'; });
91- iconWrap.appendChild(icon);
92-
93- const titleEl = document.createElement('span');
94- titleEl.className = 'history-title';
95- titleEl.textContent = title;
96-
97- const sep1 = document.createElement('span');
98- sep1.className = 'history-sep';
99- sep1.textContent = ' - ';
100-
101- const domainEl = document.createElement('span');
102- domainEl.className = 'history-domain';
103- domainEl.textContent = parsed.host || '';
104-
105- const sep2 = document.createElement('span');
106- sep2.className = 'history-sep';
107- sep2.textContent = ' - ';
108-
109- const urlEl = document.createElement('span');
110- urlEl.className = 'history-url';
111- urlEl.textContent = item.url;
112-
113- line.appendChild(iconWrap);
114- line.appendChild(titleEl);
115- line.appendChild(sep1);
116- line.appendChild(domainEl);
117- line.appendChild(sep2);
118- line.appendChild(urlEl);
119-
120- historyItem.appendChild(line);
121-
122- historyItem.addEventListener('click', () => {
123- this.navigateToUrl(item.url);
124- });
125-
126- return historyItem;
127- }
128-
129- private createShortcutElement(key: string, shortcut: SearchShortcut): HTMLElement {
130- const shortcutEl = document.createElement('div');
131- shortcutEl.className = 'shortcut';
132- shortcutEl.innerHTML = `
133- <div class="shortcut-key">${this.escapeHtml(key)}:</div>
134- <div class="shortcut-desc">${this.escapeHtml(shortcut.description)}</div>
135- `;
136-
137- shortcutEl.addEventListener('click', () => {
138- // Navigate to the base URL of the shortcut (remove %s template parameter)
139- const baseUrl = this.extractBaseUrl(shortcut.url);
140- this.navigateToUrl(baseUrl);
141- });
142-
143- return shortcutEl;
144- }
145-
146- private async navigateToUrl(url: string): Promise<void> {
147- console.log('Navigating to:', url);
148- window.location.href = url;
149- }
150-
151- private extractBaseUrl(templateUrl: string): string {
152- try {
153- // Support both %s and {query} placeholders
154- const candidate = templateUrl.replace(/%s|\{query\}/g, "");
155- const url = new URL(candidate);
156- // Remove empty query params left after placeholder removal
157- const params = new URLSearchParams(url.search);
158- for (const key of Array.from(params.keys())) {
159- const v = params.get(key);
160- if (v === null || v === "") {
161- params.delete(key);
162- }
163- }
164- url.search = params.toString();
165- return url.toString();
166- } catch (error) {
167- // Fallbacks: try to return origin or stripped placeholder
168- console.warn('Failed to parse shortcut URL:', templateUrl);
169- try {
170- const pre = templateUrl.split('%s')[0] || templateUrl.split('{query}')[0] || templateUrl;
171- const u = new URL(pre);
172- return `${u.protocol}//${u.host}`;
173- } catch {
174- return templateUrl.replace(/%s|\{query\}/g, "");
175- }
176- }
177- }
178-
179- private async copyToClipboard(text: string): Promise<void> {
180- try {
181- await navigator.clipboard.writeText(text);
182- console.log('Copied to clipboard:', text);
183- } catch (err) {
184- console.error('Failed to copy:', err);
185- }
186- }
187-
188- private escapeHtml(text: string): string {
189- const div = document.createElement('div');
190- div.textContent = text;
191- return div.innerHTML;
192- }
193-
194- private safeParseURL(raw: string): { host: string } {
195- try {
196- const u = new URL(raw);
197- return { host: u.host };
198- } catch {
199- return { host: '' };
200- }
201- }
202-
203- private buildFaviconURL(raw: string): string {
204- try {
205- const u = new URL(raw);
206- const scheme = u.protocol && u.protocol !== ':' ? u.protocol : 'https:';
207- return `${scheme}//${u.host}/favicon.ico`;
208- } catch {
209- return '';
210- }
211- }
212-}
D frontend/src/utils/html-builder.ts +0 -251
@@ -1,251 +0,0 @@
1-export class HTMLBuilder {
2- static createBaseHTML(): string {
3- const faviconData = this.getFaviconDataURL();
4- return `
5-<!DOCTYPE html>
6-<html lang="en">
7-<head>
8- <meta charset="UTF-8">
9- <meta name="viewport" content="width=device-width, initial-scale=1.0">
10- <title>Dumber Browser</title>
11- <link rel="icon" type="image/svg+xml" href="${faviconData}">
12- <style>
13- ${this.getStyles()}
14- </style>
15-</head>
16-<body>
17- <div class="container">
18- <div class="history-section">
19- <h2 class="section-title">Recent History</h2>
20- <div id="historyList" class="history-list">
21- <div class="loading">Loading history...</div>
22- </div>
23- </div>
24-
25- <div class="shortcuts-section">
26- <h2 class="section-title">Search Shortcuts</h2>
27- <div id="shortcuts" class="shortcuts-grid">
28- <div class="loading">Loading shortcuts...</div>
29- </div>
30- </div>
31- </div>
32- <script type="module" src="./main.js"></script>
33-</body>
34-</html>`;
35- }
36-
37- private static getFaviconDataURL(): string {
38- const svg = HTMLBuilder.getFaviconSVG();
39- // Minimal encoding for safe inline usage
40- const encoded = encodeURIComponent(svg)
41- .replace(/'/g, '%27')
42- .replace(/\(/g, '%28')
43- .replace(/\)/g, '%29');
44- return `data:image/svg+xml;utf8,${encoded}`;
45- }
46-
47- static getFaviconSVG(): string {
48- // Stylized D with speed bolt on a subtle dark rounded card
49- return `<?xml version="1.0" encoding="UTF-8"?>
50-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
51- <defs>
52- <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
53- <stop offset="0%" stop-color="#121212"/>
54- <stop offset="100%" stop-color="#1e1e1e"/>
55- </linearGradient>
56- <filter id="inset" x="-20%" y="-20%" width="140%" height="140%">
57- <feOffset dx="0" dy="1"/>
58- <feGaussianBlur stdDeviation="0.6" result="blur"/>
59- <feComposite in2="SourceAlpha" operator="out"/>
60- <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/>
61- <feBlend in="SourceGraphic" mode="normal"/>
62- </filter>
63- </defs>
64- <rect x="4" y="4" width="56" height="56" rx="14" ry="14" fill="url(#bg)" filter="url(#inset)"/>
65- <rect x="4.5" y="4.5" width="55" height="55" rx="13.5" ry="13.5" fill="none" stroke="#252a2f" stroke-width="1"/>
66- <!-- D glyph (slightly larger and wider) -->
67- <path d="M20 16 L20 48 M20 16 H34 q12 0 12 16 t-12 16 H20" fill="none" stroke="#e9eef3" stroke-width="4.5" stroke-linecap="round" stroke-linejoin="round" transform="translate(33,32) scale(1.12,1.10) translate(-33,-32)"/>
68- <!-- Speed bolt accent (significantly larger, centered) -->
69- <path d="M36 22 L32 34 h6 l-8 16 4-12 h-6 z" fill="#ff9800" opacity="0.95" transform="translate(33,32) scale(1.8) translate(-33,-32) translate(0,-3)"/>
70-</svg>`;
71- }
72-
73- private static getStyles(): string {
74- return `
75- * {
76- margin: 0;
77- padding: 0;
78- box-sizing: border-box;
79- }
80-
81- body {
82- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
83- background: #1a1a1a;
84- color: #ffffff;
85- height: 100vh;
86- display: flex;
87- flex-direction: column;
88- overflow-x: hidden; /* prevent horizontal scroll from long content */
89- }
90-
91- .container {
92- flex: 1;
93- display: flex;
94- max-width: 1200px;
95- margin: 0 auto;
96- width: 100%;
97- padding: 2rem;
98- gap: 2rem;
99- overflow-x: hidden;
100- }
101-
102- .history-section {
103- flex: 1;
104- min-height: 0;
105- min-width: 0; /* allow flex child to shrink */
106- }
107-
108- .shortcuts-section {
109- flex: 1;
110- min-height: 0;
111- min-width: 0; /* allow flex child to shrink */
112- }
113-
114- .section-title {
115- font-size: 1.5rem;
116- margin-bottom: 1rem;
117- color: #ffffff;
118- border-bottom: 2px solid #404040;
119- padding-bottom: 0.5rem;
120- }
121-
122- .history-list {
123- overflow-y: auto;
124- overflow-x: hidden;
125- max-height: calc(100vh - 8rem);
126- max-width: 100%;
127- }
128-
129- .history-item {
130- padding: 0.75rem;
131- margin-bottom: 0.5rem;
132- background: #2d2d2d;
133- border-radius: 6px;
134- cursor: pointer;
135- transition: background 0.2s;
136- border-left: 3px solid #404040;
137- overflow: hidden;
138- max-width: 100%;
139- }
140-
141- .history-item:hover {
142- background: #3d3d3d;
143- border-left-color: #0066cc;
144- }
145-
146- .history-line {
147- display: flex;
148- gap: 0.5rem;
149- white-space: nowrap;
150- align-items: center;
151- overflow: hidden;
152- width: 100%;
153- min-width: 0; /* allow flex children to shrink */
154- }
155- .history-favicon-chip {
156- flex: 0 0 20px;
157- width: 20px; height: 20px;
158- border-radius: 50%;
159- background: #ccc;
160- border: 1px solid rgba(0,0,0,.12);
161- box-shadow: 0 1px 2px rgba(0,0,0,.12);
162- display: flex;
163- align-items: center;
164- justify-content: center;
165- }
166- .history-favicon-img {
167- width: 16px; height: 16px;
168- filter: brightness(1.06) contrast(1.03);
169- image-rendering: -webkit-optimize-contrast;
170- }
171-
172- .history-title { font-size: 0.95rem; color: #e6e6e6; flex: 0 0 auto; }
173- .history-domain { font-size: 0.9rem; color: #a5a5a5; flex: 0 0 auto; }
174- .history-sep { color: #666; flex: 0 0 auto; }
175- .history-url {
176- font-size: 0.9rem;
177- color: #7a7a7a; /* darker than domain */
178- flex: 1 1 auto;
179- min-width: 0; /* critical for flex truncation */
180- overflow: hidden;
181- text-overflow: ellipsis; /* fallback */
182- -webkit-mask-image: linear-gradient(to right, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 100%);
183- mask-image: linear-gradient(to right, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 100%);
184- }
185-
186- .shortcuts-grid {
187- display: grid;
188- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
189- gap: 1rem;
190- max-height: calc(100vh - 8rem);
191- overflow-y: auto;
192- }
193-
194- .shortcut {
195- padding: 1rem;
196- background: #2d2d2d;
197- border: 2px solid #404040;
198- border-radius: 8px;
199- cursor: pointer;
200- transition: all 0.2s;
201- text-align: center;
202- }
203-
204- .shortcut:hover {
205- background: #3d3d3d;
206- border-color: #0066cc;
207- transform: translateY(-2px);
208- }
209-
210- .shortcut-key {
211- font-weight: bold;
212- color: #0066cc;
213- margin-bottom: 0.5rem;
214- font-size: 1.1rem;
215- }
216-
217- .shortcut-desc {
218- color: #888;
219- font-size: 0.9rem;
220- }
221-
222- .loading {
223- padding: 2rem;
224- text-align: center;
225- color: #888;
226- }
227-
228- .empty-state {
229- padding: 3rem 2rem;
230- text-align: center;
231- color: #666;
232- }
233-
234- .empty-state h3 {
235- margin-bottom: 1rem;
236- color: #888;
237- }
238-
239- @media (max-width: 768px) {
240- .container {
241- flex-direction: column;
242- padding: 1rem;
243- }
244-
245- .shortcuts-grid {
246- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
247- }
248- }
249- `;
250- }
251-}
D frontend/tsconfig.json +0 -22
@@ -1,22 +0,0 @@
1-{
2- "compilerOptions": {
3- "target": "ES2022",
4- "module": "ESNext",
5- "moduleResolution": "bundler",
6- "lib": ["ES2022", "DOM", "DOM.Iterable"],
7- "allowImportingTsExtensions": true,
8- "moduleDetection": "force",
9- "noEmit": true,
10- "strict": true,
11- "noUnusedLocals": true,
12- "noUnusedParameters": true,
13- "noFallthroughCasesInSwitch": true,
14- "noUncheckedIndexedAccess": true,
15- "skipLibCheck": true,
16- "esModuleInterop": true,
17- "allowSyntheticDefaultImports": true,
18- "forceConsistentCasingInFileNames": true
19- },
20- "include": ["src/**/*"],
21- "exclude": ["node_modules", "dist"]
22-}⏎̸
D frontend/tsup.config.ts +0 -54
@@ -1,54 +0,0 @@
1-import { defineConfig } from 'tsup'
2-
3-export default defineConfig([
4- // Browser bundle
5- {
6- entry: ['src/main.ts'],
7- format: ['esm'],
8- outDir: 'dist',
9- outExtension: () => ({ js: '.js' }),
10- target: 'es2024',
11- platform: 'browser',
12- minify: false,
13- sourcemap: true,
14- clean: true,
15- bundle: true,
16- splitting: false,
17- external: [],
18- // noExternal: [],
19- },
20- // Injectable controls script (minified for injection)
21- {
22- entry: ['src/injected-controls.ts'],
23- format: ['iife'],
24- outDir: 'dist',
25- outExtension: () => ({ js: '.min.js' }),
26- target: 'es2024',
27- platform: 'browser',
28- minify: true,
29- sourcemap: false,
30- bundle: true,
31- splitting: false,
32- globalName: '__dumberControls',
33- external: [],
34- onSuccess: async () => {
35- console.log('✓ Injectable controls script compiled successfully')
36- }
37- },
38- // Node.js build script
39- {
40- entry: ['src/build-html.ts', 'src/utils/html-builder.ts'],
41- format: ['esm'],
42- outDir: 'dist',
43- outExtension: () => ({ js: '.js' }),
44- target: 'es2024',
45- platform: 'node',
46- minify: false,
47- sourcemap: false,
48- bundle: true,
49- splitting: false,
50- onSuccess: async () => {
51- console.log('✓ Frontend TypeScript compiled successfully')
52- }
53- }
54-])

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close