Tripagra commited on
Commit
b7cceb0
·
1 Parent(s): db76d32

Remove TypeScript build check to fix Vercel build

Browse files
frontend/package.json CHANGED
@@ -5,7 +5,7 @@
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite",
8
- "build": "tsc -b && vite build",
9
  "lint": "eslint .",
10
  "preview": "vite preview"
11
  },
 
5
  "type": "module",
6
  "scripts": {
7
  "dev": "vite",
8
+ "build": "vite build",
9
  "lint": "eslint .",
10
  "preview": "vite preview"
11
  },
node_modules/.package-lock.json ADDED
@@ -0,0 +1,2328 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "smart-escalation-api",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "frontend": {
8
+ "version": "0.0.0",
9
+ "dependencies": {
10
+ "axios": "^1.15.0",
11
+ "react": "^19.2.4",
12
+ "react-dom": "^19.2.4"
13
+ },
14
+ "devDependencies": {
15
+ "@eslint/js": "^9.39.4",
16
+ "@types/node": "^24.12.2",
17
+ "@types/react": "^19.2.14",
18
+ "@types/react-dom": "^19.2.3",
19
+ "@vitejs/plugin-react": "^6.0.1",
20
+ "eslint": "^9.39.4",
21
+ "eslint-plugin-react-hooks": "^7.0.1",
22
+ "eslint-plugin-react-refresh": "^0.5.2",
23
+ "globals": "^17.4.0",
24
+ "typescript": "~6.0.2",
25
+ "typescript-eslint": "^8.58.0",
26
+ "vite": "^8.0.4"
27
+ }
28
+ },
29
+ "frontend/node_modules/@babel/code-frame": {
30
+ "version": "7.29.0",
31
+ "dev": true,
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@babel/helper-validator-identifier": "^7.28.5",
35
+ "js-tokens": "^4.0.0",
36
+ "picocolors": "^1.1.1"
37
+ },
38
+ "engines": {
39
+ "node": ">=6.9.0"
40
+ }
41
+ },
42
+ "frontend/node_modules/@babel/compat-data": {
43
+ "version": "7.29.0",
44
+ "dev": true,
45
+ "license": "MIT",
46
+ "engines": {
47
+ "node": ">=6.9.0"
48
+ }
49
+ },
50
+ "frontend/node_modules/@babel/core": {
51
+ "version": "7.29.0",
52
+ "dev": true,
53
+ "license": "MIT",
54
+ "dependencies": {
55
+ "@babel/code-frame": "^7.29.0",
56
+ "@babel/generator": "^7.29.0",
57
+ "@babel/helper-compilation-targets": "^7.28.6",
58
+ "@babel/helper-module-transforms": "^7.28.6",
59
+ "@babel/helpers": "^7.28.6",
60
+ "@babel/parser": "^7.29.0",
61
+ "@babel/template": "^7.28.6",
62
+ "@babel/traverse": "^7.29.0",
63
+ "@babel/types": "^7.29.0",
64
+ "@jridgewell/remapping": "^2.3.5",
65
+ "convert-source-map": "^2.0.0",
66
+ "debug": "^4.1.0",
67
+ "gensync": "^1.0.0-beta.2",
68
+ "json5": "^2.2.3",
69
+ "semver": "^6.3.1"
70
+ },
71
+ "engines": {
72
+ "node": ">=6.9.0"
73
+ },
74
+ "funding": {
75
+ "type": "opencollective",
76
+ "url": "https://opencollective.com/babel"
77
+ }
78
+ },
79
+ "frontend/node_modules/@babel/generator": {
80
+ "version": "7.29.1",
81
+ "dev": true,
82
+ "license": "MIT",
83
+ "dependencies": {
84
+ "@babel/parser": "^7.29.0",
85
+ "@babel/types": "^7.29.0",
86
+ "@jridgewell/gen-mapping": "^0.3.12",
87
+ "@jridgewell/trace-mapping": "^0.3.28",
88
+ "jsesc": "^3.0.2"
89
+ },
90
+ "engines": {
91
+ "node": ">=6.9.0"
92
+ }
93
+ },
94
+ "frontend/node_modules/@babel/helper-compilation-targets": {
95
+ "version": "7.28.6",
96
+ "dev": true,
97
+ "license": "MIT",
98
+ "dependencies": {
99
+ "@babel/compat-data": "^7.28.6",
100
+ "@babel/helper-validator-option": "^7.27.1",
101
+ "browserslist": "^4.24.0",
102
+ "lru-cache": "^5.1.1",
103
+ "semver": "^6.3.1"
104
+ },
105
+ "engines": {
106
+ "node": ">=6.9.0"
107
+ }
108
+ },
109
+ "frontend/node_modules/@babel/helper-globals": {
110
+ "version": "7.28.0",
111
+ "dev": true,
112
+ "license": "MIT",
113
+ "engines": {
114
+ "node": ">=6.9.0"
115
+ }
116
+ },
117
+ "frontend/node_modules/@babel/helper-module-imports": {
118
+ "version": "7.28.6",
119
+ "dev": true,
120
+ "license": "MIT",
121
+ "dependencies": {
122
+ "@babel/traverse": "^7.28.6",
123
+ "@babel/types": "^7.28.6"
124
+ },
125
+ "engines": {
126
+ "node": ">=6.9.0"
127
+ }
128
+ },
129
+ "frontend/node_modules/@babel/helper-module-transforms": {
130
+ "version": "7.28.6",
131
+ "dev": true,
132
+ "license": "MIT",
133
+ "dependencies": {
134
+ "@babel/helper-module-imports": "^7.28.6",
135
+ "@babel/helper-validator-identifier": "^7.28.5",
136
+ "@babel/traverse": "^7.28.6"
137
+ },
138
+ "engines": {
139
+ "node": ">=6.9.0"
140
+ },
141
+ "peerDependencies": {
142
+ "@babel/core": "^7.0.0"
143
+ }
144
+ },
145
+ "frontend/node_modules/@babel/helper-string-parser": {
146
+ "version": "7.27.1",
147
+ "dev": true,
148
+ "license": "MIT",
149
+ "engines": {
150
+ "node": ">=6.9.0"
151
+ }
152
+ },
153
+ "frontend/node_modules/@babel/helper-validator-identifier": {
154
+ "version": "7.28.5",
155
+ "dev": true,
156
+ "license": "MIT",
157
+ "engines": {
158
+ "node": ">=6.9.0"
159
+ }
160
+ },
161
+ "frontend/node_modules/@babel/helper-validator-option": {
162
+ "version": "7.27.1",
163
+ "dev": true,
164
+ "license": "MIT",
165
+ "engines": {
166
+ "node": ">=6.9.0"
167
+ }
168
+ },
169
+ "frontend/node_modules/@babel/helpers": {
170
+ "version": "7.29.2",
171
+ "dev": true,
172
+ "license": "MIT",
173
+ "dependencies": {
174
+ "@babel/template": "^7.28.6",
175
+ "@babel/types": "^7.29.0"
176
+ },
177
+ "engines": {
178
+ "node": ">=6.9.0"
179
+ }
180
+ },
181
+ "frontend/node_modules/@babel/parser": {
182
+ "version": "7.29.2",
183
+ "dev": true,
184
+ "license": "MIT",
185
+ "dependencies": {
186
+ "@babel/types": "^7.29.0"
187
+ },
188
+ "bin": {
189
+ "parser": "bin/babel-parser.js"
190
+ },
191
+ "engines": {
192
+ "node": ">=6.0.0"
193
+ }
194
+ },
195
+ "frontend/node_modules/@babel/template": {
196
+ "version": "7.28.6",
197
+ "dev": true,
198
+ "license": "MIT",
199
+ "dependencies": {
200
+ "@babel/code-frame": "^7.28.6",
201
+ "@babel/parser": "^7.28.6",
202
+ "@babel/types": "^7.28.6"
203
+ },
204
+ "engines": {
205
+ "node": ">=6.9.0"
206
+ }
207
+ },
208
+ "frontend/node_modules/@babel/traverse": {
209
+ "version": "7.29.0",
210
+ "dev": true,
211
+ "license": "MIT",
212
+ "dependencies": {
213
+ "@babel/code-frame": "^7.29.0",
214
+ "@babel/generator": "^7.29.0",
215
+ "@babel/helper-globals": "^7.28.0",
216
+ "@babel/parser": "^7.29.0",
217
+ "@babel/template": "^7.28.6",
218
+ "@babel/types": "^7.29.0",
219
+ "debug": "^4.3.1"
220
+ },
221
+ "engines": {
222
+ "node": ">=6.9.0"
223
+ }
224
+ },
225
+ "frontend/node_modules/@babel/types": {
226
+ "version": "7.29.0",
227
+ "dev": true,
228
+ "license": "MIT",
229
+ "dependencies": {
230
+ "@babel/helper-string-parser": "^7.27.1",
231
+ "@babel/helper-validator-identifier": "^7.28.5"
232
+ },
233
+ "engines": {
234
+ "node": ">=6.9.0"
235
+ }
236
+ },
237
+ "frontend/node_modules/@eslint-community/eslint-utils": {
238
+ "version": "4.9.1",
239
+ "dev": true,
240
+ "license": "MIT",
241
+ "dependencies": {
242
+ "eslint-visitor-keys": "^3.4.3"
243
+ },
244
+ "engines": {
245
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
246
+ },
247
+ "funding": {
248
+ "url": "https://opencollective.com/eslint"
249
+ },
250
+ "peerDependencies": {
251
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
252
+ }
253
+ },
254
+ "frontend/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
255
+ "version": "3.4.3",
256
+ "dev": true,
257
+ "license": "Apache-2.0",
258
+ "engines": {
259
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
260
+ },
261
+ "funding": {
262
+ "url": "https://opencollective.com/eslint"
263
+ }
264
+ },
265
+ "frontend/node_modules/@eslint-community/regexpp": {
266
+ "version": "4.12.2",
267
+ "dev": true,
268
+ "license": "MIT",
269
+ "engines": {
270
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
271
+ }
272
+ },
273
+ "frontend/node_modules/@eslint/config-array": {
274
+ "version": "0.21.2",
275
+ "dev": true,
276
+ "license": "Apache-2.0",
277
+ "dependencies": {
278
+ "@eslint/object-schema": "^2.1.7",
279
+ "debug": "^4.3.1",
280
+ "minimatch": "^3.1.5"
281
+ },
282
+ "engines": {
283
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
284
+ }
285
+ },
286
+ "frontend/node_modules/@eslint/config-helpers": {
287
+ "version": "0.4.2",
288
+ "dev": true,
289
+ "license": "Apache-2.0",
290
+ "dependencies": {
291
+ "@eslint/core": "^0.17.0"
292
+ },
293
+ "engines": {
294
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
295
+ }
296
+ },
297
+ "frontend/node_modules/@eslint/core": {
298
+ "version": "0.17.0",
299
+ "dev": true,
300
+ "license": "Apache-2.0",
301
+ "dependencies": {
302
+ "@types/json-schema": "^7.0.15"
303
+ },
304
+ "engines": {
305
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
306
+ }
307
+ },
308
+ "frontend/node_modules/@eslint/eslintrc": {
309
+ "version": "3.3.5",
310
+ "dev": true,
311
+ "license": "MIT",
312
+ "dependencies": {
313
+ "ajv": "^6.14.0",
314
+ "debug": "^4.3.2",
315
+ "espree": "^10.0.1",
316
+ "globals": "^14.0.0",
317
+ "ignore": "^5.2.0",
318
+ "import-fresh": "^3.2.1",
319
+ "js-yaml": "^4.1.1",
320
+ "minimatch": "^3.1.5",
321
+ "strip-json-comments": "^3.1.1"
322
+ },
323
+ "engines": {
324
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
325
+ },
326
+ "funding": {
327
+ "url": "https://opencollective.com/eslint"
328
+ }
329
+ },
330
+ "frontend/node_modules/@eslint/eslintrc/node_modules/globals": {
331
+ "version": "14.0.0",
332
+ "dev": true,
333
+ "license": "MIT",
334
+ "engines": {
335
+ "node": ">=18"
336
+ },
337
+ "funding": {
338
+ "url": "https://github.com/sponsors/sindresorhus"
339
+ }
340
+ },
341
+ "frontend/node_modules/@eslint/js": {
342
+ "version": "9.39.4",
343
+ "dev": true,
344
+ "license": "MIT",
345
+ "engines": {
346
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
347
+ },
348
+ "funding": {
349
+ "url": "https://eslint.org/donate"
350
+ }
351
+ },
352
+ "frontend/node_modules/@eslint/object-schema": {
353
+ "version": "2.1.7",
354
+ "dev": true,
355
+ "license": "Apache-2.0",
356
+ "engines": {
357
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
358
+ }
359
+ },
360
+ "frontend/node_modules/@eslint/plugin-kit": {
361
+ "version": "0.4.1",
362
+ "dev": true,
363
+ "license": "Apache-2.0",
364
+ "dependencies": {
365
+ "@eslint/core": "^0.17.0",
366
+ "levn": "^0.4.1"
367
+ },
368
+ "engines": {
369
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
370
+ }
371
+ },
372
+ "frontend/node_modules/@humanfs/core": {
373
+ "version": "0.19.1",
374
+ "dev": true,
375
+ "license": "Apache-2.0",
376
+ "engines": {
377
+ "node": ">=18.18.0"
378
+ }
379
+ },
380
+ "frontend/node_modules/@humanfs/node": {
381
+ "version": "0.16.7",
382
+ "dev": true,
383
+ "license": "Apache-2.0",
384
+ "dependencies": {
385
+ "@humanfs/core": "^0.19.1",
386
+ "@humanwhocodes/retry": "^0.4.0"
387
+ },
388
+ "engines": {
389
+ "node": ">=18.18.0"
390
+ }
391
+ },
392
+ "frontend/node_modules/@humanwhocodes/module-importer": {
393
+ "version": "1.0.1",
394
+ "dev": true,
395
+ "license": "Apache-2.0",
396
+ "engines": {
397
+ "node": ">=12.22"
398
+ },
399
+ "funding": {
400
+ "type": "github",
401
+ "url": "https://github.com/sponsors/nzakas"
402
+ }
403
+ },
404
+ "frontend/node_modules/@humanwhocodes/retry": {
405
+ "version": "0.4.3",
406
+ "dev": true,
407
+ "license": "Apache-2.0",
408
+ "engines": {
409
+ "node": ">=18.18"
410
+ },
411
+ "funding": {
412
+ "type": "github",
413
+ "url": "https://github.com/sponsors/nzakas"
414
+ }
415
+ },
416
+ "frontend/node_modules/@jridgewell/gen-mapping": {
417
+ "version": "0.3.13",
418
+ "dev": true,
419
+ "license": "MIT",
420
+ "dependencies": {
421
+ "@jridgewell/sourcemap-codec": "^1.5.0",
422
+ "@jridgewell/trace-mapping": "^0.3.24"
423
+ }
424
+ },
425
+ "frontend/node_modules/@jridgewell/remapping": {
426
+ "version": "2.3.5",
427
+ "dev": true,
428
+ "license": "MIT",
429
+ "dependencies": {
430
+ "@jridgewell/gen-mapping": "^0.3.5",
431
+ "@jridgewell/trace-mapping": "^0.3.24"
432
+ }
433
+ },
434
+ "frontend/node_modules/@jridgewell/resolve-uri": {
435
+ "version": "3.1.2",
436
+ "dev": true,
437
+ "license": "MIT",
438
+ "engines": {
439
+ "node": ">=6.0.0"
440
+ }
441
+ },
442
+ "frontend/node_modules/@jridgewell/sourcemap-codec": {
443
+ "version": "1.5.5",
444
+ "dev": true,
445
+ "license": "MIT"
446
+ },
447
+ "frontend/node_modules/@jridgewell/trace-mapping": {
448
+ "version": "0.3.31",
449
+ "dev": true,
450
+ "license": "MIT",
451
+ "dependencies": {
452
+ "@jridgewell/resolve-uri": "^3.1.0",
453
+ "@jridgewell/sourcemap-codec": "^1.4.14"
454
+ }
455
+ },
456
+ "frontend/node_modules/@oxc-project/types": {
457
+ "version": "0.124.0",
458
+ "dev": true,
459
+ "license": "MIT",
460
+ "funding": {
461
+ "url": "https://github.com/sponsors/Boshen"
462
+ }
463
+ },
464
+ "frontend/node_modules/@rolldown/binding-win32-x64-msvc": {
465
+ "version": "1.0.0-rc.15",
466
+ "cpu": [
467
+ "x64"
468
+ ],
469
+ "dev": true,
470
+ "license": "MIT",
471
+ "optional": true,
472
+ "os": [
473
+ "win32"
474
+ ],
475
+ "engines": {
476
+ "node": "^20.19.0 || >=22.12.0"
477
+ }
478
+ },
479
+ "frontend/node_modules/@rolldown/pluginutils": {
480
+ "version": "1.0.0-rc.7",
481
+ "dev": true,
482
+ "license": "MIT"
483
+ },
484
+ "frontend/node_modules/@types/estree": {
485
+ "version": "1.0.8",
486
+ "dev": true,
487
+ "license": "MIT"
488
+ },
489
+ "frontend/node_modules/@types/json-schema": {
490
+ "version": "7.0.15",
491
+ "dev": true,
492
+ "license": "MIT"
493
+ },
494
+ "frontend/node_modules/@types/node": {
495
+ "version": "24.12.2",
496
+ "dev": true,
497
+ "license": "MIT",
498
+ "dependencies": {
499
+ "undici-types": "~7.16.0"
500
+ }
501
+ },
502
+ "frontend/node_modules/@types/react": {
503
+ "version": "19.2.14",
504
+ "dev": true,
505
+ "license": "MIT",
506
+ "dependencies": {
507
+ "csstype": "^3.2.2"
508
+ }
509
+ },
510
+ "frontend/node_modules/@types/react-dom": {
511
+ "version": "19.2.3",
512
+ "dev": true,
513
+ "license": "MIT",
514
+ "peerDependencies": {
515
+ "@types/react": "^19.2.0"
516
+ }
517
+ },
518
+ "frontend/node_modules/@typescript-eslint/eslint-plugin": {
519
+ "version": "8.58.1",
520
+ "dev": true,
521
+ "license": "MIT",
522
+ "dependencies": {
523
+ "@eslint-community/regexpp": "^4.12.2",
524
+ "@typescript-eslint/scope-manager": "8.58.1",
525
+ "@typescript-eslint/type-utils": "8.58.1",
526
+ "@typescript-eslint/utils": "8.58.1",
527
+ "@typescript-eslint/visitor-keys": "8.58.1",
528
+ "ignore": "^7.0.5",
529
+ "natural-compare": "^1.4.0",
530
+ "ts-api-utils": "^2.5.0"
531
+ },
532
+ "engines": {
533
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
534
+ },
535
+ "funding": {
536
+ "type": "opencollective",
537
+ "url": "https://opencollective.com/typescript-eslint"
538
+ },
539
+ "peerDependencies": {
540
+ "@typescript-eslint/parser": "^8.58.1",
541
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
542
+ "typescript": ">=4.8.4 <6.1.0"
543
+ }
544
+ },
545
+ "frontend/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
546
+ "version": "7.0.5",
547
+ "dev": true,
548
+ "license": "MIT",
549
+ "engines": {
550
+ "node": ">= 4"
551
+ }
552
+ },
553
+ "frontend/node_modules/@typescript-eslint/parser": {
554
+ "version": "8.58.1",
555
+ "dev": true,
556
+ "license": "MIT",
557
+ "dependencies": {
558
+ "@typescript-eslint/scope-manager": "8.58.1",
559
+ "@typescript-eslint/types": "8.58.1",
560
+ "@typescript-eslint/typescript-estree": "8.58.1",
561
+ "@typescript-eslint/visitor-keys": "8.58.1",
562
+ "debug": "^4.4.3"
563
+ },
564
+ "engines": {
565
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
566
+ },
567
+ "funding": {
568
+ "type": "opencollective",
569
+ "url": "https://opencollective.com/typescript-eslint"
570
+ },
571
+ "peerDependencies": {
572
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
573
+ "typescript": ">=4.8.4 <6.1.0"
574
+ }
575
+ },
576
+ "frontend/node_modules/@typescript-eslint/project-service": {
577
+ "version": "8.58.1",
578
+ "dev": true,
579
+ "license": "MIT",
580
+ "dependencies": {
581
+ "@typescript-eslint/tsconfig-utils": "^8.58.1",
582
+ "@typescript-eslint/types": "^8.58.1",
583
+ "debug": "^4.4.3"
584
+ },
585
+ "engines": {
586
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
587
+ },
588
+ "funding": {
589
+ "type": "opencollective",
590
+ "url": "https://opencollective.com/typescript-eslint"
591
+ },
592
+ "peerDependencies": {
593
+ "typescript": ">=4.8.4 <6.1.0"
594
+ }
595
+ },
596
+ "frontend/node_modules/@typescript-eslint/scope-manager": {
597
+ "version": "8.58.1",
598
+ "dev": true,
599
+ "license": "MIT",
600
+ "dependencies": {
601
+ "@typescript-eslint/types": "8.58.1",
602
+ "@typescript-eslint/visitor-keys": "8.58.1"
603
+ },
604
+ "engines": {
605
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
606
+ },
607
+ "funding": {
608
+ "type": "opencollective",
609
+ "url": "https://opencollective.com/typescript-eslint"
610
+ }
611
+ },
612
+ "frontend/node_modules/@typescript-eslint/tsconfig-utils": {
613
+ "version": "8.58.1",
614
+ "dev": true,
615
+ "license": "MIT",
616
+ "engines": {
617
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
618
+ },
619
+ "funding": {
620
+ "type": "opencollective",
621
+ "url": "https://opencollective.com/typescript-eslint"
622
+ },
623
+ "peerDependencies": {
624
+ "typescript": ">=4.8.4 <6.1.0"
625
+ }
626
+ },
627
+ "frontend/node_modules/@typescript-eslint/type-utils": {
628
+ "version": "8.58.1",
629
+ "dev": true,
630
+ "license": "MIT",
631
+ "dependencies": {
632
+ "@typescript-eslint/types": "8.58.1",
633
+ "@typescript-eslint/typescript-estree": "8.58.1",
634
+ "@typescript-eslint/utils": "8.58.1",
635
+ "debug": "^4.4.3",
636
+ "ts-api-utils": "^2.5.0"
637
+ },
638
+ "engines": {
639
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
640
+ },
641
+ "funding": {
642
+ "type": "opencollective",
643
+ "url": "https://opencollective.com/typescript-eslint"
644
+ },
645
+ "peerDependencies": {
646
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
647
+ "typescript": ">=4.8.4 <6.1.0"
648
+ }
649
+ },
650
+ "frontend/node_modules/@typescript-eslint/types": {
651
+ "version": "8.58.1",
652
+ "dev": true,
653
+ "license": "MIT",
654
+ "engines": {
655
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
656
+ },
657
+ "funding": {
658
+ "type": "opencollective",
659
+ "url": "https://opencollective.com/typescript-eslint"
660
+ }
661
+ },
662
+ "frontend/node_modules/@typescript-eslint/typescript-estree": {
663
+ "version": "8.58.1",
664
+ "dev": true,
665
+ "license": "MIT",
666
+ "dependencies": {
667
+ "@typescript-eslint/project-service": "8.58.1",
668
+ "@typescript-eslint/tsconfig-utils": "8.58.1",
669
+ "@typescript-eslint/types": "8.58.1",
670
+ "@typescript-eslint/visitor-keys": "8.58.1",
671
+ "debug": "^4.4.3",
672
+ "minimatch": "^10.2.2",
673
+ "semver": "^7.7.3",
674
+ "tinyglobby": "^0.2.15",
675
+ "ts-api-utils": "^2.5.0"
676
+ },
677
+ "engines": {
678
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
679
+ },
680
+ "funding": {
681
+ "type": "opencollective",
682
+ "url": "https://opencollective.com/typescript-eslint"
683
+ },
684
+ "peerDependencies": {
685
+ "typescript": ">=4.8.4 <6.1.0"
686
+ }
687
+ },
688
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
689
+ "version": "4.0.4",
690
+ "dev": true,
691
+ "license": "MIT",
692
+ "engines": {
693
+ "node": "18 || 20 || >=22"
694
+ }
695
+ },
696
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
697
+ "version": "5.0.5",
698
+ "dev": true,
699
+ "license": "MIT",
700
+ "dependencies": {
701
+ "balanced-match": "^4.0.2"
702
+ },
703
+ "engines": {
704
+ "node": "18 || 20 || >=22"
705
+ }
706
+ },
707
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
708
+ "version": "10.2.5",
709
+ "dev": true,
710
+ "license": "BlueOak-1.0.0",
711
+ "dependencies": {
712
+ "brace-expansion": "^5.0.5"
713
+ },
714
+ "engines": {
715
+ "node": "18 || 20 || >=22"
716
+ },
717
+ "funding": {
718
+ "url": "https://github.com/sponsors/isaacs"
719
+ }
720
+ },
721
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
722
+ "version": "7.7.4",
723
+ "dev": true,
724
+ "license": "ISC",
725
+ "bin": {
726
+ "semver": "bin/semver.js"
727
+ },
728
+ "engines": {
729
+ "node": ">=10"
730
+ }
731
+ },
732
+ "frontend/node_modules/@typescript-eslint/utils": {
733
+ "version": "8.58.1",
734
+ "dev": true,
735
+ "license": "MIT",
736
+ "dependencies": {
737
+ "@eslint-community/eslint-utils": "^4.9.1",
738
+ "@typescript-eslint/scope-manager": "8.58.1",
739
+ "@typescript-eslint/types": "8.58.1",
740
+ "@typescript-eslint/typescript-estree": "8.58.1"
741
+ },
742
+ "engines": {
743
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
744
+ },
745
+ "funding": {
746
+ "type": "opencollective",
747
+ "url": "https://opencollective.com/typescript-eslint"
748
+ },
749
+ "peerDependencies": {
750
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
751
+ "typescript": ">=4.8.4 <6.1.0"
752
+ }
753
+ },
754
+ "frontend/node_modules/@typescript-eslint/visitor-keys": {
755
+ "version": "8.58.1",
756
+ "dev": true,
757
+ "license": "MIT",
758
+ "dependencies": {
759
+ "@typescript-eslint/types": "8.58.1",
760
+ "eslint-visitor-keys": "^5.0.0"
761
+ },
762
+ "engines": {
763
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
764
+ },
765
+ "funding": {
766
+ "type": "opencollective",
767
+ "url": "https://opencollective.com/typescript-eslint"
768
+ }
769
+ },
770
+ "frontend/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
771
+ "version": "5.0.1",
772
+ "dev": true,
773
+ "license": "Apache-2.0",
774
+ "engines": {
775
+ "node": "^20.19.0 || ^22.13.0 || >=24"
776
+ },
777
+ "funding": {
778
+ "url": "https://opencollective.com/eslint"
779
+ }
780
+ },
781
+ "frontend/node_modules/@vitejs/plugin-react": {
782
+ "version": "6.0.1",
783
+ "dev": true,
784
+ "license": "MIT",
785
+ "dependencies": {
786
+ "@rolldown/pluginutils": "1.0.0-rc.7"
787
+ },
788
+ "engines": {
789
+ "node": "^20.19.0 || >=22.12.0"
790
+ },
791
+ "peerDependencies": {
792
+ "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
793
+ "babel-plugin-react-compiler": "^1.0.0",
794
+ "vite": "^8.0.0"
795
+ },
796
+ "peerDependenciesMeta": {
797
+ "@rolldown/plugin-babel": {
798
+ "optional": true
799
+ },
800
+ "babel-plugin-react-compiler": {
801
+ "optional": true
802
+ }
803
+ }
804
+ },
805
+ "frontend/node_modules/acorn": {
806
+ "version": "8.16.0",
807
+ "dev": true,
808
+ "license": "MIT",
809
+ "bin": {
810
+ "acorn": "bin/acorn"
811
+ },
812
+ "engines": {
813
+ "node": ">=0.4.0"
814
+ }
815
+ },
816
+ "frontend/node_modules/acorn-jsx": {
817
+ "version": "5.3.2",
818
+ "dev": true,
819
+ "license": "MIT",
820
+ "peerDependencies": {
821
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
822
+ }
823
+ },
824
+ "frontend/node_modules/ajv": {
825
+ "version": "6.14.0",
826
+ "dev": true,
827
+ "license": "MIT",
828
+ "dependencies": {
829
+ "fast-deep-equal": "^3.1.1",
830
+ "fast-json-stable-stringify": "^2.0.0",
831
+ "json-schema-traverse": "^0.4.1",
832
+ "uri-js": "^4.2.2"
833
+ },
834
+ "funding": {
835
+ "type": "github",
836
+ "url": "https://github.com/sponsors/epoberezkin"
837
+ }
838
+ },
839
+ "frontend/node_modules/ansi-styles": {
840
+ "version": "4.3.0",
841
+ "dev": true,
842
+ "license": "MIT",
843
+ "dependencies": {
844
+ "color-convert": "^2.0.1"
845
+ },
846
+ "engines": {
847
+ "node": ">=8"
848
+ },
849
+ "funding": {
850
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
851
+ }
852
+ },
853
+ "frontend/node_modules/argparse": {
854
+ "version": "2.0.1",
855
+ "dev": true,
856
+ "license": "Python-2.0"
857
+ },
858
+ "frontend/node_modules/asynckit": {
859
+ "version": "0.4.0",
860
+ "license": "MIT"
861
+ },
862
+ "frontend/node_modules/axios": {
863
+ "version": "1.15.0",
864
+ "license": "MIT",
865
+ "dependencies": {
866
+ "follow-redirects": "^1.15.11",
867
+ "form-data": "^4.0.5",
868
+ "proxy-from-env": "^2.1.0"
869
+ }
870
+ },
871
+ "frontend/node_modules/balanced-match": {
872
+ "version": "1.0.2",
873
+ "dev": true,
874
+ "license": "MIT"
875
+ },
876
+ "frontend/node_modules/baseline-browser-mapping": {
877
+ "version": "2.10.18",
878
+ "dev": true,
879
+ "license": "Apache-2.0",
880
+ "bin": {
881
+ "baseline-browser-mapping": "dist/cli.cjs"
882
+ },
883
+ "engines": {
884
+ "node": ">=6.0.0"
885
+ }
886
+ },
887
+ "frontend/node_modules/brace-expansion": {
888
+ "version": "1.1.14",
889
+ "dev": true,
890
+ "license": "MIT",
891
+ "dependencies": {
892
+ "balanced-match": "^1.0.0",
893
+ "concat-map": "0.0.1"
894
+ }
895
+ },
896
+ "frontend/node_modules/browserslist": {
897
+ "version": "4.28.2",
898
+ "dev": true,
899
+ "funding": [
900
+ {
901
+ "type": "opencollective",
902
+ "url": "https://opencollective.com/browserslist"
903
+ },
904
+ {
905
+ "type": "tidelift",
906
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
907
+ },
908
+ {
909
+ "type": "github",
910
+ "url": "https://github.com/sponsors/ai"
911
+ }
912
+ ],
913
+ "license": "MIT",
914
+ "dependencies": {
915
+ "baseline-browser-mapping": "^2.10.12",
916
+ "caniuse-lite": "^1.0.30001782",
917
+ "electron-to-chromium": "^1.5.328",
918
+ "node-releases": "^2.0.36",
919
+ "update-browserslist-db": "^1.2.3"
920
+ },
921
+ "bin": {
922
+ "browserslist": "cli.js"
923
+ },
924
+ "engines": {
925
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
926
+ }
927
+ },
928
+ "frontend/node_modules/call-bind-apply-helpers": {
929
+ "version": "1.0.2",
930
+ "license": "MIT",
931
+ "dependencies": {
932
+ "es-errors": "^1.3.0",
933
+ "function-bind": "^1.1.2"
934
+ },
935
+ "engines": {
936
+ "node": ">= 0.4"
937
+ }
938
+ },
939
+ "frontend/node_modules/callsites": {
940
+ "version": "3.1.0",
941
+ "dev": true,
942
+ "license": "MIT",
943
+ "engines": {
944
+ "node": ">=6"
945
+ }
946
+ },
947
+ "frontend/node_modules/caniuse-lite": {
948
+ "version": "1.0.30001787",
949
+ "dev": true,
950
+ "funding": [
951
+ {
952
+ "type": "opencollective",
953
+ "url": "https://opencollective.com/browserslist"
954
+ },
955
+ {
956
+ "type": "tidelift",
957
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
958
+ },
959
+ {
960
+ "type": "github",
961
+ "url": "https://github.com/sponsors/ai"
962
+ }
963
+ ],
964
+ "license": "CC-BY-4.0"
965
+ },
966
+ "frontend/node_modules/chalk": {
967
+ "version": "4.1.2",
968
+ "dev": true,
969
+ "license": "MIT",
970
+ "dependencies": {
971
+ "ansi-styles": "^4.1.0",
972
+ "supports-color": "^7.1.0"
973
+ },
974
+ "engines": {
975
+ "node": ">=10"
976
+ },
977
+ "funding": {
978
+ "url": "https://github.com/chalk/chalk?sponsor=1"
979
+ }
980
+ },
981
+ "frontend/node_modules/color-convert": {
982
+ "version": "2.0.1",
983
+ "dev": true,
984
+ "license": "MIT",
985
+ "dependencies": {
986
+ "color-name": "~1.1.4"
987
+ },
988
+ "engines": {
989
+ "node": ">=7.0.0"
990
+ }
991
+ },
992
+ "frontend/node_modules/color-name": {
993
+ "version": "1.1.4",
994
+ "dev": true,
995
+ "license": "MIT"
996
+ },
997
+ "frontend/node_modules/combined-stream": {
998
+ "version": "1.0.8",
999
+ "license": "MIT",
1000
+ "dependencies": {
1001
+ "delayed-stream": "~1.0.0"
1002
+ },
1003
+ "engines": {
1004
+ "node": ">= 0.8"
1005
+ }
1006
+ },
1007
+ "frontend/node_modules/concat-map": {
1008
+ "version": "0.0.1",
1009
+ "dev": true,
1010
+ "license": "MIT"
1011
+ },
1012
+ "frontend/node_modules/convert-source-map": {
1013
+ "version": "2.0.0",
1014
+ "dev": true,
1015
+ "license": "MIT"
1016
+ },
1017
+ "frontend/node_modules/cross-spawn": {
1018
+ "version": "7.0.6",
1019
+ "dev": true,
1020
+ "license": "MIT",
1021
+ "dependencies": {
1022
+ "path-key": "^3.1.0",
1023
+ "shebang-command": "^2.0.0",
1024
+ "which": "^2.0.1"
1025
+ },
1026
+ "engines": {
1027
+ "node": ">= 8"
1028
+ }
1029
+ },
1030
+ "frontend/node_modules/csstype": {
1031
+ "version": "3.2.3",
1032
+ "dev": true,
1033
+ "license": "MIT"
1034
+ },
1035
+ "frontend/node_modules/debug": {
1036
+ "version": "4.4.3",
1037
+ "dev": true,
1038
+ "license": "MIT",
1039
+ "dependencies": {
1040
+ "ms": "^2.1.3"
1041
+ },
1042
+ "engines": {
1043
+ "node": ">=6.0"
1044
+ },
1045
+ "peerDependenciesMeta": {
1046
+ "supports-color": {
1047
+ "optional": true
1048
+ }
1049
+ }
1050
+ },
1051
+ "frontend/node_modules/deep-is": {
1052
+ "version": "0.1.4",
1053
+ "dev": true,
1054
+ "license": "MIT"
1055
+ },
1056
+ "frontend/node_modules/delayed-stream": {
1057
+ "version": "1.0.0",
1058
+ "license": "MIT",
1059
+ "engines": {
1060
+ "node": ">=0.4.0"
1061
+ }
1062
+ },
1063
+ "frontend/node_modules/detect-libc": {
1064
+ "version": "2.1.2",
1065
+ "dev": true,
1066
+ "license": "Apache-2.0",
1067
+ "engines": {
1068
+ "node": ">=8"
1069
+ }
1070
+ },
1071
+ "frontend/node_modules/dunder-proto": {
1072
+ "version": "1.0.1",
1073
+ "license": "MIT",
1074
+ "dependencies": {
1075
+ "call-bind-apply-helpers": "^1.0.1",
1076
+ "es-errors": "^1.3.0",
1077
+ "gopd": "^1.2.0"
1078
+ },
1079
+ "engines": {
1080
+ "node": ">= 0.4"
1081
+ }
1082
+ },
1083
+ "frontend/node_modules/electron-to-chromium": {
1084
+ "version": "1.5.335",
1085
+ "dev": true,
1086
+ "license": "ISC"
1087
+ },
1088
+ "frontend/node_modules/es-define-property": {
1089
+ "version": "1.0.1",
1090
+ "license": "MIT",
1091
+ "engines": {
1092
+ "node": ">= 0.4"
1093
+ }
1094
+ },
1095
+ "frontend/node_modules/es-errors": {
1096
+ "version": "1.3.0",
1097
+ "license": "MIT",
1098
+ "engines": {
1099
+ "node": ">= 0.4"
1100
+ }
1101
+ },
1102
+ "frontend/node_modules/es-object-atoms": {
1103
+ "version": "1.1.1",
1104
+ "license": "MIT",
1105
+ "dependencies": {
1106
+ "es-errors": "^1.3.0"
1107
+ },
1108
+ "engines": {
1109
+ "node": ">= 0.4"
1110
+ }
1111
+ },
1112
+ "frontend/node_modules/es-set-tostringtag": {
1113
+ "version": "2.1.0",
1114
+ "license": "MIT",
1115
+ "dependencies": {
1116
+ "es-errors": "^1.3.0",
1117
+ "get-intrinsic": "^1.2.6",
1118
+ "has-tostringtag": "^1.0.2",
1119
+ "hasown": "^2.0.2"
1120
+ },
1121
+ "engines": {
1122
+ "node": ">= 0.4"
1123
+ }
1124
+ },
1125
+ "frontend/node_modules/escalade": {
1126
+ "version": "3.2.0",
1127
+ "dev": true,
1128
+ "license": "MIT",
1129
+ "engines": {
1130
+ "node": ">=6"
1131
+ }
1132
+ },
1133
+ "frontend/node_modules/escape-string-regexp": {
1134
+ "version": "4.0.0",
1135
+ "dev": true,
1136
+ "license": "MIT",
1137
+ "engines": {
1138
+ "node": ">=10"
1139
+ },
1140
+ "funding": {
1141
+ "url": "https://github.com/sponsors/sindresorhus"
1142
+ }
1143
+ },
1144
+ "frontend/node_modules/eslint": {
1145
+ "version": "9.39.4",
1146
+ "dev": true,
1147
+ "license": "MIT",
1148
+ "dependencies": {
1149
+ "@eslint-community/eslint-utils": "^4.8.0",
1150
+ "@eslint-community/regexpp": "^4.12.1",
1151
+ "@eslint/config-array": "^0.21.2",
1152
+ "@eslint/config-helpers": "^0.4.2",
1153
+ "@eslint/core": "^0.17.0",
1154
+ "@eslint/eslintrc": "^3.3.5",
1155
+ "@eslint/js": "9.39.4",
1156
+ "@eslint/plugin-kit": "^0.4.1",
1157
+ "@humanfs/node": "^0.16.6",
1158
+ "@humanwhocodes/module-importer": "^1.0.1",
1159
+ "@humanwhocodes/retry": "^0.4.2",
1160
+ "@types/estree": "^1.0.6",
1161
+ "ajv": "^6.14.0",
1162
+ "chalk": "^4.0.0",
1163
+ "cross-spawn": "^7.0.6",
1164
+ "debug": "^4.3.2",
1165
+ "escape-string-regexp": "^4.0.0",
1166
+ "eslint-scope": "^8.4.0",
1167
+ "eslint-visitor-keys": "^4.2.1",
1168
+ "espree": "^10.4.0",
1169
+ "esquery": "^1.5.0",
1170
+ "esutils": "^2.0.2",
1171
+ "fast-deep-equal": "^3.1.3",
1172
+ "file-entry-cache": "^8.0.0",
1173
+ "find-up": "^5.0.0",
1174
+ "glob-parent": "^6.0.2",
1175
+ "ignore": "^5.2.0",
1176
+ "imurmurhash": "^0.1.4",
1177
+ "is-glob": "^4.0.0",
1178
+ "json-stable-stringify-without-jsonify": "^1.0.1",
1179
+ "lodash.merge": "^4.6.2",
1180
+ "minimatch": "^3.1.5",
1181
+ "natural-compare": "^1.4.0",
1182
+ "optionator": "^0.9.3"
1183
+ },
1184
+ "bin": {
1185
+ "eslint": "bin/eslint.js"
1186
+ },
1187
+ "engines": {
1188
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1189
+ },
1190
+ "funding": {
1191
+ "url": "https://eslint.org/donate"
1192
+ },
1193
+ "peerDependencies": {
1194
+ "jiti": "*"
1195
+ },
1196
+ "peerDependenciesMeta": {
1197
+ "jiti": {
1198
+ "optional": true
1199
+ }
1200
+ }
1201
+ },
1202
+ "frontend/node_modules/eslint-plugin-react-hooks": {
1203
+ "version": "7.0.1",
1204
+ "dev": true,
1205
+ "license": "MIT",
1206
+ "dependencies": {
1207
+ "@babel/core": "^7.24.4",
1208
+ "@babel/parser": "^7.24.4",
1209
+ "hermes-parser": "^0.25.1",
1210
+ "zod": "^3.25.0 || ^4.0.0",
1211
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
1212
+ },
1213
+ "engines": {
1214
+ "node": ">=18"
1215
+ },
1216
+ "peerDependencies": {
1217
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
1218
+ }
1219
+ },
1220
+ "frontend/node_modules/eslint-plugin-react-refresh": {
1221
+ "version": "0.5.2",
1222
+ "dev": true,
1223
+ "license": "MIT",
1224
+ "peerDependencies": {
1225
+ "eslint": "^9 || ^10"
1226
+ }
1227
+ },
1228
+ "frontend/node_modules/eslint-scope": {
1229
+ "version": "8.4.0",
1230
+ "dev": true,
1231
+ "license": "BSD-2-Clause",
1232
+ "dependencies": {
1233
+ "esrecurse": "^4.3.0",
1234
+ "estraverse": "^5.2.0"
1235
+ },
1236
+ "engines": {
1237
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1238
+ },
1239
+ "funding": {
1240
+ "url": "https://opencollective.com/eslint"
1241
+ }
1242
+ },
1243
+ "frontend/node_modules/eslint-visitor-keys": {
1244
+ "version": "4.2.1",
1245
+ "dev": true,
1246
+ "license": "Apache-2.0",
1247
+ "engines": {
1248
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1249
+ },
1250
+ "funding": {
1251
+ "url": "https://opencollective.com/eslint"
1252
+ }
1253
+ },
1254
+ "frontend/node_modules/espree": {
1255
+ "version": "10.4.0",
1256
+ "dev": true,
1257
+ "license": "BSD-2-Clause",
1258
+ "dependencies": {
1259
+ "acorn": "^8.15.0",
1260
+ "acorn-jsx": "^5.3.2",
1261
+ "eslint-visitor-keys": "^4.2.1"
1262
+ },
1263
+ "engines": {
1264
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1265
+ },
1266
+ "funding": {
1267
+ "url": "https://opencollective.com/eslint"
1268
+ }
1269
+ },
1270
+ "frontend/node_modules/esquery": {
1271
+ "version": "1.7.0",
1272
+ "dev": true,
1273
+ "license": "BSD-3-Clause",
1274
+ "dependencies": {
1275
+ "estraverse": "^5.1.0"
1276
+ },
1277
+ "engines": {
1278
+ "node": ">=0.10"
1279
+ }
1280
+ },
1281
+ "frontend/node_modules/esrecurse": {
1282
+ "version": "4.3.0",
1283
+ "dev": true,
1284
+ "license": "BSD-2-Clause",
1285
+ "dependencies": {
1286
+ "estraverse": "^5.2.0"
1287
+ },
1288
+ "engines": {
1289
+ "node": ">=4.0"
1290
+ }
1291
+ },
1292
+ "frontend/node_modules/estraverse": {
1293
+ "version": "5.3.0",
1294
+ "dev": true,
1295
+ "license": "BSD-2-Clause",
1296
+ "engines": {
1297
+ "node": ">=4.0"
1298
+ }
1299
+ },
1300
+ "frontend/node_modules/esutils": {
1301
+ "version": "2.0.3",
1302
+ "dev": true,
1303
+ "license": "BSD-2-Clause",
1304
+ "engines": {
1305
+ "node": ">=0.10.0"
1306
+ }
1307
+ },
1308
+ "frontend/node_modules/fast-deep-equal": {
1309
+ "version": "3.1.3",
1310
+ "dev": true,
1311
+ "license": "MIT"
1312
+ },
1313
+ "frontend/node_modules/fast-json-stable-stringify": {
1314
+ "version": "2.1.0",
1315
+ "dev": true,
1316
+ "license": "MIT"
1317
+ },
1318
+ "frontend/node_modules/fast-levenshtein": {
1319
+ "version": "2.0.6",
1320
+ "dev": true,
1321
+ "license": "MIT"
1322
+ },
1323
+ "frontend/node_modules/fdir": {
1324
+ "version": "6.5.0",
1325
+ "dev": true,
1326
+ "license": "MIT",
1327
+ "engines": {
1328
+ "node": ">=12.0.0"
1329
+ },
1330
+ "peerDependencies": {
1331
+ "picomatch": "^3 || ^4"
1332
+ },
1333
+ "peerDependenciesMeta": {
1334
+ "picomatch": {
1335
+ "optional": true
1336
+ }
1337
+ }
1338
+ },
1339
+ "frontend/node_modules/file-entry-cache": {
1340
+ "version": "8.0.0",
1341
+ "dev": true,
1342
+ "license": "MIT",
1343
+ "dependencies": {
1344
+ "flat-cache": "^4.0.0"
1345
+ },
1346
+ "engines": {
1347
+ "node": ">=16.0.0"
1348
+ }
1349
+ },
1350
+ "frontend/node_modules/find-up": {
1351
+ "version": "5.0.0",
1352
+ "dev": true,
1353
+ "license": "MIT",
1354
+ "dependencies": {
1355
+ "locate-path": "^6.0.0",
1356
+ "path-exists": "^4.0.0"
1357
+ },
1358
+ "engines": {
1359
+ "node": ">=10"
1360
+ },
1361
+ "funding": {
1362
+ "url": "https://github.com/sponsors/sindresorhus"
1363
+ }
1364
+ },
1365
+ "frontend/node_modules/flat-cache": {
1366
+ "version": "4.0.1",
1367
+ "dev": true,
1368
+ "license": "MIT",
1369
+ "dependencies": {
1370
+ "flatted": "^3.2.9",
1371
+ "keyv": "^4.5.4"
1372
+ },
1373
+ "engines": {
1374
+ "node": ">=16"
1375
+ }
1376
+ },
1377
+ "frontend/node_modules/flatted": {
1378
+ "version": "3.4.2",
1379
+ "dev": true,
1380
+ "license": "ISC"
1381
+ },
1382
+ "frontend/node_modules/follow-redirects": {
1383
+ "version": "1.15.11",
1384
+ "funding": [
1385
+ {
1386
+ "type": "individual",
1387
+ "url": "https://github.com/sponsors/RubenVerborgh"
1388
+ }
1389
+ ],
1390
+ "license": "MIT",
1391
+ "engines": {
1392
+ "node": ">=4.0"
1393
+ },
1394
+ "peerDependenciesMeta": {
1395
+ "debug": {
1396
+ "optional": true
1397
+ }
1398
+ }
1399
+ },
1400
+ "frontend/node_modules/form-data": {
1401
+ "version": "4.0.5",
1402
+ "license": "MIT",
1403
+ "dependencies": {
1404
+ "asynckit": "^0.4.0",
1405
+ "combined-stream": "^1.0.8",
1406
+ "es-set-tostringtag": "^2.1.0",
1407
+ "hasown": "^2.0.2",
1408
+ "mime-types": "^2.1.12"
1409
+ },
1410
+ "engines": {
1411
+ "node": ">= 6"
1412
+ }
1413
+ },
1414
+ "frontend/node_modules/function-bind": {
1415
+ "version": "1.1.2",
1416
+ "license": "MIT",
1417
+ "funding": {
1418
+ "url": "https://github.com/sponsors/ljharb"
1419
+ }
1420
+ },
1421
+ "frontend/node_modules/gensync": {
1422
+ "version": "1.0.0-beta.2",
1423
+ "dev": true,
1424
+ "license": "MIT",
1425
+ "engines": {
1426
+ "node": ">=6.9.0"
1427
+ }
1428
+ },
1429
+ "frontend/node_modules/get-intrinsic": {
1430
+ "version": "1.3.0",
1431
+ "license": "MIT",
1432
+ "dependencies": {
1433
+ "call-bind-apply-helpers": "^1.0.2",
1434
+ "es-define-property": "^1.0.1",
1435
+ "es-errors": "^1.3.0",
1436
+ "es-object-atoms": "^1.1.1",
1437
+ "function-bind": "^1.1.2",
1438
+ "get-proto": "^1.0.1",
1439
+ "gopd": "^1.2.0",
1440
+ "has-symbols": "^1.1.0",
1441
+ "hasown": "^2.0.2",
1442
+ "math-intrinsics": "^1.1.0"
1443
+ },
1444
+ "engines": {
1445
+ "node": ">= 0.4"
1446
+ },
1447
+ "funding": {
1448
+ "url": "https://github.com/sponsors/ljharb"
1449
+ }
1450
+ },
1451
+ "frontend/node_modules/get-proto": {
1452
+ "version": "1.0.1",
1453
+ "license": "MIT",
1454
+ "dependencies": {
1455
+ "dunder-proto": "^1.0.1",
1456
+ "es-object-atoms": "^1.0.0"
1457
+ },
1458
+ "engines": {
1459
+ "node": ">= 0.4"
1460
+ }
1461
+ },
1462
+ "frontend/node_modules/glob-parent": {
1463
+ "version": "6.0.2",
1464
+ "dev": true,
1465
+ "license": "ISC",
1466
+ "dependencies": {
1467
+ "is-glob": "^4.0.3"
1468
+ },
1469
+ "engines": {
1470
+ "node": ">=10.13.0"
1471
+ }
1472
+ },
1473
+ "frontend/node_modules/globals": {
1474
+ "version": "17.5.0",
1475
+ "dev": true,
1476
+ "license": "MIT",
1477
+ "engines": {
1478
+ "node": ">=18"
1479
+ },
1480
+ "funding": {
1481
+ "url": "https://github.com/sponsors/sindresorhus"
1482
+ }
1483
+ },
1484
+ "frontend/node_modules/gopd": {
1485
+ "version": "1.2.0",
1486
+ "license": "MIT",
1487
+ "engines": {
1488
+ "node": ">= 0.4"
1489
+ },
1490
+ "funding": {
1491
+ "url": "https://github.com/sponsors/ljharb"
1492
+ }
1493
+ },
1494
+ "frontend/node_modules/has-flag": {
1495
+ "version": "4.0.0",
1496
+ "dev": true,
1497
+ "license": "MIT",
1498
+ "engines": {
1499
+ "node": ">=8"
1500
+ }
1501
+ },
1502
+ "frontend/node_modules/has-symbols": {
1503
+ "version": "1.1.0",
1504
+ "license": "MIT",
1505
+ "engines": {
1506
+ "node": ">= 0.4"
1507
+ },
1508
+ "funding": {
1509
+ "url": "https://github.com/sponsors/ljharb"
1510
+ }
1511
+ },
1512
+ "frontend/node_modules/has-tostringtag": {
1513
+ "version": "1.0.2",
1514
+ "license": "MIT",
1515
+ "dependencies": {
1516
+ "has-symbols": "^1.0.3"
1517
+ },
1518
+ "engines": {
1519
+ "node": ">= 0.4"
1520
+ },
1521
+ "funding": {
1522
+ "url": "https://github.com/sponsors/ljharb"
1523
+ }
1524
+ },
1525
+ "frontend/node_modules/hasown": {
1526
+ "version": "2.0.2",
1527
+ "license": "MIT",
1528
+ "dependencies": {
1529
+ "function-bind": "^1.1.2"
1530
+ },
1531
+ "engines": {
1532
+ "node": ">= 0.4"
1533
+ }
1534
+ },
1535
+ "frontend/node_modules/hermes-estree": {
1536
+ "version": "0.25.1",
1537
+ "dev": true,
1538
+ "license": "MIT"
1539
+ },
1540
+ "frontend/node_modules/hermes-parser": {
1541
+ "version": "0.25.1",
1542
+ "dev": true,
1543
+ "license": "MIT",
1544
+ "dependencies": {
1545
+ "hermes-estree": "0.25.1"
1546
+ }
1547
+ },
1548
+ "frontend/node_modules/ignore": {
1549
+ "version": "5.3.2",
1550
+ "dev": true,
1551
+ "license": "MIT",
1552
+ "engines": {
1553
+ "node": ">= 4"
1554
+ }
1555
+ },
1556
+ "frontend/node_modules/import-fresh": {
1557
+ "version": "3.3.1",
1558
+ "dev": true,
1559
+ "license": "MIT",
1560
+ "dependencies": {
1561
+ "parent-module": "^1.0.0",
1562
+ "resolve-from": "^4.0.0"
1563
+ },
1564
+ "engines": {
1565
+ "node": ">=6"
1566
+ },
1567
+ "funding": {
1568
+ "url": "https://github.com/sponsors/sindresorhus"
1569
+ }
1570
+ },
1571
+ "frontend/node_modules/imurmurhash": {
1572
+ "version": "0.1.4",
1573
+ "dev": true,
1574
+ "license": "MIT",
1575
+ "engines": {
1576
+ "node": ">=0.8.19"
1577
+ }
1578
+ },
1579
+ "frontend/node_modules/is-extglob": {
1580
+ "version": "2.1.1",
1581
+ "dev": true,
1582
+ "license": "MIT",
1583
+ "engines": {
1584
+ "node": ">=0.10.0"
1585
+ }
1586
+ },
1587
+ "frontend/node_modules/is-glob": {
1588
+ "version": "4.0.3",
1589
+ "dev": true,
1590
+ "license": "MIT",
1591
+ "dependencies": {
1592
+ "is-extglob": "^2.1.1"
1593
+ },
1594
+ "engines": {
1595
+ "node": ">=0.10.0"
1596
+ }
1597
+ },
1598
+ "frontend/node_modules/isexe": {
1599
+ "version": "2.0.0",
1600
+ "dev": true,
1601
+ "license": "ISC"
1602
+ },
1603
+ "frontend/node_modules/js-tokens": {
1604
+ "version": "4.0.0",
1605
+ "dev": true,
1606
+ "license": "MIT"
1607
+ },
1608
+ "frontend/node_modules/js-yaml": {
1609
+ "version": "4.1.1",
1610
+ "dev": true,
1611
+ "license": "MIT",
1612
+ "dependencies": {
1613
+ "argparse": "^2.0.1"
1614
+ },
1615
+ "bin": {
1616
+ "js-yaml": "bin/js-yaml.js"
1617
+ }
1618
+ },
1619
+ "frontend/node_modules/jsesc": {
1620
+ "version": "3.1.0",
1621
+ "dev": true,
1622
+ "license": "MIT",
1623
+ "bin": {
1624
+ "jsesc": "bin/jsesc"
1625
+ },
1626
+ "engines": {
1627
+ "node": ">=6"
1628
+ }
1629
+ },
1630
+ "frontend/node_modules/json-buffer": {
1631
+ "version": "3.0.1",
1632
+ "dev": true,
1633
+ "license": "MIT"
1634
+ },
1635
+ "frontend/node_modules/json-schema-traverse": {
1636
+ "version": "0.4.1",
1637
+ "dev": true,
1638
+ "license": "MIT"
1639
+ },
1640
+ "frontend/node_modules/json-stable-stringify-without-jsonify": {
1641
+ "version": "1.0.1",
1642
+ "dev": true,
1643
+ "license": "MIT"
1644
+ },
1645
+ "frontend/node_modules/json5": {
1646
+ "version": "2.2.3",
1647
+ "dev": true,
1648
+ "license": "MIT",
1649
+ "bin": {
1650
+ "json5": "lib/cli.js"
1651
+ },
1652
+ "engines": {
1653
+ "node": ">=6"
1654
+ }
1655
+ },
1656
+ "frontend/node_modules/keyv": {
1657
+ "version": "4.5.4",
1658
+ "dev": true,
1659
+ "license": "MIT",
1660
+ "dependencies": {
1661
+ "json-buffer": "3.0.1"
1662
+ }
1663
+ },
1664
+ "frontend/node_modules/levn": {
1665
+ "version": "0.4.1",
1666
+ "dev": true,
1667
+ "license": "MIT",
1668
+ "dependencies": {
1669
+ "prelude-ls": "^1.2.1",
1670
+ "type-check": "~0.4.0"
1671
+ },
1672
+ "engines": {
1673
+ "node": ">= 0.8.0"
1674
+ }
1675
+ },
1676
+ "frontend/node_modules/lightningcss": {
1677
+ "version": "1.32.0",
1678
+ "dev": true,
1679
+ "license": "MPL-2.0",
1680
+ "dependencies": {
1681
+ "detect-libc": "^2.0.3"
1682
+ },
1683
+ "engines": {
1684
+ "node": ">= 12.0.0"
1685
+ },
1686
+ "funding": {
1687
+ "type": "opencollective",
1688
+ "url": "https://opencollective.com/parcel"
1689
+ },
1690
+ "optionalDependencies": {
1691
+ "lightningcss-android-arm64": "1.32.0",
1692
+ "lightningcss-darwin-arm64": "1.32.0",
1693
+ "lightningcss-darwin-x64": "1.32.0",
1694
+ "lightningcss-freebsd-x64": "1.32.0",
1695
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
1696
+ "lightningcss-linux-arm64-gnu": "1.32.0",
1697
+ "lightningcss-linux-arm64-musl": "1.32.0",
1698
+ "lightningcss-linux-x64-gnu": "1.32.0",
1699
+ "lightningcss-linux-x64-musl": "1.32.0",
1700
+ "lightningcss-win32-arm64-msvc": "1.32.0",
1701
+ "lightningcss-win32-x64-msvc": "1.32.0"
1702
+ }
1703
+ },
1704
+ "frontend/node_modules/lightningcss-win32-x64-msvc": {
1705
+ "version": "1.32.0",
1706
+ "cpu": [
1707
+ "x64"
1708
+ ],
1709
+ "dev": true,
1710
+ "license": "MPL-2.0",
1711
+ "optional": true,
1712
+ "os": [
1713
+ "win32"
1714
+ ],
1715
+ "engines": {
1716
+ "node": ">= 12.0.0"
1717
+ },
1718
+ "funding": {
1719
+ "type": "opencollective",
1720
+ "url": "https://opencollective.com/parcel"
1721
+ }
1722
+ },
1723
+ "frontend/node_modules/locate-path": {
1724
+ "version": "6.0.0",
1725
+ "dev": true,
1726
+ "license": "MIT",
1727
+ "dependencies": {
1728
+ "p-locate": "^5.0.0"
1729
+ },
1730
+ "engines": {
1731
+ "node": ">=10"
1732
+ },
1733
+ "funding": {
1734
+ "url": "https://github.com/sponsors/sindresorhus"
1735
+ }
1736
+ },
1737
+ "frontend/node_modules/lodash.merge": {
1738
+ "version": "4.6.2",
1739
+ "dev": true,
1740
+ "license": "MIT"
1741
+ },
1742
+ "frontend/node_modules/lru-cache": {
1743
+ "version": "5.1.1",
1744
+ "dev": true,
1745
+ "license": "ISC",
1746
+ "dependencies": {
1747
+ "yallist": "^3.0.2"
1748
+ }
1749
+ },
1750
+ "frontend/node_modules/math-intrinsics": {
1751
+ "version": "1.1.0",
1752
+ "license": "MIT",
1753
+ "engines": {
1754
+ "node": ">= 0.4"
1755
+ }
1756
+ },
1757
+ "frontend/node_modules/mime-db": {
1758
+ "version": "1.52.0",
1759
+ "license": "MIT",
1760
+ "engines": {
1761
+ "node": ">= 0.6"
1762
+ }
1763
+ },
1764
+ "frontend/node_modules/mime-types": {
1765
+ "version": "2.1.35",
1766
+ "license": "MIT",
1767
+ "dependencies": {
1768
+ "mime-db": "1.52.0"
1769
+ },
1770
+ "engines": {
1771
+ "node": ">= 0.6"
1772
+ }
1773
+ },
1774
+ "frontend/node_modules/minimatch": {
1775
+ "version": "3.1.5",
1776
+ "dev": true,
1777
+ "license": "ISC",
1778
+ "dependencies": {
1779
+ "brace-expansion": "^1.1.7"
1780
+ },
1781
+ "engines": {
1782
+ "node": "*"
1783
+ }
1784
+ },
1785
+ "frontend/node_modules/ms": {
1786
+ "version": "2.1.3",
1787
+ "dev": true,
1788
+ "license": "MIT"
1789
+ },
1790
+ "frontend/node_modules/nanoid": {
1791
+ "version": "3.3.11",
1792
+ "dev": true,
1793
+ "funding": [
1794
+ {
1795
+ "type": "github",
1796
+ "url": "https://github.com/sponsors/ai"
1797
+ }
1798
+ ],
1799
+ "license": "MIT",
1800
+ "bin": {
1801
+ "nanoid": "bin/nanoid.cjs"
1802
+ },
1803
+ "engines": {
1804
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1805
+ }
1806
+ },
1807
+ "frontend/node_modules/natural-compare": {
1808
+ "version": "1.4.0",
1809
+ "dev": true,
1810
+ "license": "MIT"
1811
+ },
1812
+ "frontend/node_modules/node-releases": {
1813
+ "version": "2.0.37",
1814
+ "dev": true,
1815
+ "license": "MIT"
1816
+ },
1817
+ "frontend/node_modules/optionator": {
1818
+ "version": "0.9.4",
1819
+ "dev": true,
1820
+ "license": "MIT",
1821
+ "dependencies": {
1822
+ "deep-is": "^0.1.3",
1823
+ "fast-levenshtein": "^2.0.6",
1824
+ "levn": "^0.4.1",
1825
+ "prelude-ls": "^1.2.1",
1826
+ "type-check": "^0.4.0",
1827
+ "word-wrap": "^1.2.5"
1828
+ },
1829
+ "engines": {
1830
+ "node": ">= 0.8.0"
1831
+ }
1832
+ },
1833
+ "frontend/node_modules/p-limit": {
1834
+ "version": "3.1.0",
1835
+ "dev": true,
1836
+ "license": "MIT",
1837
+ "dependencies": {
1838
+ "yocto-queue": "^0.1.0"
1839
+ },
1840
+ "engines": {
1841
+ "node": ">=10"
1842
+ },
1843
+ "funding": {
1844
+ "url": "https://github.com/sponsors/sindresorhus"
1845
+ }
1846
+ },
1847
+ "frontend/node_modules/p-locate": {
1848
+ "version": "5.0.0",
1849
+ "dev": true,
1850
+ "license": "MIT",
1851
+ "dependencies": {
1852
+ "p-limit": "^3.0.2"
1853
+ },
1854
+ "engines": {
1855
+ "node": ">=10"
1856
+ },
1857
+ "funding": {
1858
+ "url": "https://github.com/sponsors/sindresorhus"
1859
+ }
1860
+ },
1861
+ "frontend/node_modules/parent-module": {
1862
+ "version": "1.0.1",
1863
+ "dev": true,
1864
+ "license": "MIT",
1865
+ "dependencies": {
1866
+ "callsites": "^3.0.0"
1867
+ },
1868
+ "engines": {
1869
+ "node": ">=6"
1870
+ }
1871
+ },
1872
+ "frontend/node_modules/path-exists": {
1873
+ "version": "4.0.0",
1874
+ "dev": true,
1875
+ "license": "MIT",
1876
+ "engines": {
1877
+ "node": ">=8"
1878
+ }
1879
+ },
1880
+ "frontend/node_modules/path-key": {
1881
+ "version": "3.1.1",
1882
+ "dev": true,
1883
+ "license": "MIT",
1884
+ "engines": {
1885
+ "node": ">=8"
1886
+ }
1887
+ },
1888
+ "frontend/node_modules/picocolors": {
1889
+ "version": "1.1.1",
1890
+ "dev": true,
1891
+ "license": "ISC"
1892
+ },
1893
+ "frontend/node_modules/picomatch": {
1894
+ "version": "4.0.4",
1895
+ "dev": true,
1896
+ "license": "MIT",
1897
+ "engines": {
1898
+ "node": ">=12"
1899
+ },
1900
+ "funding": {
1901
+ "url": "https://github.com/sponsors/jonschlinkert"
1902
+ }
1903
+ },
1904
+ "frontend/node_modules/postcss": {
1905
+ "version": "8.5.9",
1906
+ "dev": true,
1907
+ "funding": [
1908
+ {
1909
+ "type": "opencollective",
1910
+ "url": "https://opencollective.com/postcss/"
1911
+ },
1912
+ {
1913
+ "type": "tidelift",
1914
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1915
+ },
1916
+ {
1917
+ "type": "github",
1918
+ "url": "https://github.com/sponsors/ai"
1919
+ }
1920
+ ],
1921
+ "license": "MIT",
1922
+ "dependencies": {
1923
+ "nanoid": "^3.3.11",
1924
+ "picocolors": "^1.1.1",
1925
+ "source-map-js": "^1.2.1"
1926
+ },
1927
+ "engines": {
1928
+ "node": "^10 || ^12 || >=14"
1929
+ }
1930
+ },
1931
+ "frontend/node_modules/prelude-ls": {
1932
+ "version": "1.2.1",
1933
+ "dev": true,
1934
+ "license": "MIT",
1935
+ "engines": {
1936
+ "node": ">= 0.8.0"
1937
+ }
1938
+ },
1939
+ "frontend/node_modules/proxy-from-env": {
1940
+ "version": "2.1.0",
1941
+ "license": "MIT",
1942
+ "engines": {
1943
+ "node": ">=10"
1944
+ }
1945
+ },
1946
+ "frontend/node_modules/punycode": {
1947
+ "version": "2.3.1",
1948
+ "dev": true,
1949
+ "license": "MIT",
1950
+ "engines": {
1951
+ "node": ">=6"
1952
+ }
1953
+ },
1954
+ "frontend/node_modules/react": {
1955
+ "version": "19.2.5",
1956
+ "license": "MIT",
1957
+ "engines": {
1958
+ "node": ">=0.10.0"
1959
+ }
1960
+ },
1961
+ "frontend/node_modules/react-dom": {
1962
+ "version": "19.2.5",
1963
+ "license": "MIT",
1964
+ "dependencies": {
1965
+ "scheduler": "^0.27.0"
1966
+ },
1967
+ "peerDependencies": {
1968
+ "react": "^19.2.5"
1969
+ }
1970
+ },
1971
+ "frontend/node_modules/resolve-from": {
1972
+ "version": "4.0.0",
1973
+ "dev": true,
1974
+ "license": "MIT",
1975
+ "engines": {
1976
+ "node": ">=4"
1977
+ }
1978
+ },
1979
+ "frontend/node_modules/rolldown": {
1980
+ "version": "1.0.0-rc.15",
1981
+ "dev": true,
1982
+ "license": "MIT",
1983
+ "dependencies": {
1984
+ "@oxc-project/types": "=0.124.0",
1985
+ "@rolldown/pluginutils": "1.0.0-rc.15"
1986
+ },
1987
+ "bin": {
1988
+ "rolldown": "bin/cli.mjs"
1989
+ },
1990
+ "engines": {
1991
+ "node": "^20.19.0 || >=22.12.0"
1992
+ },
1993
+ "optionalDependencies": {
1994
+ "@rolldown/binding-android-arm64": "1.0.0-rc.15",
1995
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.15",
1996
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.15",
1997
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.15",
1998
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15",
1999
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15",
2000
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15",
2001
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15",
2002
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15",
2003
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15",
2004
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15",
2005
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15",
2006
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15",
2007
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15",
2008
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15"
2009
+ }
2010
+ },
2011
+ "frontend/node_modules/rolldown/node_modules/@rolldown/pluginutils": {
2012
+ "version": "1.0.0-rc.15",
2013
+ "dev": true,
2014
+ "license": "MIT"
2015
+ },
2016
+ "frontend/node_modules/scheduler": {
2017
+ "version": "0.27.0",
2018
+ "license": "MIT"
2019
+ },
2020
+ "frontend/node_modules/semver": {
2021
+ "version": "6.3.1",
2022
+ "dev": true,
2023
+ "license": "ISC",
2024
+ "bin": {
2025
+ "semver": "bin/semver.js"
2026
+ }
2027
+ },
2028
+ "frontend/node_modules/shebang-command": {
2029
+ "version": "2.0.0",
2030
+ "dev": true,
2031
+ "license": "MIT",
2032
+ "dependencies": {
2033
+ "shebang-regex": "^3.0.0"
2034
+ },
2035
+ "engines": {
2036
+ "node": ">=8"
2037
+ }
2038
+ },
2039
+ "frontend/node_modules/shebang-regex": {
2040
+ "version": "3.0.0",
2041
+ "dev": true,
2042
+ "license": "MIT",
2043
+ "engines": {
2044
+ "node": ">=8"
2045
+ }
2046
+ },
2047
+ "frontend/node_modules/source-map-js": {
2048
+ "version": "1.2.1",
2049
+ "dev": true,
2050
+ "license": "BSD-3-Clause",
2051
+ "engines": {
2052
+ "node": ">=0.10.0"
2053
+ }
2054
+ },
2055
+ "frontend/node_modules/strip-json-comments": {
2056
+ "version": "3.1.1",
2057
+ "dev": true,
2058
+ "license": "MIT",
2059
+ "engines": {
2060
+ "node": ">=8"
2061
+ },
2062
+ "funding": {
2063
+ "url": "https://github.com/sponsors/sindresorhus"
2064
+ }
2065
+ },
2066
+ "frontend/node_modules/supports-color": {
2067
+ "version": "7.2.0",
2068
+ "dev": true,
2069
+ "license": "MIT",
2070
+ "dependencies": {
2071
+ "has-flag": "^4.0.0"
2072
+ },
2073
+ "engines": {
2074
+ "node": ">=8"
2075
+ }
2076
+ },
2077
+ "frontend/node_modules/tinyglobby": {
2078
+ "version": "0.2.16",
2079
+ "dev": true,
2080
+ "license": "MIT",
2081
+ "dependencies": {
2082
+ "fdir": "^6.5.0",
2083
+ "picomatch": "^4.0.4"
2084
+ },
2085
+ "engines": {
2086
+ "node": ">=12.0.0"
2087
+ },
2088
+ "funding": {
2089
+ "url": "https://github.com/sponsors/SuperchupuDev"
2090
+ }
2091
+ },
2092
+ "frontend/node_modules/ts-api-utils": {
2093
+ "version": "2.5.0",
2094
+ "dev": true,
2095
+ "license": "MIT",
2096
+ "engines": {
2097
+ "node": ">=18.12"
2098
+ },
2099
+ "peerDependencies": {
2100
+ "typescript": ">=4.8.4"
2101
+ }
2102
+ },
2103
+ "frontend/node_modules/type-check": {
2104
+ "version": "0.4.0",
2105
+ "dev": true,
2106
+ "license": "MIT",
2107
+ "dependencies": {
2108
+ "prelude-ls": "^1.2.1"
2109
+ },
2110
+ "engines": {
2111
+ "node": ">= 0.8.0"
2112
+ }
2113
+ },
2114
+ "frontend/node_modules/typescript": {
2115
+ "version": "6.0.2",
2116
+ "dev": true,
2117
+ "license": "Apache-2.0",
2118
+ "bin": {
2119
+ "tsc": "bin/tsc",
2120
+ "tsserver": "bin/tsserver"
2121
+ },
2122
+ "engines": {
2123
+ "node": ">=14.17"
2124
+ }
2125
+ },
2126
+ "frontend/node_modules/typescript-eslint": {
2127
+ "version": "8.58.1",
2128
+ "dev": true,
2129
+ "license": "MIT",
2130
+ "dependencies": {
2131
+ "@typescript-eslint/eslint-plugin": "8.58.1",
2132
+ "@typescript-eslint/parser": "8.58.1",
2133
+ "@typescript-eslint/typescript-estree": "8.58.1",
2134
+ "@typescript-eslint/utils": "8.58.1"
2135
+ },
2136
+ "engines": {
2137
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2138
+ },
2139
+ "funding": {
2140
+ "type": "opencollective",
2141
+ "url": "https://opencollective.com/typescript-eslint"
2142
+ },
2143
+ "peerDependencies": {
2144
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
2145
+ "typescript": ">=4.8.4 <6.1.0"
2146
+ }
2147
+ },
2148
+ "frontend/node_modules/undici-types": {
2149
+ "version": "7.16.0",
2150
+ "dev": true,
2151
+ "license": "MIT"
2152
+ },
2153
+ "frontend/node_modules/update-browserslist-db": {
2154
+ "version": "1.2.3",
2155
+ "dev": true,
2156
+ "funding": [
2157
+ {
2158
+ "type": "opencollective",
2159
+ "url": "https://opencollective.com/browserslist"
2160
+ },
2161
+ {
2162
+ "type": "tidelift",
2163
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2164
+ },
2165
+ {
2166
+ "type": "github",
2167
+ "url": "https://github.com/sponsors/ai"
2168
+ }
2169
+ ],
2170
+ "license": "MIT",
2171
+ "dependencies": {
2172
+ "escalade": "^3.2.0",
2173
+ "picocolors": "^1.1.1"
2174
+ },
2175
+ "bin": {
2176
+ "update-browserslist-db": "cli.js"
2177
+ },
2178
+ "peerDependencies": {
2179
+ "browserslist": ">= 4.21.0"
2180
+ }
2181
+ },
2182
+ "frontend/node_modules/uri-js": {
2183
+ "version": "4.4.1",
2184
+ "dev": true,
2185
+ "license": "BSD-2-Clause",
2186
+ "dependencies": {
2187
+ "punycode": "^2.1.0"
2188
+ }
2189
+ },
2190
+ "frontend/node_modules/vite": {
2191
+ "version": "8.0.8",
2192
+ "dev": true,
2193
+ "license": "MIT",
2194
+ "dependencies": {
2195
+ "lightningcss": "^1.32.0",
2196
+ "picomatch": "^4.0.4",
2197
+ "postcss": "^8.5.8",
2198
+ "rolldown": "1.0.0-rc.15",
2199
+ "tinyglobby": "^0.2.15"
2200
+ },
2201
+ "bin": {
2202
+ "vite": "bin/vite.js"
2203
+ },
2204
+ "engines": {
2205
+ "node": "^20.19.0 || >=22.12.0"
2206
+ },
2207
+ "funding": {
2208
+ "url": "https://github.com/vitejs/vite?sponsor=1"
2209
+ },
2210
+ "optionalDependencies": {
2211
+ "fsevents": "~2.3.3"
2212
+ },
2213
+ "peerDependencies": {
2214
+ "@types/node": "^20.19.0 || >=22.12.0",
2215
+ "@vitejs/devtools": "^0.1.0",
2216
+ "esbuild": "^0.27.0 || ^0.28.0",
2217
+ "jiti": ">=1.21.0",
2218
+ "less": "^4.0.0",
2219
+ "sass": "^1.70.0",
2220
+ "sass-embedded": "^1.70.0",
2221
+ "stylus": ">=0.54.8",
2222
+ "sugarss": "^5.0.0",
2223
+ "terser": "^5.16.0",
2224
+ "tsx": "^4.8.1",
2225
+ "yaml": "^2.4.2"
2226
+ },
2227
+ "peerDependenciesMeta": {
2228
+ "@types/node": {
2229
+ "optional": true
2230
+ },
2231
+ "@vitejs/devtools": {
2232
+ "optional": true
2233
+ },
2234
+ "esbuild": {
2235
+ "optional": true
2236
+ },
2237
+ "jiti": {
2238
+ "optional": true
2239
+ },
2240
+ "less": {
2241
+ "optional": true
2242
+ },
2243
+ "sass": {
2244
+ "optional": true
2245
+ },
2246
+ "sass-embedded": {
2247
+ "optional": true
2248
+ },
2249
+ "stylus": {
2250
+ "optional": true
2251
+ },
2252
+ "sugarss": {
2253
+ "optional": true
2254
+ },
2255
+ "terser": {
2256
+ "optional": true
2257
+ },
2258
+ "tsx": {
2259
+ "optional": true
2260
+ },
2261
+ "yaml": {
2262
+ "optional": true
2263
+ }
2264
+ }
2265
+ },
2266
+ "frontend/node_modules/which": {
2267
+ "version": "2.0.2",
2268
+ "dev": true,
2269
+ "license": "ISC",
2270
+ "dependencies": {
2271
+ "isexe": "^2.0.0"
2272
+ },
2273
+ "bin": {
2274
+ "node-which": "bin/node-which"
2275
+ },
2276
+ "engines": {
2277
+ "node": ">= 8"
2278
+ }
2279
+ },
2280
+ "frontend/node_modules/word-wrap": {
2281
+ "version": "1.2.5",
2282
+ "dev": true,
2283
+ "license": "MIT",
2284
+ "engines": {
2285
+ "node": ">=0.10.0"
2286
+ }
2287
+ },
2288
+ "frontend/node_modules/yallist": {
2289
+ "version": "3.1.1",
2290
+ "dev": true,
2291
+ "license": "ISC"
2292
+ },
2293
+ "frontend/node_modules/yocto-queue": {
2294
+ "version": "0.1.0",
2295
+ "dev": true,
2296
+ "license": "MIT",
2297
+ "engines": {
2298
+ "node": ">=10"
2299
+ },
2300
+ "funding": {
2301
+ "url": "https://github.com/sponsors/sindresorhus"
2302
+ }
2303
+ },
2304
+ "frontend/node_modules/zod": {
2305
+ "version": "4.3.6",
2306
+ "dev": true,
2307
+ "license": "MIT",
2308
+ "funding": {
2309
+ "url": "https://github.com/sponsors/colinhacks"
2310
+ }
2311
+ },
2312
+ "frontend/node_modules/zod-validation-error": {
2313
+ "version": "4.0.2",
2314
+ "dev": true,
2315
+ "license": "MIT",
2316
+ "engines": {
2317
+ "node": ">=18.0.0"
2318
+ },
2319
+ "peerDependencies": {
2320
+ "zod": "^3.25.0 || ^4.0.0"
2321
+ }
2322
+ },
2323
+ "node_modules/frontend": {
2324
+ "resolved": "frontend",
2325
+ "link": true
2326
+ }
2327
+ }
2328
+ }
node_modules/frontend/.env.example ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ # API Configuration
2
+ # For local development with separate backend server, use:
3
+ # VITE_API_URL=http://localhost:8000
4
+
5
+ # For Vercel deployment (monorepo with serverless functions), leave empty or use:
6
+ # VITE_API_URL=/api
7
+
8
+ # The default is /api which works for Vercel deployment
9
+ VITE_API_URL=/api
node_modules/frontend/.gitignore ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
node_modules/frontend/README.md ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # React + TypeScript + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
9
+
10
+ ## React Compiler
11
+
12
+ The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
+
14
+ ## Expanding the ESLint configuration
15
+
16
+ If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
+
18
+ ```js
19
+ export default defineConfig([
20
+ globalIgnores(['dist']),
21
+ {
22
+ files: ['**/*.{ts,tsx}'],
23
+ extends: [
24
+ // Other configs...
25
+
26
+ // Remove tseslint.configs.recommended and replace with this
27
+ tseslint.configs.recommendedTypeChecked,
28
+ // Alternatively, use this for stricter rules
29
+ tseslint.configs.strictTypeChecked,
30
+ // Optionally, add this for stylistic rules
31
+ tseslint.configs.stylisticTypeChecked,
32
+
33
+ // Other configs...
34
+ ],
35
+ languageOptions: {
36
+ parserOptions: {
37
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
+ tsconfigRootDir: import.meta.dirname,
39
+ },
40
+ // other options...
41
+ },
42
+ },
43
+ ])
44
+ ```
45
+
46
+ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
+
48
+ ```js
49
+ // eslint.config.js
50
+ import reactX from 'eslint-plugin-react-x'
51
+ import reactDom from 'eslint-plugin-react-dom'
52
+
53
+ export default defineConfig([
54
+ globalIgnores(['dist']),
55
+ {
56
+ files: ['**/*.{ts,tsx}'],
57
+ extends: [
58
+ // Other configs...
59
+ // Enable lint rules for React
60
+ reactX.configs['recommended-typescript'],
61
+ // Enable lint rules for React DOM
62
+ reactDom.configs.recommended,
63
+ ],
64
+ languageOptions: {
65
+ parserOptions: {
66
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
+ tsconfigRootDir: import.meta.dirname,
68
+ },
69
+ // other options...
70
+ },
71
+ },
72
+ ])
73
+ ```
node_modules/frontend/eslint.config.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import tseslint from 'typescript-eslint'
6
+ import { defineConfig, globalIgnores } from 'eslint/config'
7
+
8
+ export default defineConfig([
9
+ globalIgnores(['dist']),
10
+ {
11
+ files: ['**/*.{ts,tsx}'],
12
+ extends: [
13
+ js.configs.recommended,
14
+ tseslint.configs.recommended,
15
+ reactHooks.configs.flat.recommended,
16
+ reactRefresh.configs.vite,
17
+ ],
18
+ languageOptions: {
19
+ ecmaVersion: 2020,
20
+ globals: globals.browser,
21
+ },
22
+ },
23
+ ])
node_modules/frontend/index.html ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>frontend</title>
8
+ </head>
9
+ <body>
10
+ <div id="root"></div>
11
+ <script type="module" src="/src/main.tsx"></script>
12
+ </body>
13
+ </html>
node_modules/frontend/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
node_modules/frontend/package.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "lint": "eslint .",
10
+ "preview": "vite preview"
11
+ },
12
+ "dependencies": {
13
+ "axios": "^1.15.0",
14
+ "react": "^19.2.4",
15
+ "react-dom": "^19.2.4"
16
+ },
17
+ "devDependencies": {
18
+ "@eslint/js": "^9.39.4",
19
+ "@types/node": "^24.12.2",
20
+ "@types/react": "^19.2.14",
21
+ "@types/react-dom": "^19.2.3",
22
+ "@vitejs/plugin-react": "^6.0.1",
23
+ "eslint": "^9.39.4",
24
+ "eslint-plugin-react-hooks": "^7.0.1",
25
+ "eslint-plugin-react-refresh": "^0.5.2",
26
+ "globals": "^17.4.0",
27
+ "typescript": "~6.0.2",
28
+ "typescript-eslint": "^8.58.0",
29
+ "vite": "^8.0.4"
30
+ }
31
+ }
node_modules/frontend/public/favicon.svg ADDED
node_modules/frontend/public/icons.svg ADDED
node_modules/frontend/src/App.css ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Chat Container */
2
+ .chat-container {
3
+ display: flex;
4
+ flex-direction: column;
5
+ height: 100vh;
6
+ max-width: 900px;
7
+ margin: 0 auto;
8
+ background: var(--bg);
9
+ }
10
+
11
+ /* Chat Header */
12
+ .chat-header {
13
+ padding: 24px;
14
+ border-bottom: 1px solid var(--border);
15
+ text-align: center;
16
+ background: var(--bg);
17
+ }
18
+
19
+ .chat-header h1 {
20
+ margin: 0 0 8px 0;
21
+ font-size: 24px;
22
+ color: var(--text-h);
23
+ }
24
+
25
+ .chat-header p {
26
+ margin: 0;
27
+ font-size: 14px;
28
+ color: var(--text);
29
+ opacity: 0.8;
30
+ }
31
+
32
+ /* Chat Messages Area */
33
+ .chat-messages {
34
+ flex: 1;
35
+ overflow-y: auto;
36
+ padding: 24px;
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: 16px;
40
+ }
41
+
42
+ .empty-state {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ height: 100%;
47
+ color: var(--text);
48
+ opacity: 0.6;
49
+ font-size: 14px;
50
+ }
51
+
52
+ /* Message Styles */
53
+ .message {
54
+ display: flex;
55
+ flex-direction: column;
56
+ max-width: 80%;
57
+ animation: fadeIn 0.3s ease-in;
58
+ }
59
+
60
+ @keyframes fadeIn {
61
+ from {
62
+ opacity: 0;
63
+ transform: translateY(10px);
64
+ }
65
+ to {
66
+ opacity: 1;
67
+ transform: translateY(0);
68
+ }
69
+ }
70
+
71
+ .message.user {
72
+ align-self: flex-end;
73
+ }
74
+
75
+ .message.assistant {
76
+ align-self: flex-start;
77
+ }
78
+
79
+ .message-content {
80
+ padding: 12px 16px;
81
+ border-radius: 12px;
82
+ background: var(--social-bg);
83
+ }
84
+
85
+ .message.user .message-content {
86
+ background: var(--accent-bg);
87
+ border: 1px solid var(--accent-border);
88
+ }
89
+
90
+ .message.assistant .message-content {
91
+ background: var(--social-bg);
92
+ border: 1px solid var(--border);
93
+ }
94
+
95
+ .message.assistant.escalation .message-content {
96
+ background: #fff3cd;
97
+ border: 1px solid #ffc107;
98
+ }
99
+
100
+ .message-role {
101
+ display: block;
102
+ font-size: 12px;
103
+ font-weight: 600;
104
+ margin-bottom: 6px;
105
+ color: var(--text-h);
106
+ text-transform: uppercase;
107
+ letter-spacing: 0.5px;
108
+ }
109
+
110
+ .message-content p {
111
+ margin: 0;
112
+ font-size: 15px;
113
+ line-height: 1.5;
114
+ color: var(--text);
115
+ }
116
+
117
+ /* Confidence Indicator */
118
+ .confidence-indicator {
119
+ margin-top: 12px;
120
+ padding-top: 12px;
121
+ border-top: 1px solid var(--border);
122
+ font-size: 13px;
123
+ }
124
+
125
+ .confidence-label {
126
+ font-weight: 600;
127
+ color: var(--text-h);
128
+ margin-right: 6px;
129
+ }
130
+
131
+ .confidence-text {
132
+ color: var(--text);
133
+ opacity: 0.9;
134
+ }
135
+
136
+ /* Escalation Badge */
137
+ .escalation-badge {
138
+ margin-top: 8px;
139
+ padding: 6px 12px;
140
+ background: #ffc107;
141
+ color: #000;
142
+ border-radius: 6px;
143
+ font-size: 12px;
144
+ font-weight: 600;
145
+ display: inline-block;
146
+ }
147
+
148
+ /* Loading State */
149
+ .message.loading .message-content {
150
+ opacity: 0.7;
151
+ }
152
+
153
+ .loading-text {
154
+ font-style: italic;
155
+ }
156
+
157
+ /* Chat Input Form */
158
+ .chat-input-form {
159
+ display: flex;
160
+ gap: 12px;
161
+ padding: 24px;
162
+ border-top: 1px solid var(--border);
163
+ background: var(--bg);
164
+ }
165
+
166
+ .chat-input {
167
+ flex: 1;
168
+ padding: 12px 16px;
169
+ font-size: 15px;
170
+ border: 2px solid var(--border);
171
+ border-radius: 8px;
172
+ background: var(--bg);
173
+ color: var(--text);
174
+ transition: border-color 0.3s;
175
+ }
176
+
177
+ .chat-input:focus {
178
+ outline: none;
179
+ border-color: var(--accent);
180
+ }
181
+
182
+ .chat-input:disabled {
183
+ opacity: 0.5;
184
+ cursor: not-allowed;
185
+ }
186
+
187
+ .chat-submit {
188
+ padding: 12px 24px;
189
+ font-size: 15px;
190
+ font-weight: 600;
191
+ border: 2px solid var(--accent-border);
192
+ border-radius: 8px;
193
+ background: var(--accent-bg);
194
+ color: var(--accent);
195
+ cursor: pointer;
196
+ transition: all 0.3s;
197
+ }
198
+
199
+ .chat-submit:hover:not(:disabled) {
200
+ border-color: var(--accent);
201
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
202
+ }
203
+
204
+ .chat-submit:disabled {
205
+ opacity: 0.5;
206
+ cursor: not-allowed;
207
+ }
208
+
209
+ .chat-submit:focus-visible {
210
+ outline: 2px solid var(--accent);
211
+ outline-offset: 2px;
212
+ }
213
+
214
+ /* Responsive Design */
215
+ @media (max-width: 768px) {
216
+ .chat-header {
217
+ padding: 16px;
218
+ }
219
+
220
+ .chat-header h1 {
221
+ font-size: 20px;
222
+ }
223
+
224
+ .chat-messages {
225
+ padding: 16px;
226
+ }
227
+
228
+ .message {
229
+ max-width: 90%;
230
+ }
231
+
232
+ .chat-input-form {
233
+ padding: 16px;
234
+ gap: 8px;
235
+ }
236
+
237
+ .chat-input {
238
+ font-size: 14px;
239
+ }
240
+
241
+ .chat-submit {
242
+ padding: 12px 16px;
243
+ font-size: 14px;
244
+ }
245
+ }
246
+
node_modules/frontend/src/App.tsx ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState } from 'react'
2
+ import './App.css'
3
+ import { askQuestion, ApiError } from './services/api'
4
+
5
+ interface Message {
6
+ role: 'user' | 'assistant';
7
+ content: string;
8
+ confidenceExplanation?: string;
9
+ responseType?: 'answer' | 'escalation';
10
+ }
11
+
12
+ function App() {
13
+ const [messages, setMessages] = useState<Message[]>([]);
14
+ const [input, setInput] = useState('');
15
+ const [loading, setLoading] = useState(false);
16
+
17
+ const handleSubmit = async (e: React.FormEvent) => {
18
+ e.preventDefault();
19
+
20
+ if (!input.trim() || loading) return;
21
+
22
+ const userMessage: Message = {
23
+ role: 'user',
24
+ content: input.trim()
25
+ };
26
+
27
+ setMessages(prev => [...prev, userMessage]);
28
+ const questionText = input.trim();
29
+ setInput('');
30
+ setLoading(true);
31
+
32
+ try {
33
+ const response = await askQuestion(questionText);
34
+
35
+ const assistantMessage: Message = {
36
+ role: 'assistant',
37
+ content: response.message,
38
+ confidenceExplanation: response.confidence_explanation,
39
+ responseType: response.response_type
40
+ };
41
+
42
+ setMessages(prev => [...prev, assistantMessage]);
43
+ } catch (error) {
44
+ console.error('API Error:', error);
45
+
46
+ let errorMessage = 'Sorry, something went wrong. Please try again.';
47
+
48
+ if (error instanceof ApiError) {
49
+ errorMessage = error.message;
50
+ }
51
+
52
+ const errorResponse: Message = {
53
+ role: 'assistant',
54
+ content: errorMessage,
55
+ confidenceExplanation: 'Error occurred while processing your request',
56
+ responseType: 'escalation'
57
+ };
58
+
59
+ setMessages(prev => [...prev, errorResponse]);
60
+ } finally {
61
+ setLoading(false);
62
+ }
63
+ };
64
+
65
+ return (
66
+ <div className="chat-container">
67
+ <header className="chat-header">
68
+ <h1>TaskFlow Support Chat</h1>
69
+ <p>Ask questions about TaskFlow features and documentation</p>
70
+ </header>
71
+
72
+ <div className="chat-messages">
73
+ {messages.length === 0 && (
74
+ <div className="empty-state">
75
+ <p>Start a conversation by asking a question below</p>
76
+ </div>
77
+ )}
78
+
79
+ {messages.map((message, index) => (
80
+ <div
81
+ key={index}
82
+ className={`message ${message.role} ${message.responseType || ''}`}
83
+ >
84
+ <div className="message-content">
85
+ <strong className="message-role">
86
+ {message.role === 'user' ? 'You' : 'Assistant'}
87
+ </strong>
88
+ <p>{message.content}</p>
89
+
90
+ {message.confidenceExplanation && (
91
+ <div className="confidence-indicator">
92
+ <span className="confidence-label">Confidence:</span>
93
+ <span className="confidence-text">{message.confidenceExplanation}</span>
94
+ </div>
95
+ )}
96
+
97
+ {message.responseType === 'escalation' && (
98
+ <div className="escalation-badge">
99
+ Escalated to Human Support
100
+ </div>
101
+ )}
102
+ </div>
103
+ </div>
104
+ ))}
105
+
106
+ {loading && (
107
+ <div className="message assistant loading">
108
+ <div className="message-content">
109
+ <strong className="message-role">Assistant</strong>
110
+ <p className="loading-text">Thinking...</p>
111
+ </div>
112
+ </div>
113
+ )}
114
+ </div>
115
+
116
+ <form className="chat-input-form" onSubmit={handleSubmit}>
117
+ <input
118
+ type="text"
119
+ className="chat-input"
120
+ placeholder="Ask a question about TaskFlow..."
121
+ value={input}
122
+ onChange={(e) => setInput(e.target.value)}
123
+ disabled={loading}
124
+ />
125
+ <button
126
+ type="submit"
127
+ className="chat-submit"
128
+ disabled={loading || !input.trim()}
129
+ >
130
+ {loading ? 'Sending...' : 'Send'}
131
+ </button>
132
+ </form>
133
+ </div>
134
+ )
135
+ }
136
+
137
+ export default App
node_modules/frontend/src/assets/hero.png ADDED
node_modules/frontend/src/assets/react.svg ADDED
node_modules/frontend/src/assets/vite.svg ADDED
node_modules/frontend/src/index.css ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --text: #6b6375;
3
+ --text-h: #08060d;
4
+ --bg: #fff;
5
+ --border: #e5e4e7;
6
+ --code-bg: #f4f3ec;
7
+ --accent: #aa3bff;
8
+ --accent-bg: rgba(170, 59, 255, 0.1);
9
+ --accent-border: rgba(170, 59, 255, 0.5);
10
+ --social-bg: rgba(244, 243, 236, 0.5);
11
+ --shadow:
12
+ rgba(0, 0, 0, 0.1) 0 10px 15px -3px, rgba(0, 0, 0, 0.05) 0 4px 6px -2px;
13
+
14
+ --sans: system-ui, 'Segoe UI', Roboto, sans-serif;
15
+ --heading: system-ui, 'Segoe UI', Roboto, sans-serif;
16
+ --mono: ui-monospace, Consolas, monospace;
17
+
18
+ font: 18px/145% var(--sans);
19
+ letter-spacing: 0.18px;
20
+ color-scheme: light dark;
21
+ color: var(--text);
22
+ background: var(--bg);
23
+ font-synthesis: none;
24
+ text-rendering: optimizeLegibility;
25
+ -webkit-font-smoothing: antialiased;
26
+ -moz-osx-font-smoothing: grayscale;
27
+
28
+ @media (max-width: 1024px) {
29
+ font-size: 16px;
30
+ }
31
+ }
32
+
33
+ @media (prefers-color-scheme: dark) {
34
+ :root {
35
+ --text: #9ca3af;
36
+ --text-h: #f3f4f6;
37
+ --bg: #16171d;
38
+ --border: #2e303a;
39
+ --code-bg: #1f2028;
40
+ --accent: #c084fc;
41
+ --accent-bg: rgba(192, 132, 252, 0.15);
42
+ --accent-border: rgba(192, 132, 252, 0.5);
43
+ --social-bg: rgba(47, 48, 58, 0.5);
44
+ --shadow:
45
+ rgba(0, 0, 0, 0.4) 0 10px 15px -3px, rgba(0, 0, 0, 0.25) 0 4px 6px -2px;
46
+ }
47
+
48
+ #social .button-icon {
49
+ filter: invert(1) brightness(2);
50
+ }
51
+ }
52
+
53
+ #root {
54
+ width: 1126px;
55
+ max-width: 100%;
56
+ margin: 0 auto;
57
+ text-align: center;
58
+ border-inline: 1px solid var(--border);
59
+ min-height: 100svh;
60
+ display: flex;
61
+ flex-direction: column;
62
+ box-sizing: border-box;
63
+ }
64
+
65
+ body {
66
+ margin: 0;
67
+ }
68
+
69
+ h1,
70
+ h2 {
71
+ font-family: var(--heading);
72
+ font-weight: 500;
73
+ color: var(--text-h);
74
+ }
75
+
76
+ h1 {
77
+ font-size: 56px;
78
+ letter-spacing: -1.68px;
79
+ margin: 32px 0;
80
+ @media (max-width: 1024px) {
81
+ font-size: 36px;
82
+ margin: 20px 0;
83
+ }
84
+ }
85
+ h2 {
86
+ font-size: 24px;
87
+ line-height: 118%;
88
+ letter-spacing: -0.24px;
89
+ margin: 0 0 8px;
90
+ @media (max-width: 1024px) {
91
+ font-size: 20px;
92
+ }
93
+ }
94
+ p {
95
+ margin: 0;
96
+ }
97
+
98
+ code,
99
+ .counter {
100
+ font-family: var(--mono);
101
+ display: inline-flex;
102
+ border-radius: 4px;
103
+ color: var(--text-h);
104
+ }
105
+
106
+ code {
107
+ font-size: 15px;
108
+ line-height: 135%;
109
+ padding: 4px 8px;
110
+ background: var(--code-bg);
111
+ }
node_modules/frontend/src/main.tsx ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { StrictMode } from 'react'
2
+ import { createRoot } from 'react-dom/client'
3
+ import './index.css'
4
+ import App from './App.tsx'
5
+
6
+ createRoot(document.getElementById('root')!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>,
10
+ )
node_modules/frontend/src/services/api.ts ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * API client for Smart Escalation API
3
+ * Handles communication with the backend /ask endpoint
4
+ */
5
+
6
+ // API Response Types
7
+ export interface ApiResponse {
8
+ response_type: 'answer' | 'escalation';
9
+ message: string;
10
+ confidence_explanation: string;
11
+ sources: string[] | null;
12
+ }
13
+
14
+ // API Request Types
15
+ export interface QuestionRequest {
16
+ question: string;
17
+ }
18
+
19
+ // Error Types
20
+ export class ApiError extends Error {
21
+ statusCode?: number;
22
+ originalError?: unknown;
23
+
24
+ constructor(
25
+ message: string,
26
+ statusCode?: number,
27
+ originalError?: unknown
28
+ ) {
29
+ super(message);
30
+ this.name = 'ApiError';
31
+ this.statusCode = statusCode;
32
+ this.originalError = originalError;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * Get API URL from environment variables
38
+ * For Vercel deployment, uses relative path /api
39
+ * For local development, uses localhost:8000
40
+ */
41
+ const getApiUrl = (): string => {
42
+ // In production (Vercel), use relative path to serverless function
43
+ // In development, use environment variable or default to localhost
44
+ return import.meta.env.VITE_API_URL || '/api';
45
+ };
46
+
47
+ /**
48
+ * POST a question to the /ask endpoint
49
+ *
50
+ * @param question - The customer question to submit
51
+ * @returns Promise resolving to the API response
52
+ * @throws ApiError on network errors, timeouts, or invalid responses
53
+ */
54
+ export const askQuestion = async (question: string): Promise<ApiResponse> => {
55
+ const apiUrl = getApiUrl();
56
+ const endpoint = `${apiUrl}/ask`;
57
+
58
+ // Validate input
59
+ if (!question || question.trim().length === 0) {
60
+ throw new ApiError('Question cannot be empty', 400);
61
+ }
62
+
63
+ const requestBody: QuestionRequest = {
64
+ question: question.trim()
65
+ };
66
+
67
+ try {
68
+ const controller = new AbortController();
69
+ const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeout
70
+
71
+ const response = await fetch(endpoint, {
72
+ method: 'POST',
73
+ headers: {
74
+ 'Content-Type': 'application/json',
75
+ },
76
+ body: JSON.stringify(requestBody),
77
+ signal: controller.signal,
78
+ });
79
+
80
+ clearTimeout(timeoutId);
81
+
82
+ // Handle HTTP errors
83
+ if (!response.ok) {
84
+ let errorMessage = `API request failed with status ${response.status}`;
85
+
86
+ try {
87
+ const errorData = await response.json();
88
+ errorMessage = errorData.detail || errorData.message || errorMessage;
89
+ } catch {
90
+ // If error response is not JSON, use status text
91
+ errorMessage = response.statusText || errorMessage;
92
+ }
93
+
94
+ throw new ApiError(errorMessage, response.status);
95
+ }
96
+
97
+ // Parse response
98
+ const data = await response.json();
99
+
100
+ // Validate response structure
101
+ if (!isValidApiResponse(data)) {
102
+ throw new ApiError('Invalid response format from API', 500);
103
+ }
104
+
105
+ return data;
106
+
107
+ } catch (error) {
108
+ // Handle network errors
109
+ if (error instanceof ApiError) {
110
+ throw error;
111
+ }
112
+
113
+ if (error instanceof Error) {
114
+ if (error.name === 'AbortError') {
115
+ throw new ApiError('Request timeout - please try again', 408, error);
116
+ }
117
+
118
+ if (error.message.includes('fetch')) {
119
+ throw new ApiError(
120
+ 'Unable to connect to the API. Please check your connection and try again.',
121
+ 0,
122
+ error
123
+ );
124
+ }
125
+
126
+ throw new ApiError(
127
+ `Network error: ${error.message}`,
128
+ 0,
129
+ error
130
+ );
131
+ }
132
+
133
+ throw new ApiError('An unexpected error occurred', 0, error);
134
+ }
135
+ };
136
+
137
+ /**
138
+ * Type guard to validate API response structure
139
+ */
140
+ function isValidApiResponse(data: unknown): data is ApiResponse {
141
+ if (typeof data !== 'object' || data === null) {
142
+ return false;
143
+ }
144
+
145
+ const response = data as Record<string, unknown>;
146
+
147
+ return (
148
+ typeof response.response_type === 'string' &&
149
+ (response.response_type === 'answer' || response.response_type === 'escalation') &&
150
+ typeof response.message === 'string' &&
151
+ typeof response.confidence_explanation === 'string' &&
152
+ (response.sources === null || Array.isArray(response.sources))
153
+ );
154
+ }
node_modules/frontend/tsconfig.app.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "es2023",
5
+ "lib": ["ES2023", "DOM", "DOM.Iterable"],
6
+ "module": "esnext",
7
+ "types": ["vite/client"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+ "jsx": "react-jsx",
17
+
18
+ /* Linting */
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "erasableSyntaxOnly": true,
22
+ "noFallthroughCasesInSwitch": true
23
+ },
24
+ "include": ["src"]
25
+ }
node_modules/frontend/tsconfig.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ]
7
+ }
node_modules/frontend/tsconfig.node.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "es2023",
5
+ "lib": ["ES2023"],
6
+ "module": "esnext",
7
+ "types": ["node"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+
17
+ /* Linting */
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "erasableSyntaxOnly": true,
21
+ "noFallthroughCasesInSwitch": true
22
+ },
23
+ "include": ["vite.config.ts"]
24
+ }
node_modules/frontend/vite.config.ts ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+
4
+ // https://vite.dev/config/
5
+ export default defineConfig({
6
+ plugins: [react()],
7
+ })
package-lock.json ADDED
@@ -0,0 +1,2336 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "smart-escalation-api",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "smart-escalation-api",
9
+ "version": "1.0.0",
10
+ "license": "MIT",
11
+ "workspaces": [
12
+ "frontend"
13
+ ]
14
+ },
15
+ "frontend": {
16
+ "version": "0.0.0",
17
+ "dependencies": {
18
+ "axios": "^1.15.0",
19
+ "react": "^19.2.4",
20
+ "react-dom": "^19.2.4"
21
+ },
22
+ "devDependencies": {
23
+ "@eslint/js": "^9.39.4",
24
+ "@types/node": "^24.12.2",
25
+ "@types/react": "^19.2.14",
26
+ "@types/react-dom": "^19.2.3",
27
+ "@vitejs/plugin-react": "^6.0.1",
28
+ "eslint": "^9.39.4",
29
+ "eslint-plugin-react-hooks": "^7.0.1",
30
+ "eslint-plugin-react-refresh": "^0.5.2",
31
+ "globals": "^17.4.0",
32
+ "typescript": "~6.0.2",
33
+ "typescript-eslint": "^8.58.0",
34
+ "vite": "^8.0.4"
35
+ }
36
+ },
37
+ "frontend/node_modules/@babel/code-frame": {
38
+ "version": "7.29.0",
39
+ "dev": true,
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "@babel/helper-validator-identifier": "^7.28.5",
43
+ "js-tokens": "^4.0.0",
44
+ "picocolors": "^1.1.1"
45
+ },
46
+ "engines": {
47
+ "node": ">=6.9.0"
48
+ }
49
+ },
50
+ "frontend/node_modules/@babel/compat-data": {
51
+ "version": "7.29.0",
52
+ "dev": true,
53
+ "license": "MIT",
54
+ "engines": {
55
+ "node": ">=6.9.0"
56
+ }
57
+ },
58
+ "frontend/node_modules/@babel/core": {
59
+ "version": "7.29.0",
60
+ "dev": true,
61
+ "license": "MIT",
62
+ "dependencies": {
63
+ "@babel/code-frame": "^7.29.0",
64
+ "@babel/generator": "^7.29.0",
65
+ "@babel/helper-compilation-targets": "^7.28.6",
66
+ "@babel/helper-module-transforms": "^7.28.6",
67
+ "@babel/helpers": "^7.28.6",
68
+ "@babel/parser": "^7.29.0",
69
+ "@babel/template": "^7.28.6",
70
+ "@babel/traverse": "^7.29.0",
71
+ "@babel/types": "^7.29.0",
72
+ "@jridgewell/remapping": "^2.3.5",
73
+ "convert-source-map": "^2.0.0",
74
+ "debug": "^4.1.0",
75
+ "gensync": "^1.0.0-beta.2",
76
+ "json5": "^2.2.3",
77
+ "semver": "^6.3.1"
78
+ },
79
+ "engines": {
80
+ "node": ">=6.9.0"
81
+ },
82
+ "funding": {
83
+ "type": "opencollective",
84
+ "url": "https://opencollective.com/babel"
85
+ }
86
+ },
87
+ "frontend/node_modules/@babel/generator": {
88
+ "version": "7.29.1",
89
+ "dev": true,
90
+ "license": "MIT",
91
+ "dependencies": {
92
+ "@babel/parser": "^7.29.0",
93
+ "@babel/types": "^7.29.0",
94
+ "@jridgewell/gen-mapping": "^0.3.12",
95
+ "@jridgewell/trace-mapping": "^0.3.28",
96
+ "jsesc": "^3.0.2"
97
+ },
98
+ "engines": {
99
+ "node": ">=6.9.0"
100
+ }
101
+ },
102
+ "frontend/node_modules/@babel/helper-compilation-targets": {
103
+ "version": "7.28.6",
104
+ "dev": true,
105
+ "license": "MIT",
106
+ "dependencies": {
107
+ "@babel/compat-data": "^7.28.6",
108
+ "@babel/helper-validator-option": "^7.27.1",
109
+ "browserslist": "^4.24.0",
110
+ "lru-cache": "^5.1.1",
111
+ "semver": "^6.3.1"
112
+ },
113
+ "engines": {
114
+ "node": ">=6.9.0"
115
+ }
116
+ },
117
+ "frontend/node_modules/@babel/helper-globals": {
118
+ "version": "7.28.0",
119
+ "dev": true,
120
+ "license": "MIT",
121
+ "engines": {
122
+ "node": ">=6.9.0"
123
+ }
124
+ },
125
+ "frontend/node_modules/@babel/helper-module-imports": {
126
+ "version": "7.28.6",
127
+ "dev": true,
128
+ "license": "MIT",
129
+ "dependencies": {
130
+ "@babel/traverse": "^7.28.6",
131
+ "@babel/types": "^7.28.6"
132
+ },
133
+ "engines": {
134
+ "node": ">=6.9.0"
135
+ }
136
+ },
137
+ "frontend/node_modules/@babel/helper-module-transforms": {
138
+ "version": "7.28.6",
139
+ "dev": true,
140
+ "license": "MIT",
141
+ "dependencies": {
142
+ "@babel/helper-module-imports": "^7.28.6",
143
+ "@babel/helper-validator-identifier": "^7.28.5",
144
+ "@babel/traverse": "^7.28.6"
145
+ },
146
+ "engines": {
147
+ "node": ">=6.9.0"
148
+ },
149
+ "peerDependencies": {
150
+ "@babel/core": "^7.0.0"
151
+ }
152
+ },
153
+ "frontend/node_modules/@babel/helper-string-parser": {
154
+ "version": "7.27.1",
155
+ "dev": true,
156
+ "license": "MIT",
157
+ "engines": {
158
+ "node": ">=6.9.0"
159
+ }
160
+ },
161
+ "frontend/node_modules/@babel/helper-validator-identifier": {
162
+ "version": "7.28.5",
163
+ "dev": true,
164
+ "license": "MIT",
165
+ "engines": {
166
+ "node": ">=6.9.0"
167
+ }
168
+ },
169
+ "frontend/node_modules/@babel/helper-validator-option": {
170
+ "version": "7.27.1",
171
+ "dev": true,
172
+ "license": "MIT",
173
+ "engines": {
174
+ "node": ">=6.9.0"
175
+ }
176
+ },
177
+ "frontend/node_modules/@babel/helpers": {
178
+ "version": "7.29.2",
179
+ "dev": true,
180
+ "license": "MIT",
181
+ "dependencies": {
182
+ "@babel/template": "^7.28.6",
183
+ "@babel/types": "^7.29.0"
184
+ },
185
+ "engines": {
186
+ "node": ">=6.9.0"
187
+ }
188
+ },
189
+ "frontend/node_modules/@babel/parser": {
190
+ "version": "7.29.2",
191
+ "dev": true,
192
+ "license": "MIT",
193
+ "dependencies": {
194
+ "@babel/types": "^7.29.0"
195
+ },
196
+ "bin": {
197
+ "parser": "bin/babel-parser.js"
198
+ },
199
+ "engines": {
200
+ "node": ">=6.0.0"
201
+ }
202
+ },
203
+ "frontend/node_modules/@babel/template": {
204
+ "version": "7.28.6",
205
+ "dev": true,
206
+ "license": "MIT",
207
+ "dependencies": {
208
+ "@babel/code-frame": "^7.28.6",
209
+ "@babel/parser": "^7.28.6",
210
+ "@babel/types": "^7.28.6"
211
+ },
212
+ "engines": {
213
+ "node": ">=6.9.0"
214
+ }
215
+ },
216
+ "frontend/node_modules/@babel/traverse": {
217
+ "version": "7.29.0",
218
+ "dev": true,
219
+ "license": "MIT",
220
+ "dependencies": {
221
+ "@babel/code-frame": "^7.29.0",
222
+ "@babel/generator": "^7.29.0",
223
+ "@babel/helper-globals": "^7.28.0",
224
+ "@babel/parser": "^7.29.0",
225
+ "@babel/template": "^7.28.6",
226
+ "@babel/types": "^7.29.0",
227
+ "debug": "^4.3.1"
228
+ },
229
+ "engines": {
230
+ "node": ">=6.9.0"
231
+ }
232
+ },
233
+ "frontend/node_modules/@babel/types": {
234
+ "version": "7.29.0",
235
+ "dev": true,
236
+ "license": "MIT",
237
+ "dependencies": {
238
+ "@babel/helper-string-parser": "^7.27.1",
239
+ "@babel/helper-validator-identifier": "^7.28.5"
240
+ },
241
+ "engines": {
242
+ "node": ">=6.9.0"
243
+ }
244
+ },
245
+ "frontend/node_modules/@eslint-community/eslint-utils": {
246
+ "version": "4.9.1",
247
+ "dev": true,
248
+ "license": "MIT",
249
+ "dependencies": {
250
+ "eslint-visitor-keys": "^3.4.3"
251
+ },
252
+ "engines": {
253
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
254
+ },
255
+ "funding": {
256
+ "url": "https://opencollective.com/eslint"
257
+ },
258
+ "peerDependencies": {
259
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
260
+ }
261
+ },
262
+ "frontend/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
263
+ "version": "3.4.3",
264
+ "dev": true,
265
+ "license": "Apache-2.0",
266
+ "engines": {
267
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
268
+ },
269
+ "funding": {
270
+ "url": "https://opencollective.com/eslint"
271
+ }
272
+ },
273
+ "frontend/node_modules/@eslint-community/regexpp": {
274
+ "version": "4.12.2",
275
+ "dev": true,
276
+ "license": "MIT",
277
+ "engines": {
278
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
279
+ }
280
+ },
281
+ "frontend/node_modules/@eslint/config-array": {
282
+ "version": "0.21.2",
283
+ "dev": true,
284
+ "license": "Apache-2.0",
285
+ "dependencies": {
286
+ "@eslint/object-schema": "^2.1.7",
287
+ "debug": "^4.3.1",
288
+ "minimatch": "^3.1.5"
289
+ },
290
+ "engines": {
291
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
292
+ }
293
+ },
294
+ "frontend/node_modules/@eslint/config-helpers": {
295
+ "version": "0.4.2",
296
+ "dev": true,
297
+ "license": "Apache-2.0",
298
+ "dependencies": {
299
+ "@eslint/core": "^0.17.0"
300
+ },
301
+ "engines": {
302
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
303
+ }
304
+ },
305
+ "frontend/node_modules/@eslint/core": {
306
+ "version": "0.17.0",
307
+ "dev": true,
308
+ "license": "Apache-2.0",
309
+ "dependencies": {
310
+ "@types/json-schema": "^7.0.15"
311
+ },
312
+ "engines": {
313
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
314
+ }
315
+ },
316
+ "frontend/node_modules/@eslint/eslintrc": {
317
+ "version": "3.3.5",
318
+ "dev": true,
319
+ "license": "MIT",
320
+ "dependencies": {
321
+ "ajv": "^6.14.0",
322
+ "debug": "^4.3.2",
323
+ "espree": "^10.0.1",
324
+ "globals": "^14.0.0",
325
+ "ignore": "^5.2.0",
326
+ "import-fresh": "^3.2.1",
327
+ "js-yaml": "^4.1.1",
328
+ "minimatch": "^3.1.5",
329
+ "strip-json-comments": "^3.1.1"
330
+ },
331
+ "engines": {
332
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
333
+ },
334
+ "funding": {
335
+ "url": "https://opencollective.com/eslint"
336
+ }
337
+ },
338
+ "frontend/node_modules/@eslint/eslintrc/node_modules/globals": {
339
+ "version": "14.0.0",
340
+ "dev": true,
341
+ "license": "MIT",
342
+ "engines": {
343
+ "node": ">=18"
344
+ },
345
+ "funding": {
346
+ "url": "https://github.com/sponsors/sindresorhus"
347
+ }
348
+ },
349
+ "frontend/node_modules/@eslint/js": {
350
+ "version": "9.39.4",
351
+ "dev": true,
352
+ "license": "MIT",
353
+ "engines": {
354
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
355
+ },
356
+ "funding": {
357
+ "url": "https://eslint.org/donate"
358
+ }
359
+ },
360
+ "frontend/node_modules/@eslint/object-schema": {
361
+ "version": "2.1.7",
362
+ "dev": true,
363
+ "license": "Apache-2.0",
364
+ "engines": {
365
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
366
+ }
367
+ },
368
+ "frontend/node_modules/@eslint/plugin-kit": {
369
+ "version": "0.4.1",
370
+ "dev": true,
371
+ "license": "Apache-2.0",
372
+ "dependencies": {
373
+ "@eslint/core": "^0.17.0",
374
+ "levn": "^0.4.1"
375
+ },
376
+ "engines": {
377
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
378
+ }
379
+ },
380
+ "frontend/node_modules/@humanfs/core": {
381
+ "version": "0.19.1",
382
+ "dev": true,
383
+ "license": "Apache-2.0",
384
+ "engines": {
385
+ "node": ">=18.18.0"
386
+ }
387
+ },
388
+ "frontend/node_modules/@humanfs/node": {
389
+ "version": "0.16.7",
390
+ "dev": true,
391
+ "license": "Apache-2.0",
392
+ "dependencies": {
393
+ "@humanfs/core": "^0.19.1",
394
+ "@humanwhocodes/retry": "^0.4.0"
395
+ },
396
+ "engines": {
397
+ "node": ">=18.18.0"
398
+ }
399
+ },
400
+ "frontend/node_modules/@humanwhocodes/module-importer": {
401
+ "version": "1.0.1",
402
+ "dev": true,
403
+ "license": "Apache-2.0",
404
+ "engines": {
405
+ "node": ">=12.22"
406
+ },
407
+ "funding": {
408
+ "type": "github",
409
+ "url": "https://github.com/sponsors/nzakas"
410
+ }
411
+ },
412
+ "frontend/node_modules/@humanwhocodes/retry": {
413
+ "version": "0.4.3",
414
+ "dev": true,
415
+ "license": "Apache-2.0",
416
+ "engines": {
417
+ "node": ">=18.18"
418
+ },
419
+ "funding": {
420
+ "type": "github",
421
+ "url": "https://github.com/sponsors/nzakas"
422
+ }
423
+ },
424
+ "frontend/node_modules/@jridgewell/gen-mapping": {
425
+ "version": "0.3.13",
426
+ "dev": true,
427
+ "license": "MIT",
428
+ "dependencies": {
429
+ "@jridgewell/sourcemap-codec": "^1.5.0",
430
+ "@jridgewell/trace-mapping": "^0.3.24"
431
+ }
432
+ },
433
+ "frontend/node_modules/@jridgewell/remapping": {
434
+ "version": "2.3.5",
435
+ "dev": true,
436
+ "license": "MIT",
437
+ "dependencies": {
438
+ "@jridgewell/gen-mapping": "^0.3.5",
439
+ "@jridgewell/trace-mapping": "^0.3.24"
440
+ }
441
+ },
442
+ "frontend/node_modules/@jridgewell/resolve-uri": {
443
+ "version": "3.1.2",
444
+ "dev": true,
445
+ "license": "MIT",
446
+ "engines": {
447
+ "node": ">=6.0.0"
448
+ }
449
+ },
450
+ "frontend/node_modules/@jridgewell/sourcemap-codec": {
451
+ "version": "1.5.5",
452
+ "dev": true,
453
+ "license": "MIT"
454
+ },
455
+ "frontend/node_modules/@jridgewell/trace-mapping": {
456
+ "version": "0.3.31",
457
+ "dev": true,
458
+ "license": "MIT",
459
+ "dependencies": {
460
+ "@jridgewell/resolve-uri": "^3.1.0",
461
+ "@jridgewell/sourcemap-codec": "^1.4.14"
462
+ }
463
+ },
464
+ "frontend/node_modules/@oxc-project/types": {
465
+ "version": "0.124.0",
466
+ "dev": true,
467
+ "license": "MIT",
468
+ "funding": {
469
+ "url": "https://github.com/sponsors/Boshen"
470
+ }
471
+ },
472
+ "frontend/node_modules/@rolldown/binding-win32-x64-msvc": {
473
+ "version": "1.0.0-rc.15",
474
+ "cpu": [
475
+ "x64"
476
+ ],
477
+ "dev": true,
478
+ "license": "MIT",
479
+ "optional": true,
480
+ "os": [
481
+ "win32"
482
+ ],
483
+ "engines": {
484
+ "node": "^20.19.0 || >=22.12.0"
485
+ }
486
+ },
487
+ "frontend/node_modules/@rolldown/pluginutils": {
488
+ "version": "1.0.0-rc.7",
489
+ "dev": true,
490
+ "license": "MIT"
491
+ },
492
+ "frontend/node_modules/@types/estree": {
493
+ "version": "1.0.8",
494
+ "dev": true,
495
+ "license": "MIT"
496
+ },
497
+ "frontend/node_modules/@types/json-schema": {
498
+ "version": "7.0.15",
499
+ "dev": true,
500
+ "license": "MIT"
501
+ },
502
+ "frontend/node_modules/@types/node": {
503
+ "version": "24.12.2",
504
+ "dev": true,
505
+ "license": "MIT",
506
+ "dependencies": {
507
+ "undici-types": "~7.16.0"
508
+ }
509
+ },
510
+ "frontend/node_modules/@types/react": {
511
+ "version": "19.2.14",
512
+ "dev": true,
513
+ "license": "MIT",
514
+ "dependencies": {
515
+ "csstype": "^3.2.2"
516
+ }
517
+ },
518
+ "frontend/node_modules/@types/react-dom": {
519
+ "version": "19.2.3",
520
+ "dev": true,
521
+ "license": "MIT",
522
+ "peerDependencies": {
523
+ "@types/react": "^19.2.0"
524
+ }
525
+ },
526
+ "frontend/node_modules/@typescript-eslint/eslint-plugin": {
527
+ "version": "8.58.1",
528
+ "dev": true,
529
+ "license": "MIT",
530
+ "dependencies": {
531
+ "@eslint-community/regexpp": "^4.12.2",
532
+ "@typescript-eslint/scope-manager": "8.58.1",
533
+ "@typescript-eslint/type-utils": "8.58.1",
534
+ "@typescript-eslint/utils": "8.58.1",
535
+ "@typescript-eslint/visitor-keys": "8.58.1",
536
+ "ignore": "^7.0.5",
537
+ "natural-compare": "^1.4.0",
538
+ "ts-api-utils": "^2.5.0"
539
+ },
540
+ "engines": {
541
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
542
+ },
543
+ "funding": {
544
+ "type": "opencollective",
545
+ "url": "https://opencollective.com/typescript-eslint"
546
+ },
547
+ "peerDependencies": {
548
+ "@typescript-eslint/parser": "^8.58.1",
549
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
550
+ "typescript": ">=4.8.4 <6.1.0"
551
+ }
552
+ },
553
+ "frontend/node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
554
+ "version": "7.0.5",
555
+ "dev": true,
556
+ "license": "MIT",
557
+ "engines": {
558
+ "node": ">= 4"
559
+ }
560
+ },
561
+ "frontend/node_modules/@typescript-eslint/parser": {
562
+ "version": "8.58.1",
563
+ "dev": true,
564
+ "license": "MIT",
565
+ "dependencies": {
566
+ "@typescript-eslint/scope-manager": "8.58.1",
567
+ "@typescript-eslint/types": "8.58.1",
568
+ "@typescript-eslint/typescript-estree": "8.58.1",
569
+ "@typescript-eslint/visitor-keys": "8.58.1",
570
+ "debug": "^4.4.3"
571
+ },
572
+ "engines": {
573
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
574
+ },
575
+ "funding": {
576
+ "type": "opencollective",
577
+ "url": "https://opencollective.com/typescript-eslint"
578
+ },
579
+ "peerDependencies": {
580
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
581
+ "typescript": ">=4.8.4 <6.1.0"
582
+ }
583
+ },
584
+ "frontend/node_modules/@typescript-eslint/project-service": {
585
+ "version": "8.58.1",
586
+ "dev": true,
587
+ "license": "MIT",
588
+ "dependencies": {
589
+ "@typescript-eslint/tsconfig-utils": "^8.58.1",
590
+ "@typescript-eslint/types": "^8.58.1",
591
+ "debug": "^4.4.3"
592
+ },
593
+ "engines": {
594
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
595
+ },
596
+ "funding": {
597
+ "type": "opencollective",
598
+ "url": "https://opencollective.com/typescript-eslint"
599
+ },
600
+ "peerDependencies": {
601
+ "typescript": ">=4.8.4 <6.1.0"
602
+ }
603
+ },
604
+ "frontend/node_modules/@typescript-eslint/scope-manager": {
605
+ "version": "8.58.1",
606
+ "dev": true,
607
+ "license": "MIT",
608
+ "dependencies": {
609
+ "@typescript-eslint/types": "8.58.1",
610
+ "@typescript-eslint/visitor-keys": "8.58.1"
611
+ },
612
+ "engines": {
613
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
614
+ },
615
+ "funding": {
616
+ "type": "opencollective",
617
+ "url": "https://opencollective.com/typescript-eslint"
618
+ }
619
+ },
620
+ "frontend/node_modules/@typescript-eslint/tsconfig-utils": {
621
+ "version": "8.58.1",
622
+ "dev": true,
623
+ "license": "MIT",
624
+ "engines": {
625
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
626
+ },
627
+ "funding": {
628
+ "type": "opencollective",
629
+ "url": "https://opencollective.com/typescript-eslint"
630
+ },
631
+ "peerDependencies": {
632
+ "typescript": ">=4.8.4 <6.1.0"
633
+ }
634
+ },
635
+ "frontend/node_modules/@typescript-eslint/type-utils": {
636
+ "version": "8.58.1",
637
+ "dev": true,
638
+ "license": "MIT",
639
+ "dependencies": {
640
+ "@typescript-eslint/types": "8.58.1",
641
+ "@typescript-eslint/typescript-estree": "8.58.1",
642
+ "@typescript-eslint/utils": "8.58.1",
643
+ "debug": "^4.4.3",
644
+ "ts-api-utils": "^2.5.0"
645
+ },
646
+ "engines": {
647
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
648
+ },
649
+ "funding": {
650
+ "type": "opencollective",
651
+ "url": "https://opencollective.com/typescript-eslint"
652
+ },
653
+ "peerDependencies": {
654
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
655
+ "typescript": ">=4.8.4 <6.1.0"
656
+ }
657
+ },
658
+ "frontend/node_modules/@typescript-eslint/types": {
659
+ "version": "8.58.1",
660
+ "dev": true,
661
+ "license": "MIT",
662
+ "engines": {
663
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
664
+ },
665
+ "funding": {
666
+ "type": "opencollective",
667
+ "url": "https://opencollective.com/typescript-eslint"
668
+ }
669
+ },
670
+ "frontend/node_modules/@typescript-eslint/typescript-estree": {
671
+ "version": "8.58.1",
672
+ "dev": true,
673
+ "license": "MIT",
674
+ "dependencies": {
675
+ "@typescript-eslint/project-service": "8.58.1",
676
+ "@typescript-eslint/tsconfig-utils": "8.58.1",
677
+ "@typescript-eslint/types": "8.58.1",
678
+ "@typescript-eslint/visitor-keys": "8.58.1",
679
+ "debug": "^4.4.3",
680
+ "minimatch": "^10.2.2",
681
+ "semver": "^7.7.3",
682
+ "tinyglobby": "^0.2.15",
683
+ "ts-api-utils": "^2.5.0"
684
+ },
685
+ "engines": {
686
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
687
+ },
688
+ "funding": {
689
+ "type": "opencollective",
690
+ "url": "https://opencollective.com/typescript-eslint"
691
+ },
692
+ "peerDependencies": {
693
+ "typescript": ">=4.8.4 <6.1.0"
694
+ }
695
+ },
696
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
697
+ "version": "4.0.4",
698
+ "dev": true,
699
+ "license": "MIT",
700
+ "engines": {
701
+ "node": "18 || 20 || >=22"
702
+ }
703
+ },
704
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
705
+ "version": "5.0.5",
706
+ "dev": true,
707
+ "license": "MIT",
708
+ "dependencies": {
709
+ "balanced-match": "^4.0.2"
710
+ },
711
+ "engines": {
712
+ "node": "18 || 20 || >=22"
713
+ }
714
+ },
715
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
716
+ "version": "10.2.5",
717
+ "dev": true,
718
+ "license": "BlueOak-1.0.0",
719
+ "dependencies": {
720
+ "brace-expansion": "^5.0.5"
721
+ },
722
+ "engines": {
723
+ "node": "18 || 20 || >=22"
724
+ },
725
+ "funding": {
726
+ "url": "https://github.com/sponsors/isaacs"
727
+ }
728
+ },
729
+ "frontend/node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
730
+ "version": "7.7.4",
731
+ "dev": true,
732
+ "license": "ISC",
733
+ "bin": {
734
+ "semver": "bin/semver.js"
735
+ },
736
+ "engines": {
737
+ "node": ">=10"
738
+ }
739
+ },
740
+ "frontend/node_modules/@typescript-eslint/utils": {
741
+ "version": "8.58.1",
742
+ "dev": true,
743
+ "license": "MIT",
744
+ "dependencies": {
745
+ "@eslint-community/eslint-utils": "^4.9.1",
746
+ "@typescript-eslint/scope-manager": "8.58.1",
747
+ "@typescript-eslint/types": "8.58.1",
748
+ "@typescript-eslint/typescript-estree": "8.58.1"
749
+ },
750
+ "engines": {
751
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
752
+ },
753
+ "funding": {
754
+ "type": "opencollective",
755
+ "url": "https://opencollective.com/typescript-eslint"
756
+ },
757
+ "peerDependencies": {
758
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
759
+ "typescript": ">=4.8.4 <6.1.0"
760
+ }
761
+ },
762
+ "frontend/node_modules/@typescript-eslint/visitor-keys": {
763
+ "version": "8.58.1",
764
+ "dev": true,
765
+ "license": "MIT",
766
+ "dependencies": {
767
+ "@typescript-eslint/types": "8.58.1",
768
+ "eslint-visitor-keys": "^5.0.0"
769
+ },
770
+ "engines": {
771
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
772
+ },
773
+ "funding": {
774
+ "type": "opencollective",
775
+ "url": "https://opencollective.com/typescript-eslint"
776
+ }
777
+ },
778
+ "frontend/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
779
+ "version": "5.0.1",
780
+ "dev": true,
781
+ "license": "Apache-2.0",
782
+ "engines": {
783
+ "node": "^20.19.0 || ^22.13.0 || >=24"
784
+ },
785
+ "funding": {
786
+ "url": "https://opencollective.com/eslint"
787
+ }
788
+ },
789
+ "frontend/node_modules/@vitejs/plugin-react": {
790
+ "version": "6.0.1",
791
+ "dev": true,
792
+ "license": "MIT",
793
+ "dependencies": {
794
+ "@rolldown/pluginutils": "1.0.0-rc.7"
795
+ },
796
+ "engines": {
797
+ "node": "^20.19.0 || >=22.12.0"
798
+ },
799
+ "peerDependencies": {
800
+ "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
801
+ "babel-plugin-react-compiler": "^1.0.0",
802
+ "vite": "^8.0.0"
803
+ },
804
+ "peerDependenciesMeta": {
805
+ "@rolldown/plugin-babel": {
806
+ "optional": true
807
+ },
808
+ "babel-plugin-react-compiler": {
809
+ "optional": true
810
+ }
811
+ }
812
+ },
813
+ "frontend/node_modules/acorn": {
814
+ "version": "8.16.0",
815
+ "dev": true,
816
+ "license": "MIT",
817
+ "bin": {
818
+ "acorn": "bin/acorn"
819
+ },
820
+ "engines": {
821
+ "node": ">=0.4.0"
822
+ }
823
+ },
824
+ "frontend/node_modules/acorn-jsx": {
825
+ "version": "5.3.2",
826
+ "dev": true,
827
+ "license": "MIT",
828
+ "peerDependencies": {
829
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
830
+ }
831
+ },
832
+ "frontend/node_modules/ajv": {
833
+ "version": "6.14.0",
834
+ "dev": true,
835
+ "license": "MIT",
836
+ "dependencies": {
837
+ "fast-deep-equal": "^3.1.1",
838
+ "fast-json-stable-stringify": "^2.0.0",
839
+ "json-schema-traverse": "^0.4.1",
840
+ "uri-js": "^4.2.2"
841
+ },
842
+ "funding": {
843
+ "type": "github",
844
+ "url": "https://github.com/sponsors/epoberezkin"
845
+ }
846
+ },
847
+ "frontend/node_modules/ansi-styles": {
848
+ "version": "4.3.0",
849
+ "dev": true,
850
+ "license": "MIT",
851
+ "dependencies": {
852
+ "color-convert": "^2.0.1"
853
+ },
854
+ "engines": {
855
+ "node": ">=8"
856
+ },
857
+ "funding": {
858
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
859
+ }
860
+ },
861
+ "frontend/node_modules/argparse": {
862
+ "version": "2.0.1",
863
+ "dev": true,
864
+ "license": "Python-2.0"
865
+ },
866
+ "frontend/node_modules/asynckit": {
867
+ "version": "0.4.0",
868
+ "license": "MIT"
869
+ },
870
+ "frontend/node_modules/axios": {
871
+ "version": "1.15.0",
872
+ "license": "MIT",
873
+ "dependencies": {
874
+ "follow-redirects": "^1.15.11",
875
+ "form-data": "^4.0.5",
876
+ "proxy-from-env": "^2.1.0"
877
+ }
878
+ },
879
+ "frontend/node_modules/balanced-match": {
880
+ "version": "1.0.2",
881
+ "dev": true,
882
+ "license": "MIT"
883
+ },
884
+ "frontend/node_modules/baseline-browser-mapping": {
885
+ "version": "2.10.18",
886
+ "dev": true,
887
+ "license": "Apache-2.0",
888
+ "bin": {
889
+ "baseline-browser-mapping": "dist/cli.cjs"
890
+ },
891
+ "engines": {
892
+ "node": ">=6.0.0"
893
+ }
894
+ },
895
+ "frontend/node_modules/brace-expansion": {
896
+ "version": "1.1.14",
897
+ "dev": true,
898
+ "license": "MIT",
899
+ "dependencies": {
900
+ "balanced-match": "^1.0.0",
901
+ "concat-map": "0.0.1"
902
+ }
903
+ },
904
+ "frontend/node_modules/browserslist": {
905
+ "version": "4.28.2",
906
+ "dev": true,
907
+ "funding": [
908
+ {
909
+ "type": "opencollective",
910
+ "url": "https://opencollective.com/browserslist"
911
+ },
912
+ {
913
+ "type": "tidelift",
914
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
915
+ },
916
+ {
917
+ "type": "github",
918
+ "url": "https://github.com/sponsors/ai"
919
+ }
920
+ ],
921
+ "license": "MIT",
922
+ "dependencies": {
923
+ "baseline-browser-mapping": "^2.10.12",
924
+ "caniuse-lite": "^1.0.30001782",
925
+ "electron-to-chromium": "^1.5.328",
926
+ "node-releases": "^2.0.36",
927
+ "update-browserslist-db": "^1.2.3"
928
+ },
929
+ "bin": {
930
+ "browserslist": "cli.js"
931
+ },
932
+ "engines": {
933
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
934
+ }
935
+ },
936
+ "frontend/node_modules/call-bind-apply-helpers": {
937
+ "version": "1.0.2",
938
+ "license": "MIT",
939
+ "dependencies": {
940
+ "es-errors": "^1.3.0",
941
+ "function-bind": "^1.1.2"
942
+ },
943
+ "engines": {
944
+ "node": ">= 0.4"
945
+ }
946
+ },
947
+ "frontend/node_modules/callsites": {
948
+ "version": "3.1.0",
949
+ "dev": true,
950
+ "license": "MIT",
951
+ "engines": {
952
+ "node": ">=6"
953
+ }
954
+ },
955
+ "frontend/node_modules/caniuse-lite": {
956
+ "version": "1.0.30001787",
957
+ "dev": true,
958
+ "funding": [
959
+ {
960
+ "type": "opencollective",
961
+ "url": "https://opencollective.com/browserslist"
962
+ },
963
+ {
964
+ "type": "tidelift",
965
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
966
+ },
967
+ {
968
+ "type": "github",
969
+ "url": "https://github.com/sponsors/ai"
970
+ }
971
+ ],
972
+ "license": "CC-BY-4.0"
973
+ },
974
+ "frontend/node_modules/chalk": {
975
+ "version": "4.1.2",
976
+ "dev": true,
977
+ "license": "MIT",
978
+ "dependencies": {
979
+ "ansi-styles": "^4.1.0",
980
+ "supports-color": "^7.1.0"
981
+ },
982
+ "engines": {
983
+ "node": ">=10"
984
+ },
985
+ "funding": {
986
+ "url": "https://github.com/chalk/chalk?sponsor=1"
987
+ }
988
+ },
989
+ "frontend/node_modules/color-convert": {
990
+ "version": "2.0.1",
991
+ "dev": true,
992
+ "license": "MIT",
993
+ "dependencies": {
994
+ "color-name": "~1.1.4"
995
+ },
996
+ "engines": {
997
+ "node": ">=7.0.0"
998
+ }
999
+ },
1000
+ "frontend/node_modules/color-name": {
1001
+ "version": "1.1.4",
1002
+ "dev": true,
1003
+ "license": "MIT"
1004
+ },
1005
+ "frontend/node_modules/combined-stream": {
1006
+ "version": "1.0.8",
1007
+ "license": "MIT",
1008
+ "dependencies": {
1009
+ "delayed-stream": "~1.0.0"
1010
+ },
1011
+ "engines": {
1012
+ "node": ">= 0.8"
1013
+ }
1014
+ },
1015
+ "frontend/node_modules/concat-map": {
1016
+ "version": "0.0.1",
1017
+ "dev": true,
1018
+ "license": "MIT"
1019
+ },
1020
+ "frontend/node_modules/convert-source-map": {
1021
+ "version": "2.0.0",
1022
+ "dev": true,
1023
+ "license": "MIT"
1024
+ },
1025
+ "frontend/node_modules/cross-spawn": {
1026
+ "version": "7.0.6",
1027
+ "dev": true,
1028
+ "license": "MIT",
1029
+ "dependencies": {
1030
+ "path-key": "^3.1.0",
1031
+ "shebang-command": "^2.0.0",
1032
+ "which": "^2.0.1"
1033
+ },
1034
+ "engines": {
1035
+ "node": ">= 8"
1036
+ }
1037
+ },
1038
+ "frontend/node_modules/csstype": {
1039
+ "version": "3.2.3",
1040
+ "dev": true,
1041
+ "license": "MIT"
1042
+ },
1043
+ "frontend/node_modules/debug": {
1044
+ "version": "4.4.3",
1045
+ "dev": true,
1046
+ "license": "MIT",
1047
+ "dependencies": {
1048
+ "ms": "^2.1.3"
1049
+ },
1050
+ "engines": {
1051
+ "node": ">=6.0"
1052
+ },
1053
+ "peerDependenciesMeta": {
1054
+ "supports-color": {
1055
+ "optional": true
1056
+ }
1057
+ }
1058
+ },
1059
+ "frontend/node_modules/deep-is": {
1060
+ "version": "0.1.4",
1061
+ "dev": true,
1062
+ "license": "MIT"
1063
+ },
1064
+ "frontend/node_modules/delayed-stream": {
1065
+ "version": "1.0.0",
1066
+ "license": "MIT",
1067
+ "engines": {
1068
+ "node": ">=0.4.0"
1069
+ }
1070
+ },
1071
+ "frontend/node_modules/detect-libc": {
1072
+ "version": "2.1.2",
1073
+ "dev": true,
1074
+ "license": "Apache-2.0",
1075
+ "engines": {
1076
+ "node": ">=8"
1077
+ }
1078
+ },
1079
+ "frontend/node_modules/dunder-proto": {
1080
+ "version": "1.0.1",
1081
+ "license": "MIT",
1082
+ "dependencies": {
1083
+ "call-bind-apply-helpers": "^1.0.1",
1084
+ "es-errors": "^1.3.0",
1085
+ "gopd": "^1.2.0"
1086
+ },
1087
+ "engines": {
1088
+ "node": ">= 0.4"
1089
+ }
1090
+ },
1091
+ "frontend/node_modules/electron-to-chromium": {
1092
+ "version": "1.5.335",
1093
+ "dev": true,
1094
+ "license": "ISC"
1095
+ },
1096
+ "frontend/node_modules/es-define-property": {
1097
+ "version": "1.0.1",
1098
+ "license": "MIT",
1099
+ "engines": {
1100
+ "node": ">= 0.4"
1101
+ }
1102
+ },
1103
+ "frontend/node_modules/es-errors": {
1104
+ "version": "1.3.0",
1105
+ "license": "MIT",
1106
+ "engines": {
1107
+ "node": ">= 0.4"
1108
+ }
1109
+ },
1110
+ "frontend/node_modules/es-object-atoms": {
1111
+ "version": "1.1.1",
1112
+ "license": "MIT",
1113
+ "dependencies": {
1114
+ "es-errors": "^1.3.0"
1115
+ },
1116
+ "engines": {
1117
+ "node": ">= 0.4"
1118
+ }
1119
+ },
1120
+ "frontend/node_modules/es-set-tostringtag": {
1121
+ "version": "2.1.0",
1122
+ "license": "MIT",
1123
+ "dependencies": {
1124
+ "es-errors": "^1.3.0",
1125
+ "get-intrinsic": "^1.2.6",
1126
+ "has-tostringtag": "^1.0.2",
1127
+ "hasown": "^2.0.2"
1128
+ },
1129
+ "engines": {
1130
+ "node": ">= 0.4"
1131
+ }
1132
+ },
1133
+ "frontend/node_modules/escalade": {
1134
+ "version": "3.2.0",
1135
+ "dev": true,
1136
+ "license": "MIT",
1137
+ "engines": {
1138
+ "node": ">=6"
1139
+ }
1140
+ },
1141
+ "frontend/node_modules/escape-string-regexp": {
1142
+ "version": "4.0.0",
1143
+ "dev": true,
1144
+ "license": "MIT",
1145
+ "engines": {
1146
+ "node": ">=10"
1147
+ },
1148
+ "funding": {
1149
+ "url": "https://github.com/sponsors/sindresorhus"
1150
+ }
1151
+ },
1152
+ "frontend/node_modules/eslint": {
1153
+ "version": "9.39.4",
1154
+ "dev": true,
1155
+ "license": "MIT",
1156
+ "dependencies": {
1157
+ "@eslint-community/eslint-utils": "^4.8.0",
1158
+ "@eslint-community/regexpp": "^4.12.1",
1159
+ "@eslint/config-array": "^0.21.2",
1160
+ "@eslint/config-helpers": "^0.4.2",
1161
+ "@eslint/core": "^0.17.0",
1162
+ "@eslint/eslintrc": "^3.3.5",
1163
+ "@eslint/js": "9.39.4",
1164
+ "@eslint/plugin-kit": "^0.4.1",
1165
+ "@humanfs/node": "^0.16.6",
1166
+ "@humanwhocodes/module-importer": "^1.0.1",
1167
+ "@humanwhocodes/retry": "^0.4.2",
1168
+ "@types/estree": "^1.0.6",
1169
+ "ajv": "^6.14.0",
1170
+ "chalk": "^4.0.0",
1171
+ "cross-spawn": "^7.0.6",
1172
+ "debug": "^4.3.2",
1173
+ "escape-string-regexp": "^4.0.0",
1174
+ "eslint-scope": "^8.4.0",
1175
+ "eslint-visitor-keys": "^4.2.1",
1176
+ "espree": "^10.4.0",
1177
+ "esquery": "^1.5.0",
1178
+ "esutils": "^2.0.2",
1179
+ "fast-deep-equal": "^3.1.3",
1180
+ "file-entry-cache": "^8.0.0",
1181
+ "find-up": "^5.0.0",
1182
+ "glob-parent": "^6.0.2",
1183
+ "ignore": "^5.2.0",
1184
+ "imurmurhash": "^0.1.4",
1185
+ "is-glob": "^4.0.0",
1186
+ "json-stable-stringify-without-jsonify": "^1.0.1",
1187
+ "lodash.merge": "^4.6.2",
1188
+ "minimatch": "^3.1.5",
1189
+ "natural-compare": "^1.4.0",
1190
+ "optionator": "^0.9.3"
1191
+ },
1192
+ "bin": {
1193
+ "eslint": "bin/eslint.js"
1194
+ },
1195
+ "engines": {
1196
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1197
+ },
1198
+ "funding": {
1199
+ "url": "https://eslint.org/donate"
1200
+ },
1201
+ "peerDependencies": {
1202
+ "jiti": "*"
1203
+ },
1204
+ "peerDependenciesMeta": {
1205
+ "jiti": {
1206
+ "optional": true
1207
+ }
1208
+ }
1209
+ },
1210
+ "frontend/node_modules/eslint-plugin-react-hooks": {
1211
+ "version": "7.0.1",
1212
+ "dev": true,
1213
+ "license": "MIT",
1214
+ "dependencies": {
1215
+ "@babel/core": "^7.24.4",
1216
+ "@babel/parser": "^7.24.4",
1217
+ "hermes-parser": "^0.25.1",
1218
+ "zod": "^3.25.0 || ^4.0.0",
1219
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
1220
+ },
1221
+ "engines": {
1222
+ "node": ">=18"
1223
+ },
1224
+ "peerDependencies": {
1225
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
1226
+ }
1227
+ },
1228
+ "frontend/node_modules/eslint-plugin-react-refresh": {
1229
+ "version": "0.5.2",
1230
+ "dev": true,
1231
+ "license": "MIT",
1232
+ "peerDependencies": {
1233
+ "eslint": "^9 || ^10"
1234
+ }
1235
+ },
1236
+ "frontend/node_modules/eslint-scope": {
1237
+ "version": "8.4.0",
1238
+ "dev": true,
1239
+ "license": "BSD-2-Clause",
1240
+ "dependencies": {
1241
+ "esrecurse": "^4.3.0",
1242
+ "estraverse": "^5.2.0"
1243
+ },
1244
+ "engines": {
1245
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1246
+ },
1247
+ "funding": {
1248
+ "url": "https://opencollective.com/eslint"
1249
+ }
1250
+ },
1251
+ "frontend/node_modules/eslint-visitor-keys": {
1252
+ "version": "4.2.1",
1253
+ "dev": true,
1254
+ "license": "Apache-2.0",
1255
+ "engines": {
1256
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1257
+ },
1258
+ "funding": {
1259
+ "url": "https://opencollective.com/eslint"
1260
+ }
1261
+ },
1262
+ "frontend/node_modules/espree": {
1263
+ "version": "10.4.0",
1264
+ "dev": true,
1265
+ "license": "BSD-2-Clause",
1266
+ "dependencies": {
1267
+ "acorn": "^8.15.0",
1268
+ "acorn-jsx": "^5.3.2",
1269
+ "eslint-visitor-keys": "^4.2.1"
1270
+ },
1271
+ "engines": {
1272
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1273
+ },
1274
+ "funding": {
1275
+ "url": "https://opencollective.com/eslint"
1276
+ }
1277
+ },
1278
+ "frontend/node_modules/esquery": {
1279
+ "version": "1.7.0",
1280
+ "dev": true,
1281
+ "license": "BSD-3-Clause",
1282
+ "dependencies": {
1283
+ "estraverse": "^5.1.0"
1284
+ },
1285
+ "engines": {
1286
+ "node": ">=0.10"
1287
+ }
1288
+ },
1289
+ "frontend/node_modules/esrecurse": {
1290
+ "version": "4.3.0",
1291
+ "dev": true,
1292
+ "license": "BSD-2-Clause",
1293
+ "dependencies": {
1294
+ "estraverse": "^5.2.0"
1295
+ },
1296
+ "engines": {
1297
+ "node": ">=4.0"
1298
+ }
1299
+ },
1300
+ "frontend/node_modules/estraverse": {
1301
+ "version": "5.3.0",
1302
+ "dev": true,
1303
+ "license": "BSD-2-Clause",
1304
+ "engines": {
1305
+ "node": ">=4.0"
1306
+ }
1307
+ },
1308
+ "frontend/node_modules/esutils": {
1309
+ "version": "2.0.3",
1310
+ "dev": true,
1311
+ "license": "BSD-2-Clause",
1312
+ "engines": {
1313
+ "node": ">=0.10.0"
1314
+ }
1315
+ },
1316
+ "frontend/node_modules/fast-deep-equal": {
1317
+ "version": "3.1.3",
1318
+ "dev": true,
1319
+ "license": "MIT"
1320
+ },
1321
+ "frontend/node_modules/fast-json-stable-stringify": {
1322
+ "version": "2.1.0",
1323
+ "dev": true,
1324
+ "license": "MIT"
1325
+ },
1326
+ "frontend/node_modules/fast-levenshtein": {
1327
+ "version": "2.0.6",
1328
+ "dev": true,
1329
+ "license": "MIT"
1330
+ },
1331
+ "frontend/node_modules/fdir": {
1332
+ "version": "6.5.0",
1333
+ "dev": true,
1334
+ "license": "MIT",
1335
+ "engines": {
1336
+ "node": ">=12.0.0"
1337
+ },
1338
+ "peerDependencies": {
1339
+ "picomatch": "^3 || ^4"
1340
+ },
1341
+ "peerDependenciesMeta": {
1342
+ "picomatch": {
1343
+ "optional": true
1344
+ }
1345
+ }
1346
+ },
1347
+ "frontend/node_modules/file-entry-cache": {
1348
+ "version": "8.0.0",
1349
+ "dev": true,
1350
+ "license": "MIT",
1351
+ "dependencies": {
1352
+ "flat-cache": "^4.0.0"
1353
+ },
1354
+ "engines": {
1355
+ "node": ">=16.0.0"
1356
+ }
1357
+ },
1358
+ "frontend/node_modules/find-up": {
1359
+ "version": "5.0.0",
1360
+ "dev": true,
1361
+ "license": "MIT",
1362
+ "dependencies": {
1363
+ "locate-path": "^6.0.0",
1364
+ "path-exists": "^4.0.0"
1365
+ },
1366
+ "engines": {
1367
+ "node": ">=10"
1368
+ },
1369
+ "funding": {
1370
+ "url": "https://github.com/sponsors/sindresorhus"
1371
+ }
1372
+ },
1373
+ "frontend/node_modules/flat-cache": {
1374
+ "version": "4.0.1",
1375
+ "dev": true,
1376
+ "license": "MIT",
1377
+ "dependencies": {
1378
+ "flatted": "^3.2.9",
1379
+ "keyv": "^4.5.4"
1380
+ },
1381
+ "engines": {
1382
+ "node": ">=16"
1383
+ }
1384
+ },
1385
+ "frontend/node_modules/flatted": {
1386
+ "version": "3.4.2",
1387
+ "dev": true,
1388
+ "license": "ISC"
1389
+ },
1390
+ "frontend/node_modules/follow-redirects": {
1391
+ "version": "1.15.11",
1392
+ "funding": [
1393
+ {
1394
+ "type": "individual",
1395
+ "url": "https://github.com/sponsors/RubenVerborgh"
1396
+ }
1397
+ ],
1398
+ "license": "MIT",
1399
+ "engines": {
1400
+ "node": ">=4.0"
1401
+ },
1402
+ "peerDependenciesMeta": {
1403
+ "debug": {
1404
+ "optional": true
1405
+ }
1406
+ }
1407
+ },
1408
+ "frontend/node_modules/form-data": {
1409
+ "version": "4.0.5",
1410
+ "license": "MIT",
1411
+ "dependencies": {
1412
+ "asynckit": "^0.4.0",
1413
+ "combined-stream": "^1.0.8",
1414
+ "es-set-tostringtag": "^2.1.0",
1415
+ "hasown": "^2.0.2",
1416
+ "mime-types": "^2.1.12"
1417
+ },
1418
+ "engines": {
1419
+ "node": ">= 6"
1420
+ }
1421
+ },
1422
+ "frontend/node_modules/function-bind": {
1423
+ "version": "1.1.2",
1424
+ "license": "MIT",
1425
+ "funding": {
1426
+ "url": "https://github.com/sponsors/ljharb"
1427
+ }
1428
+ },
1429
+ "frontend/node_modules/gensync": {
1430
+ "version": "1.0.0-beta.2",
1431
+ "dev": true,
1432
+ "license": "MIT",
1433
+ "engines": {
1434
+ "node": ">=6.9.0"
1435
+ }
1436
+ },
1437
+ "frontend/node_modules/get-intrinsic": {
1438
+ "version": "1.3.0",
1439
+ "license": "MIT",
1440
+ "dependencies": {
1441
+ "call-bind-apply-helpers": "^1.0.2",
1442
+ "es-define-property": "^1.0.1",
1443
+ "es-errors": "^1.3.0",
1444
+ "es-object-atoms": "^1.1.1",
1445
+ "function-bind": "^1.1.2",
1446
+ "get-proto": "^1.0.1",
1447
+ "gopd": "^1.2.0",
1448
+ "has-symbols": "^1.1.0",
1449
+ "hasown": "^2.0.2",
1450
+ "math-intrinsics": "^1.1.0"
1451
+ },
1452
+ "engines": {
1453
+ "node": ">= 0.4"
1454
+ },
1455
+ "funding": {
1456
+ "url": "https://github.com/sponsors/ljharb"
1457
+ }
1458
+ },
1459
+ "frontend/node_modules/get-proto": {
1460
+ "version": "1.0.1",
1461
+ "license": "MIT",
1462
+ "dependencies": {
1463
+ "dunder-proto": "^1.0.1",
1464
+ "es-object-atoms": "^1.0.0"
1465
+ },
1466
+ "engines": {
1467
+ "node": ">= 0.4"
1468
+ }
1469
+ },
1470
+ "frontend/node_modules/glob-parent": {
1471
+ "version": "6.0.2",
1472
+ "dev": true,
1473
+ "license": "ISC",
1474
+ "dependencies": {
1475
+ "is-glob": "^4.0.3"
1476
+ },
1477
+ "engines": {
1478
+ "node": ">=10.13.0"
1479
+ }
1480
+ },
1481
+ "frontend/node_modules/globals": {
1482
+ "version": "17.5.0",
1483
+ "dev": true,
1484
+ "license": "MIT",
1485
+ "engines": {
1486
+ "node": ">=18"
1487
+ },
1488
+ "funding": {
1489
+ "url": "https://github.com/sponsors/sindresorhus"
1490
+ }
1491
+ },
1492
+ "frontend/node_modules/gopd": {
1493
+ "version": "1.2.0",
1494
+ "license": "MIT",
1495
+ "engines": {
1496
+ "node": ">= 0.4"
1497
+ },
1498
+ "funding": {
1499
+ "url": "https://github.com/sponsors/ljharb"
1500
+ }
1501
+ },
1502
+ "frontend/node_modules/has-flag": {
1503
+ "version": "4.0.0",
1504
+ "dev": true,
1505
+ "license": "MIT",
1506
+ "engines": {
1507
+ "node": ">=8"
1508
+ }
1509
+ },
1510
+ "frontend/node_modules/has-symbols": {
1511
+ "version": "1.1.0",
1512
+ "license": "MIT",
1513
+ "engines": {
1514
+ "node": ">= 0.4"
1515
+ },
1516
+ "funding": {
1517
+ "url": "https://github.com/sponsors/ljharb"
1518
+ }
1519
+ },
1520
+ "frontend/node_modules/has-tostringtag": {
1521
+ "version": "1.0.2",
1522
+ "license": "MIT",
1523
+ "dependencies": {
1524
+ "has-symbols": "^1.0.3"
1525
+ },
1526
+ "engines": {
1527
+ "node": ">= 0.4"
1528
+ },
1529
+ "funding": {
1530
+ "url": "https://github.com/sponsors/ljharb"
1531
+ }
1532
+ },
1533
+ "frontend/node_modules/hasown": {
1534
+ "version": "2.0.2",
1535
+ "license": "MIT",
1536
+ "dependencies": {
1537
+ "function-bind": "^1.1.2"
1538
+ },
1539
+ "engines": {
1540
+ "node": ">= 0.4"
1541
+ }
1542
+ },
1543
+ "frontend/node_modules/hermes-estree": {
1544
+ "version": "0.25.1",
1545
+ "dev": true,
1546
+ "license": "MIT"
1547
+ },
1548
+ "frontend/node_modules/hermes-parser": {
1549
+ "version": "0.25.1",
1550
+ "dev": true,
1551
+ "license": "MIT",
1552
+ "dependencies": {
1553
+ "hermes-estree": "0.25.1"
1554
+ }
1555
+ },
1556
+ "frontend/node_modules/ignore": {
1557
+ "version": "5.3.2",
1558
+ "dev": true,
1559
+ "license": "MIT",
1560
+ "engines": {
1561
+ "node": ">= 4"
1562
+ }
1563
+ },
1564
+ "frontend/node_modules/import-fresh": {
1565
+ "version": "3.3.1",
1566
+ "dev": true,
1567
+ "license": "MIT",
1568
+ "dependencies": {
1569
+ "parent-module": "^1.0.0",
1570
+ "resolve-from": "^4.0.0"
1571
+ },
1572
+ "engines": {
1573
+ "node": ">=6"
1574
+ },
1575
+ "funding": {
1576
+ "url": "https://github.com/sponsors/sindresorhus"
1577
+ }
1578
+ },
1579
+ "frontend/node_modules/imurmurhash": {
1580
+ "version": "0.1.4",
1581
+ "dev": true,
1582
+ "license": "MIT",
1583
+ "engines": {
1584
+ "node": ">=0.8.19"
1585
+ }
1586
+ },
1587
+ "frontend/node_modules/is-extglob": {
1588
+ "version": "2.1.1",
1589
+ "dev": true,
1590
+ "license": "MIT",
1591
+ "engines": {
1592
+ "node": ">=0.10.0"
1593
+ }
1594
+ },
1595
+ "frontend/node_modules/is-glob": {
1596
+ "version": "4.0.3",
1597
+ "dev": true,
1598
+ "license": "MIT",
1599
+ "dependencies": {
1600
+ "is-extglob": "^2.1.1"
1601
+ },
1602
+ "engines": {
1603
+ "node": ">=0.10.0"
1604
+ }
1605
+ },
1606
+ "frontend/node_modules/isexe": {
1607
+ "version": "2.0.0",
1608
+ "dev": true,
1609
+ "license": "ISC"
1610
+ },
1611
+ "frontend/node_modules/js-tokens": {
1612
+ "version": "4.0.0",
1613
+ "dev": true,
1614
+ "license": "MIT"
1615
+ },
1616
+ "frontend/node_modules/js-yaml": {
1617
+ "version": "4.1.1",
1618
+ "dev": true,
1619
+ "license": "MIT",
1620
+ "dependencies": {
1621
+ "argparse": "^2.0.1"
1622
+ },
1623
+ "bin": {
1624
+ "js-yaml": "bin/js-yaml.js"
1625
+ }
1626
+ },
1627
+ "frontend/node_modules/jsesc": {
1628
+ "version": "3.1.0",
1629
+ "dev": true,
1630
+ "license": "MIT",
1631
+ "bin": {
1632
+ "jsesc": "bin/jsesc"
1633
+ },
1634
+ "engines": {
1635
+ "node": ">=6"
1636
+ }
1637
+ },
1638
+ "frontend/node_modules/json-buffer": {
1639
+ "version": "3.0.1",
1640
+ "dev": true,
1641
+ "license": "MIT"
1642
+ },
1643
+ "frontend/node_modules/json-schema-traverse": {
1644
+ "version": "0.4.1",
1645
+ "dev": true,
1646
+ "license": "MIT"
1647
+ },
1648
+ "frontend/node_modules/json-stable-stringify-without-jsonify": {
1649
+ "version": "1.0.1",
1650
+ "dev": true,
1651
+ "license": "MIT"
1652
+ },
1653
+ "frontend/node_modules/json5": {
1654
+ "version": "2.2.3",
1655
+ "dev": true,
1656
+ "license": "MIT",
1657
+ "bin": {
1658
+ "json5": "lib/cli.js"
1659
+ },
1660
+ "engines": {
1661
+ "node": ">=6"
1662
+ }
1663
+ },
1664
+ "frontend/node_modules/keyv": {
1665
+ "version": "4.5.4",
1666
+ "dev": true,
1667
+ "license": "MIT",
1668
+ "dependencies": {
1669
+ "json-buffer": "3.0.1"
1670
+ }
1671
+ },
1672
+ "frontend/node_modules/levn": {
1673
+ "version": "0.4.1",
1674
+ "dev": true,
1675
+ "license": "MIT",
1676
+ "dependencies": {
1677
+ "prelude-ls": "^1.2.1",
1678
+ "type-check": "~0.4.0"
1679
+ },
1680
+ "engines": {
1681
+ "node": ">= 0.8.0"
1682
+ }
1683
+ },
1684
+ "frontend/node_modules/lightningcss": {
1685
+ "version": "1.32.0",
1686
+ "dev": true,
1687
+ "license": "MPL-2.0",
1688
+ "dependencies": {
1689
+ "detect-libc": "^2.0.3"
1690
+ },
1691
+ "engines": {
1692
+ "node": ">= 12.0.0"
1693
+ },
1694
+ "funding": {
1695
+ "type": "opencollective",
1696
+ "url": "https://opencollective.com/parcel"
1697
+ },
1698
+ "optionalDependencies": {
1699
+ "lightningcss-android-arm64": "1.32.0",
1700
+ "lightningcss-darwin-arm64": "1.32.0",
1701
+ "lightningcss-darwin-x64": "1.32.0",
1702
+ "lightningcss-freebsd-x64": "1.32.0",
1703
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
1704
+ "lightningcss-linux-arm64-gnu": "1.32.0",
1705
+ "lightningcss-linux-arm64-musl": "1.32.0",
1706
+ "lightningcss-linux-x64-gnu": "1.32.0",
1707
+ "lightningcss-linux-x64-musl": "1.32.0",
1708
+ "lightningcss-win32-arm64-msvc": "1.32.0",
1709
+ "lightningcss-win32-x64-msvc": "1.32.0"
1710
+ }
1711
+ },
1712
+ "frontend/node_modules/lightningcss-win32-x64-msvc": {
1713
+ "version": "1.32.0",
1714
+ "cpu": [
1715
+ "x64"
1716
+ ],
1717
+ "dev": true,
1718
+ "license": "MPL-2.0",
1719
+ "optional": true,
1720
+ "os": [
1721
+ "win32"
1722
+ ],
1723
+ "engines": {
1724
+ "node": ">= 12.0.0"
1725
+ },
1726
+ "funding": {
1727
+ "type": "opencollective",
1728
+ "url": "https://opencollective.com/parcel"
1729
+ }
1730
+ },
1731
+ "frontend/node_modules/locate-path": {
1732
+ "version": "6.0.0",
1733
+ "dev": true,
1734
+ "license": "MIT",
1735
+ "dependencies": {
1736
+ "p-locate": "^5.0.0"
1737
+ },
1738
+ "engines": {
1739
+ "node": ">=10"
1740
+ },
1741
+ "funding": {
1742
+ "url": "https://github.com/sponsors/sindresorhus"
1743
+ }
1744
+ },
1745
+ "frontend/node_modules/lodash.merge": {
1746
+ "version": "4.6.2",
1747
+ "dev": true,
1748
+ "license": "MIT"
1749
+ },
1750
+ "frontend/node_modules/lru-cache": {
1751
+ "version": "5.1.1",
1752
+ "dev": true,
1753
+ "license": "ISC",
1754
+ "dependencies": {
1755
+ "yallist": "^3.0.2"
1756
+ }
1757
+ },
1758
+ "frontend/node_modules/math-intrinsics": {
1759
+ "version": "1.1.0",
1760
+ "license": "MIT",
1761
+ "engines": {
1762
+ "node": ">= 0.4"
1763
+ }
1764
+ },
1765
+ "frontend/node_modules/mime-db": {
1766
+ "version": "1.52.0",
1767
+ "license": "MIT",
1768
+ "engines": {
1769
+ "node": ">= 0.6"
1770
+ }
1771
+ },
1772
+ "frontend/node_modules/mime-types": {
1773
+ "version": "2.1.35",
1774
+ "license": "MIT",
1775
+ "dependencies": {
1776
+ "mime-db": "1.52.0"
1777
+ },
1778
+ "engines": {
1779
+ "node": ">= 0.6"
1780
+ }
1781
+ },
1782
+ "frontend/node_modules/minimatch": {
1783
+ "version": "3.1.5",
1784
+ "dev": true,
1785
+ "license": "ISC",
1786
+ "dependencies": {
1787
+ "brace-expansion": "^1.1.7"
1788
+ },
1789
+ "engines": {
1790
+ "node": "*"
1791
+ }
1792
+ },
1793
+ "frontend/node_modules/ms": {
1794
+ "version": "2.1.3",
1795
+ "dev": true,
1796
+ "license": "MIT"
1797
+ },
1798
+ "frontend/node_modules/nanoid": {
1799
+ "version": "3.3.11",
1800
+ "dev": true,
1801
+ "funding": [
1802
+ {
1803
+ "type": "github",
1804
+ "url": "https://github.com/sponsors/ai"
1805
+ }
1806
+ ],
1807
+ "license": "MIT",
1808
+ "bin": {
1809
+ "nanoid": "bin/nanoid.cjs"
1810
+ },
1811
+ "engines": {
1812
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1813
+ }
1814
+ },
1815
+ "frontend/node_modules/natural-compare": {
1816
+ "version": "1.4.0",
1817
+ "dev": true,
1818
+ "license": "MIT"
1819
+ },
1820
+ "frontend/node_modules/node-releases": {
1821
+ "version": "2.0.37",
1822
+ "dev": true,
1823
+ "license": "MIT"
1824
+ },
1825
+ "frontend/node_modules/optionator": {
1826
+ "version": "0.9.4",
1827
+ "dev": true,
1828
+ "license": "MIT",
1829
+ "dependencies": {
1830
+ "deep-is": "^0.1.3",
1831
+ "fast-levenshtein": "^2.0.6",
1832
+ "levn": "^0.4.1",
1833
+ "prelude-ls": "^1.2.1",
1834
+ "type-check": "^0.4.0",
1835
+ "word-wrap": "^1.2.5"
1836
+ },
1837
+ "engines": {
1838
+ "node": ">= 0.8.0"
1839
+ }
1840
+ },
1841
+ "frontend/node_modules/p-limit": {
1842
+ "version": "3.1.0",
1843
+ "dev": true,
1844
+ "license": "MIT",
1845
+ "dependencies": {
1846
+ "yocto-queue": "^0.1.0"
1847
+ },
1848
+ "engines": {
1849
+ "node": ">=10"
1850
+ },
1851
+ "funding": {
1852
+ "url": "https://github.com/sponsors/sindresorhus"
1853
+ }
1854
+ },
1855
+ "frontend/node_modules/p-locate": {
1856
+ "version": "5.0.0",
1857
+ "dev": true,
1858
+ "license": "MIT",
1859
+ "dependencies": {
1860
+ "p-limit": "^3.0.2"
1861
+ },
1862
+ "engines": {
1863
+ "node": ">=10"
1864
+ },
1865
+ "funding": {
1866
+ "url": "https://github.com/sponsors/sindresorhus"
1867
+ }
1868
+ },
1869
+ "frontend/node_modules/parent-module": {
1870
+ "version": "1.0.1",
1871
+ "dev": true,
1872
+ "license": "MIT",
1873
+ "dependencies": {
1874
+ "callsites": "^3.0.0"
1875
+ },
1876
+ "engines": {
1877
+ "node": ">=6"
1878
+ }
1879
+ },
1880
+ "frontend/node_modules/path-exists": {
1881
+ "version": "4.0.0",
1882
+ "dev": true,
1883
+ "license": "MIT",
1884
+ "engines": {
1885
+ "node": ">=8"
1886
+ }
1887
+ },
1888
+ "frontend/node_modules/path-key": {
1889
+ "version": "3.1.1",
1890
+ "dev": true,
1891
+ "license": "MIT",
1892
+ "engines": {
1893
+ "node": ">=8"
1894
+ }
1895
+ },
1896
+ "frontend/node_modules/picocolors": {
1897
+ "version": "1.1.1",
1898
+ "dev": true,
1899
+ "license": "ISC"
1900
+ },
1901
+ "frontend/node_modules/picomatch": {
1902
+ "version": "4.0.4",
1903
+ "dev": true,
1904
+ "license": "MIT",
1905
+ "engines": {
1906
+ "node": ">=12"
1907
+ },
1908
+ "funding": {
1909
+ "url": "https://github.com/sponsors/jonschlinkert"
1910
+ }
1911
+ },
1912
+ "frontend/node_modules/postcss": {
1913
+ "version": "8.5.9",
1914
+ "dev": true,
1915
+ "funding": [
1916
+ {
1917
+ "type": "opencollective",
1918
+ "url": "https://opencollective.com/postcss/"
1919
+ },
1920
+ {
1921
+ "type": "tidelift",
1922
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1923
+ },
1924
+ {
1925
+ "type": "github",
1926
+ "url": "https://github.com/sponsors/ai"
1927
+ }
1928
+ ],
1929
+ "license": "MIT",
1930
+ "dependencies": {
1931
+ "nanoid": "^3.3.11",
1932
+ "picocolors": "^1.1.1",
1933
+ "source-map-js": "^1.2.1"
1934
+ },
1935
+ "engines": {
1936
+ "node": "^10 || ^12 || >=14"
1937
+ }
1938
+ },
1939
+ "frontend/node_modules/prelude-ls": {
1940
+ "version": "1.2.1",
1941
+ "dev": true,
1942
+ "license": "MIT",
1943
+ "engines": {
1944
+ "node": ">= 0.8.0"
1945
+ }
1946
+ },
1947
+ "frontend/node_modules/proxy-from-env": {
1948
+ "version": "2.1.0",
1949
+ "license": "MIT",
1950
+ "engines": {
1951
+ "node": ">=10"
1952
+ }
1953
+ },
1954
+ "frontend/node_modules/punycode": {
1955
+ "version": "2.3.1",
1956
+ "dev": true,
1957
+ "license": "MIT",
1958
+ "engines": {
1959
+ "node": ">=6"
1960
+ }
1961
+ },
1962
+ "frontend/node_modules/react": {
1963
+ "version": "19.2.5",
1964
+ "license": "MIT",
1965
+ "engines": {
1966
+ "node": ">=0.10.0"
1967
+ }
1968
+ },
1969
+ "frontend/node_modules/react-dom": {
1970
+ "version": "19.2.5",
1971
+ "license": "MIT",
1972
+ "dependencies": {
1973
+ "scheduler": "^0.27.0"
1974
+ },
1975
+ "peerDependencies": {
1976
+ "react": "^19.2.5"
1977
+ }
1978
+ },
1979
+ "frontend/node_modules/resolve-from": {
1980
+ "version": "4.0.0",
1981
+ "dev": true,
1982
+ "license": "MIT",
1983
+ "engines": {
1984
+ "node": ">=4"
1985
+ }
1986
+ },
1987
+ "frontend/node_modules/rolldown": {
1988
+ "version": "1.0.0-rc.15",
1989
+ "dev": true,
1990
+ "license": "MIT",
1991
+ "dependencies": {
1992
+ "@oxc-project/types": "=0.124.0",
1993
+ "@rolldown/pluginutils": "1.0.0-rc.15"
1994
+ },
1995
+ "bin": {
1996
+ "rolldown": "bin/cli.mjs"
1997
+ },
1998
+ "engines": {
1999
+ "node": "^20.19.0 || >=22.12.0"
2000
+ },
2001
+ "optionalDependencies": {
2002
+ "@rolldown/binding-android-arm64": "1.0.0-rc.15",
2003
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.15",
2004
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.15",
2005
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.15",
2006
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15",
2007
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15",
2008
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15",
2009
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15",
2010
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15",
2011
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15",
2012
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15",
2013
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15",
2014
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15",
2015
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15",
2016
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15"
2017
+ }
2018
+ },
2019
+ "frontend/node_modules/rolldown/node_modules/@rolldown/pluginutils": {
2020
+ "version": "1.0.0-rc.15",
2021
+ "dev": true,
2022
+ "license": "MIT"
2023
+ },
2024
+ "frontend/node_modules/scheduler": {
2025
+ "version": "0.27.0",
2026
+ "license": "MIT"
2027
+ },
2028
+ "frontend/node_modules/semver": {
2029
+ "version": "6.3.1",
2030
+ "dev": true,
2031
+ "license": "ISC",
2032
+ "bin": {
2033
+ "semver": "bin/semver.js"
2034
+ }
2035
+ },
2036
+ "frontend/node_modules/shebang-command": {
2037
+ "version": "2.0.0",
2038
+ "dev": true,
2039
+ "license": "MIT",
2040
+ "dependencies": {
2041
+ "shebang-regex": "^3.0.0"
2042
+ },
2043
+ "engines": {
2044
+ "node": ">=8"
2045
+ }
2046
+ },
2047
+ "frontend/node_modules/shebang-regex": {
2048
+ "version": "3.0.0",
2049
+ "dev": true,
2050
+ "license": "MIT",
2051
+ "engines": {
2052
+ "node": ">=8"
2053
+ }
2054
+ },
2055
+ "frontend/node_modules/source-map-js": {
2056
+ "version": "1.2.1",
2057
+ "dev": true,
2058
+ "license": "BSD-3-Clause",
2059
+ "engines": {
2060
+ "node": ">=0.10.0"
2061
+ }
2062
+ },
2063
+ "frontend/node_modules/strip-json-comments": {
2064
+ "version": "3.1.1",
2065
+ "dev": true,
2066
+ "license": "MIT",
2067
+ "engines": {
2068
+ "node": ">=8"
2069
+ },
2070
+ "funding": {
2071
+ "url": "https://github.com/sponsors/sindresorhus"
2072
+ }
2073
+ },
2074
+ "frontend/node_modules/supports-color": {
2075
+ "version": "7.2.0",
2076
+ "dev": true,
2077
+ "license": "MIT",
2078
+ "dependencies": {
2079
+ "has-flag": "^4.0.0"
2080
+ },
2081
+ "engines": {
2082
+ "node": ">=8"
2083
+ }
2084
+ },
2085
+ "frontend/node_modules/tinyglobby": {
2086
+ "version": "0.2.16",
2087
+ "dev": true,
2088
+ "license": "MIT",
2089
+ "dependencies": {
2090
+ "fdir": "^6.5.0",
2091
+ "picomatch": "^4.0.4"
2092
+ },
2093
+ "engines": {
2094
+ "node": ">=12.0.0"
2095
+ },
2096
+ "funding": {
2097
+ "url": "https://github.com/sponsors/SuperchupuDev"
2098
+ }
2099
+ },
2100
+ "frontend/node_modules/ts-api-utils": {
2101
+ "version": "2.5.0",
2102
+ "dev": true,
2103
+ "license": "MIT",
2104
+ "engines": {
2105
+ "node": ">=18.12"
2106
+ },
2107
+ "peerDependencies": {
2108
+ "typescript": ">=4.8.4"
2109
+ }
2110
+ },
2111
+ "frontend/node_modules/type-check": {
2112
+ "version": "0.4.0",
2113
+ "dev": true,
2114
+ "license": "MIT",
2115
+ "dependencies": {
2116
+ "prelude-ls": "^1.2.1"
2117
+ },
2118
+ "engines": {
2119
+ "node": ">= 0.8.0"
2120
+ }
2121
+ },
2122
+ "frontend/node_modules/typescript": {
2123
+ "version": "6.0.2",
2124
+ "dev": true,
2125
+ "license": "Apache-2.0",
2126
+ "bin": {
2127
+ "tsc": "bin/tsc",
2128
+ "tsserver": "bin/tsserver"
2129
+ },
2130
+ "engines": {
2131
+ "node": ">=14.17"
2132
+ }
2133
+ },
2134
+ "frontend/node_modules/typescript-eslint": {
2135
+ "version": "8.58.1",
2136
+ "dev": true,
2137
+ "license": "MIT",
2138
+ "dependencies": {
2139
+ "@typescript-eslint/eslint-plugin": "8.58.1",
2140
+ "@typescript-eslint/parser": "8.58.1",
2141
+ "@typescript-eslint/typescript-estree": "8.58.1",
2142
+ "@typescript-eslint/utils": "8.58.1"
2143
+ },
2144
+ "engines": {
2145
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2146
+ },
2147
+ "funding": {
2148
+ "type": "opencollective",
2149
+ "url": "https://opencollective.com/typescript-eslint"
2150
+ },
2151
+ "peerDependencies": {
2152
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
2153
+ "typescript": ">=4.8.4 <6.1.0"
2154
+ }
2155
+ },
2156
+ "frontend/node_modules/undici-types": {
2157
+ "version": "7.16.0",
2158
+ "dev": true,
2159
+ "license": "MIT"
2160
+ },
2161
+ "frontend/node_modules/update-browserslist-db": {
2162
+ "version": "1.2.3",
2163
+ "dev": true,
2164
+ "funding": [
2165
+ {
2166
+ "type": "opencollective",
2167
+ "url": "https://opencollective.com/browserslist"
2168
+ },
2169
+ {
2170
+ "type": "tidelift",
2171
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2172
+ },
2173
+ {
2174
+ "type": "github",
2175
+ "url": "https://github.com/sponsors/ai"
2176
+ }
2177
+ ],
2178
+ "license": "MIT",
2179
+ "dependencies": {
2180
+ "escalade": "^3.2.0",
2181
+ "picocolors": "^1.1.1"
2182
+ },
2183
+ "bin": {
2184
+ "update-browserslist-db": "cli.js"
2185
+ },
2186
+ "peerDependencies": {
2187
+ "browserslist": ">= 4.21.0"
2188
+ }
2189
+ },
2190
+ "frontend/node_modules/uri-js": {
2191
+ "version": "4.4.1",
2192
+ "dev": true,
2193
+ "license": "BSD-2-Clause",
2194
+ "dependencies": {
2195
+ "punycode": "^2.1.0"
2196
+ }
2197
+ },
2198
+ "frontend/node_modules/vite": {
2199
+ "version": "8.0.8",
2200
+ "dev": true,
2201
+ "license": "MIT",
2202
+ "dependencies": {
2203
+ "lightningcss": "^1.32.0",
2204
+ "picomatch": "^4.0.4",
2205
+ "postcss": "^8.5.8",
2206
+ "rolldown": "1.0.0-rc.15",
2207
+ "tinyglobby": "^0.2.15"
2208
+ },
2209
+ "bin": {
2210
+ "vite": "bin/vite.js"
2211
+ },
2212
+ "engines": {
2213
+ "node": "^20.19.0 || >=22.12.0"
2214
+ },
2215
+ "funding": {
2216
+ "url": "https://github.com/vitejs/vite?sponsor=1"
2217
+ },
2218
+ "optionalDependencies": {
2219
+ "fsevents": "~2.3.3"
2220
+ },
2221
+ "peerDependencies": {
2222
+ "@types/node": "^20.19.0 || >=22.12.0",
2223
+ "@vitejs/devtools": "^0.1.0",
2224
+ "esbuild": "^0.27.0 || ^0.28.0",
2225
+ "jiti": ">=1.21.0",
2226
+ "less": "^4.0.0",
2227
+ "sass": "^1.70.0",
2228
+ "sass-embedded": "^1.70.0",
2229
+ "stylus": ">=0.54.8",
2230
+ "sugarss": "^5.0.0",
2231
+ "terser": "^5.16.0",
2232
+ "tsx": "^4.8.1",
2233
+ "yaml": "^2.4.2"
2234
+ },
2235
+ "peerDependenciesMeta": {
2236
+ "@types/node": {
2237
+ "optional": true
2238
+ },
2239
+ "@vitejs/devtools": {
2240
+ "optional": true
2241
+ },
2242
+ "esbuild": {
2243
+ "optional": true
2244
+ },
2245
+ "jiti": {
2246
+ "optional": true
2247
+ },
2248
+ "less": {
2249
+ "optional": true
2250
+ },
2251
+ "sass": {
2252
+ "optional": true
2253
+ },
2254
+ "sass-embedded": {
2255
+ "optional": true
2256
+ },
2257
+ "stylus": {
2258
+ "optional": true
2259
+ },
2260
+ "sugarss": {
2261
+ "optional": true
2262
+ },
2263
+ "terser": {
2264
+ "optional": true
2265
+ },
2266
+ "tsx": {
2267
+ "optional": true
2268
+ },
2269
+ "yaml": {
2270
+ "optional": true
2271
+ }
2272
+ }
2273
+ },
2274
+ "frontend/node_modules/which": {
2275
+ "version": "2.0.2",
2276
+ "dev": true,
2277
+ "license": "ISC",
2278
+ "dependencies": {
2279
+ "isexe": "^2.0.0"
2280
+ },
2281
+ "bin": {
2282
+ "node-which": "bin/node-which"
2283
+ },
2284
+ "engines": {
2285
+ "node": ">= 8"
2286
+ }
2287
+ },
2288
+ "frontend/node_modules/word-wrap": {
2289
+ "version": "1.2.5",
2290
+ "dev": true,
2291
+ "license": "MIT",
2292
+ "engines": {
2293
+ "node": ">=0.10.0"
2294
+ }
2295
+ },
2296
+ "frontend/node_modules/yallist": {
2297
+ "version": "3.1.1",
2298
+ "dev": true,
2299
+ "license": "ISC"
2300
+ },
2301
+ "frontend/node_modules/yocto-queue": {
2302
+ "version": "0.1.0",
2303
+ "dev": true,
2304
+ "license": "MIT",
2305
+ "engines": {
2306
+ "node": ">=10"
2307
+ },
2308
+ "funding": {
2309
+ "url": "https://github.com/sponsors/sindresorhus"
2310
+ }
2311
+ },
2312
+ "frontend/node_modules/zod": {
2313
+ "version": "4.3.6",
2314
+ "dev": true,
2315
+ "license": "MIT",
2316
+ "funding": {
2317
+ "url": "https://github.com/sponsors/colinhacks"
2318
+ }
2319
+ },
2320
+ "frontend/node_modules/zod-validation-error": {
2321
+ "version": "4.0.2",
2322
+ "dev": true,
2323
+ "license": "MIT",
2324
+ "engines": {
2325
+ "node": ">=18.0.0"
2326
+ },
2327
+ "peerDependencies": {
2328
+ "zod": "^3.25.0 || ^4.0.0"
2329
+ }
2330
+ },
2331
+ "node_modules/frontend": {
2332
+ "resolved": "frontend",
2333
+ "link": true
2334
+ }
2335
+ }
2336
+ }