+6
.env.test
+6
.env.test
-30
client/.gitignore
-30
client/.gitignore
···
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
-
# Compiled JS files (we use TypeScript)
16
-
src/**/*.js
17
-
src/**/*.js.map
18
-
*.js
19
-
!vite.config.js
20
-
21
-
# Editor directories and files
22
-
.vscode/*
23
-
!.vscode/extensions.json
24
-
.idea
25
-
.DS_Store
26
-
*.suo
27
-
*.ntvs*
28
-
*.njsproj
29
-
*.sln
30
-
*.sw?
-54
client/README.md
-54
client/README.md
···
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 [Babel](https://babeljs.io/) for Fast Refresh
8
-
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9
-
10
-
## Expanding the ESLint configuration
11
-
12
-
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
13
-
14
-
```js
15
-
export default tseslint.config({
16
-
extends: [
17
-
// Remove ...tseslint.configs.recommended and replace with this
18
-
...tseslint.configs.recommendedTypeChecked,
19
-
// Alternatively, use this for stricter rules
20
-
...tseslint.configs.strictTypeChecked,
21
-
// Optionally, add this for stylistic rules
22
-
...tseslint.configs.stylisticTypeChecked,
23
-
],
24
-
languageOptions: {
25
-
// other options...
26
-
parserOptions: {
27
-
project: ['./tsconfig.node.json', './tsconfig.app.json'],
28
-
tsconfigRootDir: import.meta.dirname,
29
-
},
30
-
},
31
-
})
32
-
```
33
-
34
-
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:
35
-
36
-
```js
37
-
// eslint.config.js
38
-
import reactX from 'eslint-plugin-react-x'
39
-
import reactDom from 'eslint-plugin-react-dom'
40
-
41
-
export default tseslint.config({
42
-
plugins: {
43
-
// Add the react-x and react-dom plugins
44
-
'react-x': reactX,
45
-
'react-dom': reactDom,
46
-
},
47
-
rules: {
48
-
// other rules...
49
-
// Enable its recommended typescript rules
50
-
...reactX.configs['recommended-typescript'].rules,
51
-
...reactDom.configs.recommended.rules,
52
-
},
53
-
})
54
-
```
-28
client/eslint.config.js
-28
client/eslint.config.js
···
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
-
7
-
export default tseslint.config(
8
-
{ ignores: ['dist'] },
9
-
{
10
-
extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
-
files: ['**/*.{ts,tsx}'],
12
-
languageOptions: {
13
-
ecmaVersion: 2020,
14
-
globals: globals.browser,
15
-
},
16
-
plugins: {
17
-
'react-hooks': reactHooks,
18
-
'react-refresh': reactRefresh,
19
-
},
20
-
rules: {
21
-
...reactHooks.configs.recommended.rules,
22
-
'react-refresh/only-export-components': [
23
-
'warn',
24
-
{ allowConstantExport: true },
25
-
],
26
-
},
27
-
},
28
-
)
-13
client/index.html
-13
client/index.html
···
1
-
<!doctype html>
2
-
<html lang="en">
3
-
<head>
4
-
<meta charset="UTF-8" />
5
-
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
-
<title>blonk - vibe radar</title>
8
-
</head>
9
-
<body>
10
-
<div id="root"></div>
11
-
<script type="module" src="/src/main.tsx"></script>
12
-
</body>
13
-
</html>
-3771
client/package-lock.json
-3771
client/package-lock.json
···
1
-
{
2
-
"name": "client",
3
-
"version": "0.0.0",
4
-
"lockfileVersion": 3,
5
-
"requires": true,
6
-
"packages": {
7
-
"": {
8
-
"name": "client",
9
-
"version": "0.0.0",
10
-
"dependencies": {
11
-
"@tanstack/react-query": "^5.80.10",
12
-
"@tanstack/react-query-devtools": "^5.80.10",
13
-
"axios": "^1.10.0",
14
-
"react": "^19.1.0",
15
-
"react-dom": "^19.1.0",
16
-
"react-router-dom": "^7.6.2"
17
-
},
18
-
"devDependencies": {
19
-
"@eslint/js": "^9.25.0",
20
-
"@types/react": "^19.1.2",
21
-
"@types/react-dom": "^19.1.2",
22
-
"@vitejs/plugin-react": "^4.4.1",
23
-
"eslint": "^9.25.0",
24
-
"eslint-plugin-react-hooks": "^5.2.0",
25
-
"eslint-plugin-react-refresh": "^0.4.19",
26
-
"globals": "^16.0.0",
27
-
"typescript": "~5.8.3",
28
-
"typescript-eslint": "^8.30.1",
29
-
"vite": "^6.3.5"
30
-
}
31
-
},
32
-
"node_modules/@ampproject/remapping": {
33
-
"version": "2.3.0",
34
-
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
35
-
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
36
-
"dev": true,
37
-
"license": "Apache-2.0",
38
-
"dependencies": {
39
-
"@jridgewell/gen-mapping": "^0.3.5",
40
-
"@jridgewell/trace-mapping": "^0.3.24"
41
-
},
42
-
"engines": {
43
-
"node": ">=6.0.0"
44
-
}
45
-
},
46
-
"node_modules/@babel/code-frame": {
47
-
"version": "7.27.1",
48
-
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
49
-
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
50
-
"dev": true,
51
-
"license": "MIT",
52
-
"dependencies": {
53
-
"@babel/helper-validator-identifier": "^7.27.1",
54
-
"js-tokens": "^4.0.0",
55
-
"picocolors": "^1.1.1"
56
-
},
57
-
"engines": {
58
-
"node": ">=6.9.0"
59
-
}
60
-
},
61
-
"node_modules/@babel/compat-data": {
62
-
"version": "7.27.5",
63
-
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
64
-
"integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
65
-
"dev": true,
66
-
"license": "MIT",
67
-
"engines": {
68
-
"node": ">=6.9.0"
69
-
}
70
-
},
71
-
"node_modules/@babel/core": {
72
-
"version": "7.27.4",
73
-
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
74
-
"integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
75
-
"dev": true,
76
-
"license": "MIT",
77
-
"dependencies": {
78
-
"@ampproject/remapping": "^2.2.0",
79
-
"@babel/code-frame": "^7.27.1",
80
-
"@babel/generator": "^7.27.3",
81
-
"@babel/helper-compilation-targets": "^7.27.2",
82
-
"@babel/helper-module-transforms": "^7.27.3",
83
-
"@babel/helpers": "^7.27.4",
84
-
"@babel/parser": "^7.27.4",
85
-
"@babel/template": "^7.27.2",
86
-
"@babel/traverse": "^7.27.4",
87
-
"@babel/types": "^7.27.3",
88
-
"convert-source-map": "^2.0.0",
89
-
"debug": "^4.1.0",
90
-
"gensync": "^1.0.0-beta.2",
91
-
"json5": "^2.2.3",
92
-
"semver": "^6.3.1"
93
-
},
94
-
"engines": {
95
-
"node": ">=6.9.0"
96
-
},
97
-
"funding": {
98
-
"type": "opencollective",
99
-
"url": "https://opencollective.com/babel"
100
-
}
101
-
},
102
-
"node_modules/@babel/generator": {
103
-
"version": "7.27.5",
104
-
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
105
-
"integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
106
-
"dev": true,
107
-
"license": "MIT",
108
-
"dependencies": {
109
-
"@babel/parser": "^7.27.5",
110
-
"@babel/types": "^7.27.3",
111
-
"@jridgewell/gen-mapping": "^0.3.5",
112
-
"@jridgewell/trace-mapping": "^0.3.25",
113
-
"jsesc": "^3.0.2"
114
-
},
115
-
"engines": {
116
-
"node": ">=6.9.0"
117
-
}
118
-
},
119
-
"node_modules/@babel/helper-compilation-targets": {
120
-
"version": "7.27.2",
121
-
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
122
-
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
123
-
"dev": true,
124
-
"license": "MIT",
125
-
"dependencies": {
126
-
"@babel/compat-data": "^7.27.2",
127
-
"@babel/helper-validator-option": "^7.27.1",
128
-
"browserslist": "^4.24.0",
129
-
"lru-cache": "^5.1.1",
130
-
"semver": "^6.3.1"
131
-
},
132
-
"engines": {
133
-
"node": ">=6.9.0"
134
-
}
135
-
},
136
-
"node_modules/@babel/helper-module-imports": {
137
-
"version": "7.27.1",
138
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
139
-
"integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
140
-
"dev": true,
141
-
"license": "MIT",
142
-
"dependencies": {
143
-
"@babel/traverse": "^7.27.1",
144
-
"@babel/types": "^7.27.1"
145
-
},
146
-
"engines": {
147
-
"node": ">=6.9.0"
148
-
}
149
-
},
150
-
"node_modules/@babel/helper-module-transforms": {
151
-
"version": "7.27.3",
152
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
153
-
"integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
154
-
"dev": true,
155
-
"license": "MIT",
156
-
"dependencies": {
157
-
"@babel/helper-module-imports": "^7.27.1",
158
-
"@babel/helper-validator-identifier": "^7.27.1",
159
-
"@babel/traverse": "^7.27.3"
160
-
},
161
-
"engines": {
162
-
"node": ">=6.9.0"
163
-
},
164
-
"peerDependencies": {
165
-
"@babel/core": "^7.0.0"
166
-
}
167
-
},
168
-
"node_modules/@babel/helper-plugin-utils": {
169
-
"version": "7.27.1",
170
-
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
171
-
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
172
-
"dev": true,
173
-
"license": "MIT",
174
-
"engines": {
175
-
"node": ">=6.9.0"
176
-
}
177
-
},
178
-
"node_modules/@babel/helper-string-parser": {
179
-
"version": "7.27.1",
180
-
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
181
-
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
182
-
"dev": true,
183
-
"license": "MIT",
184
-
"engines": {
185
-
"node": ">=6.9.0"
186
-
}
187
-
},
188
-
"node_modules/@babel/helper-validator-identifier": {
189
-
"version": "7.27.1",
190
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
191
-
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
192
-
"dev": true,
193
-
"license": "MIT",
194
-
"engines": {
195
-
"node": ">=6.9.0"
196
-
}
197
-
},
198
-
"node_modules/@babel/helper-validator-option": {
199
-
"version": "7.27.1",
200
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
201
-
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
202
-
"dev": true,
203
-
"license": "MIT",
204
-
"engines": {
205
-
"node": ">=6.9.0"
206
-
}
207
-
},
208
-
"node_modules/@babel/helpers": {
209
-
"version": "7.27.6",
210
-
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
211
-
"integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
212
-
"dev": true,
213
-
"license": "MIT",
214
-
"dependencies": {
215
-
"@babel/template": "^7.27.2",
216
-
"@babel/types": "^7.27.6"
217
-
},
218
-
"engines": {
219
-
"node": ">=6.9.0"
220
-
}
221
-
},
222
-
"node_modules/@babel/parser": {
223
-
"version": "7.27.5",
224
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
225
-
"integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
226
-
"dev": true,
227
-
"license": "MIT",
228
-
"dependencies": {
229
-
"@babel/types": "^7.27.3"
230
-
},
231
-
"bin": {
232
-
"parser": "bin/babel-parser.js"
233
-
},
234
-
"engines": {
235
-
"node": ">=6.0.0"
236
-
}
237
-
},
238
-
"node_modules/@babel/plugin-transform-react-jsx-self": {
239
-
"version": "7.27.1",
240
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
241
-
"integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
242
-
"dev": true,
243
-
"license": "MIT",
244
-
"dependencies": {
245
-
"@babel/helper-plugin-utils": "^7.27.1"
246
-
},
247
-
"engines": {
248
-
"node": ">=6.9.0"
249
-
},
250
-
"peerDependencies": {
251
-
"@babel/core": "^7.0.0-0"
252
-
}
253
-
},
254
-
"node_modules/@babel/plugin-transform-react-jsx-source": {
255
-
"version": "7.27.1",
256
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
257
-
"integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
258
-
"dev": true,
259
-
"license": "MIT",
260
-
"dependencies": {
261
-
"@babel/helper-plugin-utils": "^7.27.1"
262
-
},
263
-
"engines": {
264
-
"node": ">=6.9.0"
265
-
},
266
-
"peerDependencies": {
267
-
"@babel/core": "^7.0.0-0"
268
-
}
269
-
},
270
-
"node_modules/@babel/template": {
271
-
"version": "7.27.2",
272
-
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
273
-
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
274
-
"dev": true,
275
-
"license": "MIT",
276
-
"dependencies": {
277
-
"@babel/code-frame": "^7.27.1",
278
-
"@babel/parser": "^7.27.2",
279
-
"@babel/types": "^7.27.1"
280
-
},
281
-
"engines": {
282
-
"node": ">=6.9.0"
283
-
}
284
-
},
285
-
"node_modules/@babel/traverse": {
286
-
"version": "7.27.4",
287
-
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
288
-
"integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
289
-
"dev": true,
290
-
"license": "MIT",
291
-
"dependencies": {
292
-
"@babel/code-frame": "^7.27.1",
293
-
"@babel/generator": "^7.27.3",
294
-
"@babel/parser": "^7.27.4",
295
-
"@babel/template": "^7.27.2",
296
-
"@babel/types": "^7.27.3",
297
-
"debug": "^4.3.1",
298
-
"globals": "^11.1.0"
299
-
},
300
-
"engines": {
301
-
"node": ">=6.9.0"
302
-
}
303
-
},
304
-
"node_modules/@babel/traverse/node_modules/globals": {
305
-
"version": "11.12.0",
306
-
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
307
-
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
308
-
"dev": true,
309
-
"license": "MIT",
310
-
"engines": {
311
-
"node": ">=4"
312
-
}
313
-
},
314
-
"node_modules/@babel/types": {
315
-
"version": "7.27.6",
316
-
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
317
-
"integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
318
-
"dev": true,
319
-
"license": "MIT",
320
-
"dependencies": {
321
-
"@babel/helper-string-parser": "^7.27.1",
322
-
"@babel/helper-validator-identifier": "^7.27.1"
323
-
},
324
-
"engines": {
325
-
"node": ">=6.9.0"
326
-
}
327
-
},
328
-
"node_modules/@esbuild/aix-ppc64": {
329
-
"version": "0.25.5",
330
-
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
331
-
"integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
332
-
"cpu": [
333
-
"ppc64"
334
-
],
335
-
"dev": true,
336
-
"license": "MIT",
337
-
"optional": true,
338
-
"os": [
339
-
"aix"
340
-
],
341
-
"engines": {
342
-
"node": ">=18"
343
-
}
344
-
},
345
-
"node_modules/@esbuild/android-arm": {
346
-
"version": "0.25.5",
347
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
348
-
"integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
349
-
"cpu": [
350
-
"arm"
351
-
],
352
-
"dev": true,
353
-
"license": "MIT",
354
-
"optional": true,
355
-
"os": [
356
-
"android"
357
-
],
358
-
"engines": {
359
-
"node": ">=18"
360
-
}
361
-
},
362
-
"node_modules/@esbuild/android-arm64": {
363
-
"version": "0.25.5",
364
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
365
-
"integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
366
-
"cpu": [
367
-
"arm64"
368
-
],
369
-
"dev": true,
370
-
"license": "MIT",
371
-
"optional": true,
372
-
"os": [
373
-
"android"
374
-
],
375
-
"engines": {
376
-
"node": ">=18"
377
-
}
378
-
},
379
-
"node_modules/@esbuild/android-x64": {
380
-
"version": "0.25.5",
381
-
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
382
-
"integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
383
-
"cpu": [
384
-
"x64"
385
-
],
386
-
"dev": true,
387
-
"license": "MIT",
388
-
"optional": true,
389
-
"os": [
390
-
"android"
391
-
],
392
-
"engines": {
393
-
"node": ">=18"
394
-
}
395
-
},
396
-
"node_modules/@esbuild/darwin-arm64": {
397
-
"version": "0.25.5",
398
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
399
-
"integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
400
-
"cpu": [
401
-
"arm64"
402
-
],
403
-
"dev": true,
404
-
"license": "MIT",
405
-
"optional": true,
406
-
"os": [
407
-
"darwin"
408
-
],
409
-
"engines": {
410
-
"node": ">=18"
411
-
}
412
-
},
413
-
"node_modules/@esbuild/darwin-x64": {
414
-
"version": "0.25.5",
415
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
416
-
"integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
417
-
"cpu": [
418
-
"x64"
419
-
],
420
-
"dev": true,
421
-
"license": "MIT",
422
-
"optional": true,
423
-
"os": [
424
-
"darwin"
425
-
],
426
-
"engines": {
427
-
"node": ">=18"
428
-
}
429
-
},
430
-
"node_modules/@esbuild/freebsd-arm64": {
431
-
"version": "0.25.5",
432
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
433
-
"integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
434
-
"cpu": [
435
-
"arm64"
436
-
],
437
-
"dev": true,
438
-
"license": "MIT",
439
-
"optional": true,
440
-
"os": [
441
-
"freebsd"
442
-
],
443
-
"engines": {
444
-
"node": ">=18"
445
-
}
446
-
},
447
-
"node_modules/@esbuild/freebsd-x64": {
448
-
"version": "0.25.5",
449
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
450
-
"integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
451
-
"cpu": [
452
-
"x64"
453
-
],
454
-
"dev": true,
455
-
"license": "MIT",
456
-
"optional": true,
457
-
"os": [
458
-
"freebsd"
459
-
],
460
-
"engines": {
461
-
"node": ">=18"
462
-
}
463
-
},
464
-
"node_modules/@esbuild/linux-arm": {
465
-
"version": "0.25.5",
466
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
467
-
"integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
468
-
"cpu": [
469
-
"arm"
470
-
],
471
-
"dev": true,
472
-
"license": "MIT",
473
-
"optional": true,
474
-
"os": [
475
-
"linux"
476
-
],
477
-
"engines": {
478
-
"node": ">=18"
479
-
}
480
-
},
481
-
"node_modules/@esbuild/linux-arm64": {
482
-
"version": "0.25.5",
483
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
484
-
"integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
485
-
"cpu": [
486
-
"arm64"
487
-
],
488
-
"dev": true,
489
-
"license": "MIT",
490
-
"optional": true,
491
-
"os": [
492
-
"linux"
493
-
],
494
-
"engines": {
495
-
"node": ">=18"
496
-
}
497
-
},
498
-
"node_modules/@esbuild/linux-ia32": {
499
-
"version": "0.25.5",
500
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
501
-
"integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
502
-
"cpu": [
503
-
"ia32"
504
-
],
505
-
"dev": true,
506
-
"license": "MIT",
507
-
"optional": true,
508
-
"os": [
509
-
"linux"
510
-
],
511
-
"engines": {
512
-
"node": ">=18"
513
-
}
514
-
},
515
-
"node_modules/@esbuild/linux-loong64": {
516
-
"version": "0.25.5",
517
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
518
-
"integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
519
-
"cpu": [
520
-
"loong64"
521
-
],
522
-
"dev": true,
523
-
"license": "MIT",
524
-
"optional": true,
525
-
"os": [
526
-
"linux"
527
-
],
528
-
"engines": {
529
-
"node": ">=18"
530
-
}
531
-
},
532
-
"node_modules/@esbuild/linux-mips64el": {
533
-
"version": "0.25.5",
534
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
535
-
"integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
536
-
"cpu": [
537
-
"mips64el"
538
-
],
539
-
"dev": true,
540
-
"license": "MIT",
541
-
"optional": true,
542
-
"os": [
543
-
"linux"
544
-
],
545
-
"engines": {
546
-
"node": ">=18"
547
-
}
548
-
},
549
-
"node_modules/@esbuild/linux-ppc64": {
550
-
"version": "0.25.5",
551
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
552
-
"integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
553
-
"cpu": [
554
-
"ppc64"
555
-
],
556
-
"dev": true,
557
-
"license": "MIT",
558
-
"optional": true,
559
-
"os": [
560
-
"linux"
561
-
],
562
-
"engines": {
563
-
"node": ">=18"
564
-
}
565
-
},
566
-
"node_modules/@esbuild/linux-riscv64": {
567
-
"version": "0.25.5",
568
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
569
-
"integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
570
-
"cpu": [
571
-
"riscv64"
572
-
],
573
-
"dev": true,
574
-
"license": "MIT",
575
-
"optional": true,
576
-
"os": [
577
-
"linux"
578
-
],
579
-
"engines": {
580
-
"node": ">=18"
581
-
}
582
-
},
583
-
"node_modules/@esbuild/linux-s390x": {
584
-
"version": "0.25.5",
585
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
586
-
"integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
587
-
"cpu": [
588
-
"s390x"
589
-
],
590
-
"dev": true,
591
-
"license": "MIT",
592
-
"optional": true,
593
-
"os": [
594
-
"linux"
595
-
],
596
-
"engines": {
597
-
"node": ">=18"
598
-
}
599
-
},
600
-
"node_modules/@esbuild/linux-x64": {
601
-
"version": "0.25.5",
602
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
603
-
"integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
604
-
"cpu": [
605
-
"x64"
606
-
],
607
-
"dev": true,
608
-
"license": "MIT",
609
-
"optional": true,
610
-
"os": [
611
-
"linux"
612
-
],
613
-
"engines": {
614
-
"node": ">=18"
615
-
}
616
-
},
617
-
"node_modules/@esbuild/netbsd-arm64": {
618
-
"version": "0.25.5",
619
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
620
-
"integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
621
-
"cpu": [
622
-
"arm64"
623
-
],
624
-
"dev": true,
625
-
"license": "MIT",
626
-
"optional": true,
627
-
"os": [
628
-
"netbsd"
629
-
],
630
-
"engines": {
631
-
"node": ">=18"
632
-
}
633
-
},
634
-
"node_modules/@esbuild/netbsd-x64": {
635
-
"version": "0.25.5",
636
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
637
-
"integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
638
-
"cpu": [
639
-
"x64"
640
-
],
641
-
"dev": true,
642
-
"license": "MIT",
643
-
"optional": true,
644
-
"os": [
645
-
"netbsd"
646
-
],
647
-
"engines": {
648
-
"node": ">=18"
649
-
}
650
-
},
651
-
"node_modules/@esbuild/openbsd-arm64": {
652
-
"version": "0.25.5",
653
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
654
-
"integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
655
-
"cpu": [
656
-
"arm64"
657
-
],
658
-
"dev": true,
659
-
"license": "MIT",
660
-
"optional": true,
661
-
"os": [
662
-
"openbsd"
663
-
],
664
-
"engines": {
665
-
"node": ">=18"
666
-
}
667
-
},
668
-
"node_modules/@esbuild/openbsd-x64": {
669
-
"version": "0.25.5",
670
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
671
-
"integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
672
-
"cpu": [
673
-
"x64"
674
-
],
675
-
"dev": true,
676
-
"license": "MIT",
677
-
"optional": true,
678
-
"os": [
679
-
"openbsd"
680
-
],
681
-
"engines": {
682
-
"node": ">=18"
683
-
}
684
-
},
685
-
"node_modules/@esbuild/sunos-x64": {
686
-
"version": "0.25.5",
687
-
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
688
-
"integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
689
-
"cpu": [
690
-
"x64"
691
-
],
692
-
"dev": true,
693
-
"license": "MIT",
694
-
"optional": true,
695
-
"os": [
696
-
"sunos"
697
-
],
698
-
"engines": {
699
-
"node": ">=18"
700
-
}
701
-
},
702
-
"node_modules/@esbuild/win32-arm64": {
703
-
"version": "0.25.5",
704
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
705
-
"integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
706
-
"cpu": [
707
-
"arm64"
708
-
],
709
-
"dev": true,
710
-
"license": "MIT",
711
-
"optional": true,
712
-
"os": [
713
-
"win32"
714
-
],
715
-
"engines": {
716
-
"node": ">=18"
717
-
}
718
-
},
719
-
"node_modules/@esbuild/win32-ia32": {
720
-
"version": "0.25.5",
721
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
722
-
"integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
723
-
"cpu": [
724
-
"ia32"
725
-
],
726
-
"dev": true,
727
-
"license": "MIT",
728
-
"optional": true,
729
-
"os": [
730
-
"win32"
731
-
],
732
-
"engines": {
733
-
"node": ">=18"
734
-
}
735
-
},
736
-
"node_modules/@esbuild/win32-x64": {
737
-
"version": "0.25.5",
738
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
739
-
"integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
740
-
"cpu": [
741
-
"x64"
742
-
],
743
-
"dev": true,
744
-
"license": "MIT",
745
-
"optional": true,
746
-
"os": [
747
-
"win32"
748
-
],
749
-
"engines": {
750
-
"node": ">=18"
751
-
}
752
-
},
753
-
"node_modules/@eslint-community/eslint-utils": {
754
-
"version": "4.7.0",
755
-
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
756
-
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
757
-
"dev": true,
758
-
"license": "MIT",
759
-
"dependencies": {
760
-
"eslint-visitor-keys": "^3.4.3"
761
-
},
762
-
"engines": {
763
-
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
764
-
},
765
-
"funding": {
766
-
"url": "https://opencollective.com/eslint"
767
-
},
768
-
"peerDependencies": {
769
-
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
770
-
}
771
-
},
772
-
"node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
773
-
"version": "3.4.3",
774
-
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
775
-
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
776
-
"dev": true,
777
-
"license": "Apache-2.0",
778
-
"engines": {
779
-
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
780
-
},
781
-
"funding": {
782
-
"url": "https://opencollective.com/eslint"
783
-
}
784
-
},
785
-
"node_modules/@eslint-community/regexpp": {
786
-
"version": "4.12.1",
787
-
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
788
-
"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
789
-
"dev": true,
790
-
"license": "MIT",
791
-
"engines": {
792
-
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
793
-
}
794
-
},
795
-
"node_modules/@eslint/config-array": {
796
-
"version": "0.20.1",
797
-
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz",
798
-
"integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==",
799
-
"dev": true,
800
-
"license": "Apache-2.0",
801
-
"dependencies": {
802
-
"@eslint/object-schema": "^2.1.6",
803
-
"debug": "^4.3.1",
804
-
"minimatch": "^3.1.2"
805
-
},
806
-
"engines": {
807
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
808
-
}
809
-
},
810
-
"node_modules/@eslint/config-helpers": {
811
-
"version": "0.2.3",
812
-
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz",
813
-
"integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==",
814
-
"dev": true,
815
-
"license": "Apache-2.0",
816
-
"engines": {
817
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
818
-
}
819
-
},
820
-
"node_modules/@eslint/core": {
821
-
"version": "0.14.0",
822
-
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
823
-
"integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
824
-
"dev": true,
825
-
"license": "Apache-2.0",
826
-
"dependencies": {
827
-
"@types/json-schema": "^7.0.15"
828
-
},
829
-
"engines": {
830
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
831
-
}
832
-
},
833
-
"node_modules/@eslint/eslintrc": {
834
-
"version": "3.3.1",
835
-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
836
-
"integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
837
-
"dev": true,
838
-
"license": "MIT",
839
-
"dependencies": {
840
-
"ajv": "^6.12.4",
841
-
"debug": "^4.3.2",
842
-
"espree": "^10.0.1",
843
-
"globals": "^14.0.0",
844
-
"ignore": "^5.2.0",
845
-
"import-fresh": "^3.2.1",
846
-
"js-yaml": "^4.1.0",
847
-
"minimatch": "^3.1.2",
848
-
"strip-json-comments": "^3.1.1"
849
-
},
850
-
"engines": {
851
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
852
-
},
853
-
"funding": {
854
-
"url": "https://opencollective.com/eslint"
855
-
}
856
-
},
857
-
"node_modules/@eslint/eslintrc/node_modules/globals": {
858
-
"version": "14.0.0",
859
-
"resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
860
-
"integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
861
-
"dev": true,
862
-
"license": "MIT",
863
-
"engines": {
864
-
"node": ">=18"
865
-
},
866
-
"funding": {
867
-
"url": "https://github.com/sponsors/sindresorhus"
868
-
}
869
-
},
870
-
"node_modules/@eslint/js": {
871
-
"version": "9.29.0",
872
-
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz",
873
-
"integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==",
874
-
"dev": true,
875
-
"license": "MIT",
876
-
"engines": {
877
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
878
-
},
879
-
"funding": {
880
-
"url": "https://eslint.org/donate"
881
-
}
882
-
},
883
-
"node_modules/@eslint/object-schema": {
884
-
"version": "2.1.6",
885
-
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
886
-
"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
887
-
"dev": true,
888
-
"license": "Apache-2.0",
889
-
"engines": {
890
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
891
-
}
892
-
},
893
-
"node_modules/@eslint/plugin-kit": {
894
-
"version": "0.3.2",
895
-
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz",
896
-
"integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==",
897
-
"dev": true,
898
-
"license": "Apache-2.0",
899
-
"dependencies": {
900
-
"@eslint/core": "^0.15.0",
901
-
"levn": "^0.4.1"
902
-
},
903
-
"engines": {
904
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
905
-
}
906
-
},
907
-
"node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
908
-
"version": "0.15.0",
909
-
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz",
910
-
"integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==",
911
-
"dev": true,
912
-
"license": "Apache-2.0",
913
-
"dependencies": {
914
-
"@types/json-schema": "^7.0.15"
915
-
},
916
-
"engines": {
917
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
918
-
}
919
-
},
920
-
"node_modules/@humanfs/core": {
921
-
"version": "0.19.1",
922
-
"resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
923
-
"integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
924
-
"dev": true,
925
-
"license": "Apache-2.0",
926
-
"engines": {
927
-
"node": ">=18.18.0"
928
-
}
929
-
},
930
-
"node_modules/@humanfs/node": {
931
-
"version": "0.16.6",
932
-
"resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
933
-
"integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
934
-
"dev": true,
935
-
"license": "Apache-2.0",
936
-
"dependencies": {
937
-
"@humanfs/core": "^0.19.1",
938
-
"@humanwhocodes/retry": "^0.3.0"
939
-
},
940
-
"engines": {
941
-
"node": ">=18.18.0"
942
-
}
943
-
},
944
-
"node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
945
-
"version": "0.3.1",
946
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
947
-
"integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
948
-
"dev": true,
949
-
"license": "Apache-2.0",
950
-
"engines": {
951
-
"node": ">=18.18"
952
-
},
953
-
"funding": {
954
-
"type": "github",
955
-
"url": "https://github.com/sponsors/nzakas"
956
-
}
957
-
},
958
-
"node_modules/@humanwhocodes/module-importer": {
959
-
"version": "1.0.1",
960
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
961
-
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
962
-
"dev": true,
963
-
"license": "Apache-2.0",
964
-
"engines": {
965
-
"node": ">=12.22"
966
-
},
967
-
"funding": {
968
-
"type": "github",
969
-
"url": "https://github.com/sponsors/nzakas"
970
-
}
971
-
},
972
-
"node_modules/@humanwhocodes/retry": {
973
-
"version": "0.4.3",
974
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
975
-
"integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
976
-
"dev": true,
977
-
"license": "Apache-2.0",
978
-
"engines": {
979
-
"node": ">=18.18"
980
-
},
981
-
"funding": {
982
-
"type": "github",
983
-
"url": "https://github.com/sponsors/nzakas"
984
-
}
985
-
},
986
-
"node_modules/@jridgewell/gen-mapping": {
987
-
"version": "0.3.8",
988
-
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
989
-
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
990
-
"dev": true,
991
-
"license": "MIT",
992
-
"dependencies": {
993
-
"@jridgewell/set-array": "^1.2.1",
994
-
"@jridgewell/sourcemap-codec": "^1.4.10",
995
-
"@jridgewell/trace-mapping": "^0.3.24"
996
-
},
997
-
"engines": {
998
-
"node": ">=6.0.0"
999
-
}
1000
-
},
1001
-
"node_modules/@jridgewell/resolve-uri": {
1002
-
"version": "3.1.2",
1003
-
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1004
-
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1005
-
"dev": true,
1006
-
"license": "MIT",
1007
-
"engines": {
1008
-
"node": ">=6.0.0"
1009
-
}
1010
-
},
1011
-
"node_modules/@jridgewell/set-array": {
1012
-
"version": "1.2.1",
1013
-
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
1014
-
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
1015
-
"dev": true,
1016
-
"license": "MIT",
1017
-
"engines": {
1018
-
"node": ">=6.0.0"
1019
-
}
1020
-
},
1021
-
"node_modules/@jridgewell/sourcemap-codec": {
1022
-
"version": "1.5.0",
1023
-
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
1024
-
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
1025
-
"dev": true,
1026
-
"license": "MIT"
1027
-
},
1028
-
"node_modules/@jridgewell/trace-mapping": {
1029
-
"version": "0.3.25",
1030
-
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
1031
-
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
1032
-
"dev": true,
1033
-
"license": "MIT",
1034
-
"dependencies": {
1035
-
"@jridgewell/resolve-uri": "^3.1.0",
1036
-
"@jridgewell/sourcemap-codec": "^1.4.14"
1037
-
}
1038
-
},
1039
-
"node_modules/@nodelib/fs.scandir": {
1040
-
"version": "2.1.5",
1041
-
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
1042
-
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
1043
-
"dev": true,
1044
-
"license": "MIT",
1045
-
"dependencies": {
1046
-
"@nodelib/fs.stat": "2.0.5",
1047
-
"run-parallel": "^1.1.9"
1048
-
},
1049
-
"engines": {
1050
-
"node": ">= 8"
1051
-
}
1052
-
},
1053
-
"node_modules/@nodelib/fs.stat": {
1054
-
"version": "2.0.5",
1055
-
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
1056
-
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
1057
-
"dev": true,
1058
-
"license": "MIT",
1059
-
"engines": {
1060
-
"node": ">= 8"
1061
-
}
1062
-
},
1063
-
"node_modules/@nodelib/fs.walk": {
1064
-
"version": "1.2.8",
1065
-
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
1066
-
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
1067
-
"dev": true,
1068
-
"license": "MIT",
1069
-
"dependencies": {
1070
-
"@nodelib/fs.scandir": "2.1.5",
1071
-
"fastq": "^1.6.0"
1072
-
},
1073
-
"engines": {
1074
-
"node": ">= 8"
1075
-
}
1076
-
},
1077
-
"node_modules/@rolldown/pluginutils": {
1078
-
"version": "1.0.0-beta.11",
1079
-
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz",
1080
-
"integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==",
1081
-
"dev": true,
1082
-
"license": "MIT"
1083
-
},
1084
-
"node_modules/@rollup/rollup-android-arm-eabi": {
1085
-
"version": "4.44.0",
1086
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.0.tgz",
1087
-
"integrity": "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==",
1088
-
"cpu": [
1089
-
"arm"
1090
-
],
1091
-
"dev": true,
1092
-
"license": "MIT",
1093
-
"optional": true,
1094
-
"os": [
1095
-
"android"
1096
-
]
1097
-
},
1098
-
"node_modules/@rollup/rollup-android-arm64": {
1099
-
"version": "4.44.0",
1100
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.0.tgz",
1101
-
"integrity": "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==",
1102
-
"cpu": [
1103
-
"arm64"
1104
-
],
1105
-
"dev": true,
1106
-
"license": "MIT",
1107
-
"optional": true,
1108
-
"os": [
1109
-
"android"
1110
-
]
1111
-
},
1112
-
"node_modules/@rollup/rollup-darwin-arm64": {
1113
-
"version": "4.44.0",
1114
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.0.tgz",
1115
-
"integrity": "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==",
1116
-
"cpu": [
1117
-
"arm64"
1118
-
],
1119
-
"dev": true,
1120
-
"license": "MIT",
1121
-
"optional": true,
1122
-
"os": [
1123
-
"darwin"
1124
-
]
1125
-
},
1126
-
"node_modules/@rollup/rollup-darwin-x64": {
1127
-
"version": "4.44.0",
1128
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.0.tgz",
1129
-
"integrity": "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==",
1130
-
"cpu": [
1131
-
"x64"
1132
-
],
1133
-
"dev": true,
1134
-
"license": "MIT",
1135
-
"optional": true,
1136
-
"os": [
1137
-
"darwin"
1138
-
]
1139
-
},
1140
-
"node_modules/@rollup/rollup-freebsd-arm64": {
1141
-
"version": "4.44.0",
1142
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.0.tgz",
1143
-
"integrity": "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==",
1144
-
"cpu": [
1145
-
"arm64"
1146
-
],
1147
-
"dev": true,
1148
-
"license": "MIT",
1149
-
"optional": true,
1150
-
"os": [
1151
-
"freebsd"
1152
-
]
1153
-
},
1154
-
"node_modules/@rollup/rollup-freebsd-x64": {
1155
-
"version": "4.44.0",
1156
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.0.tgz",
1157
-
"integrity": "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==",
1158
-
"cpu": [
1159
-
"x64"
1160
-
],
1161
-
"dev": true,
1162
-
"license": "MIT",
1163
-
"optional": true,
1164
-
"os": [
1165
-
"freebsd"
1166
-
]
1167
-
},
1168
-
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
1169
-
"version": "4.44.0",
1170
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.0.tgz",
1171
-
"integrity": "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==",
1172
-
"cpu": [
1173
-
"arm"
1174
-
],
1175
-
"dev": true,
1176
-
"license": "MIT",
1177
-
"optional": true,
1178
-
"os": [
1179
-
"linux"
1180
-
]
1181
-
},
1182
-
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
1183
-
"version": "4.44.0",
1184
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.0.tgz",
1185
-
"integrity": "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==",
1186
-
"cpu": [
1187
-
"arm"
1188
-
],
1189
-
"dev": true,
1190
-
"license": "MIT",
1191
-
"optional": true,
1192
-
"os": [
1193
-
"linux"
1194
-
]
1195
-
},
1196
-
"node_modules/@rollup/rollup-linux-arm64-gnu": {
1197
-
"version": "4.44.0",
1198
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.0.tgz",
1199
-
"integrity": "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==",
1200
-
"cpu": [
1201
-
"arm64"
1202
-
],
1203
-
"dev": true,
1204
-
"license": "MIT",
1205
-
"optional": true,
1206
-
"os": [
1207
-
"linux"
1208
-
]
1209
-
},
1210
-
"node_modules/@rollup/rollup-linux-arm64-musl": {
1211
-
"version": "4.44.0",
1212
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.0.tgz",
1213
-
"integrity": "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==",
1214
-
"cpu": [
1215
-
"arm64"
1216
-
],
1217
-
"dev": true,
1218
-
"license": "MIT",
1219
-
"optional": true,
1220
-
"os": [
1221
-
"linux"
1222
-
]
1223
-
},
1224
-
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
1225
-
"version": "4.44.0",
1226
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.0.tgz",
1227
-
"integrity": "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==",
1228
-
"cpu": [
1229
-
"loong64"
1230
-
],
1231
-
"dev": true,
1232
-
"license": "MIT",
1233
-
"optional": true,
1234
-
"os": [
1235
-
"linux"
1236
-
]
1237
-
},
1238
-
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
1239
-
"version": "4.44.0",
1240
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.0.tgz",
1241
-
"integrity": "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==",
1242
-
"cpu": [
1243
-
"ppc64"
1244
-
],
1245
-
"dev": true,
1246
-
"license": "MIT",
1247
-
"optional": true,
1248
-
"os": [
1249
-
"linux"
1250
-
]
1251
-
},
1252
-
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
1253
-
"version": "4.44.0",
1254
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.0.tgz",
1255
-
"integrity": "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==",
1256
-
"cpu": [
1257
-
"riscv64"
1258
-
],
1259
-
"dev": true,
1260
-
"license": "MIT",
1261
-
"optional": true,
1262
-
"os": [
1263
-
"linux"
1264
-
]
1265
-
},
1266
-
"node_modules/@rollup/rollup-linux-riscv64-musl": {
1267
-
"version": "4.44.0",
1268
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.0.tgz",
1269
-
"integrity": "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==",
1270
-
"cpu": [
1271
-
"riscv64"
1272
-
],
1273
-
"dev": true,
1274
-
"license": "MIT",
1275
-
"optional": true,
1276
-
"os": [
1277
-
"linux"
1278
-
]
1279
-
},
1280
-
"node_modules/@rollup/rollup-linux-s390x-gnu": {
1281
-
"version": "4.44.0",
1282
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.0.tgz",
1283
-
"integrity": "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==",
1284
-
"cpu": [
1285
-
"s390x"
1286
-
],
1287
-
"dev": true,
1288
-
"license": "MIT",
1289
-
"optional": true,
1290
-
"os": [
1291
-
"linux"
1292
-
]
1293
-
},
1294
-
"node_modules/@rollup/rollup-linux-x64-gnu": {
1295
-
"version": "4.44.0",
1296
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.0.tgz",
1297
-
"integrity": "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==",
1298
-
"cpu": [
1299
-
"x64"
1300
-
],
1301
-
"dev": true,
1302
-
"license": "MIT",
1303
-
"optional": true,
1304
-
"os": [
1305
-
"linux"
1306
-
]
1307
-
},
1308
-
"node_modules/@rollup/rollup-linux-x64-musl": {
1309
-
"version": "4.44.0",
1310
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.0.tgz",
1311
-
"integrity": "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==",
1312
-
"cpu": [
1313
-
"x64"
1314
-
],
1315
-
"dev": true,
1316
-
"license": "MIT",
1317
-
"optional": true,
1318
-
"os": [
1319
-
"linux"
1320
-
]
1321
-
},
1322
-
"node_modules/@rollup/rollup-win32-arm64-msvc": {
1323
-
"version": "4.44.0",
1324
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.0.tgz",
1325
-
"integrity": "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==",
1326
-
"cpu": [
1327
-
"arm64"
1328
-
],
1329
-
"dev": true,
1330
-
"license": "MIT",
1331
-
"optional": true,
1332
-
"os": [
1333
-
"win32"
1334
-
]
1335
-
},
1336
-
"node_modules/@rollup/rollup-win32-ia32-msvc": {
1337
-
"version": "4.44.0",
1338
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.0.tgz",
1339
-
"integrity": "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==",
1340
-
"cpu": [
1341
-
"ia32"
1342
-
],
1343
-
"dev": true,
1344
-
"license": "MIT",
1345
-
"optional": true,
1346
-
"os": [
1347
-
"win32"
1348
-
]
1349
-
},
1350
-
"node_modules/@rollup/rollup-win32-x64-msvc": {
1351
-
"version": "4.44.0",
1352
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.0.tgz",
1353
-
"integrity": "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==",
1354
-
"cpu": [
1355
-
"x64"
1356
-
],
1357
-
"dev": true,
1358
-
"license": "MIT",
1359
-
"optional": true,
1360
-
"os": [
1361
-
"win32"
1362
-
]
1363
-
},
1364
-
"node_modules/@tanstack/query-core": {
1365
-
"version": "5.80.10",
1366
-
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.80.10.tgz",
1367
-
"integrity": "sha512-mUNQOtzxkjL6jLbyChZoSBP6A5gQDVRUiPvW+/zw/9ftOAz+H754zCj3D8PwnzPKyHzGkQ9JbH48ukhym9LK1Q==",
1368
-
"license": "MIT",
1369
-
"funding": {
1370
-
"type": "github",
1371
-
"url": "https://github.com/sponsors/tannerlinsley"
1372
-
}
1373
-
},
1374
-
"node_modules/@tanstack/query-devtools": {
1375
-
"version": "5.80.0",
1376
-
"resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.80.0.tgz",
1377
-
"integrity": "sha512-D6gH4asyjaoXrCOt5vG5Og/YSj0D/TxwNQgtLJIgWbhbWCC/emu2E92EFoVHh4ppVWg1qT2gKHvKyQBEFZhCuA==",
1378
-
"license": "MIT",
1379
-
"funding": {
1380
-
"type": "github",
1381
-
"url": "https://github.com/sponsors/tannerlinsley"
1382
-
}
1383
-
},
1384
-
"node_modules/@tanstack/react-query": {
1385
-
"version": "5.80.10",
1386
-
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.80.10.tgz",
1387
-
"integrity": "sha512-6zM098J8sLy9oU60XAdzUlAH4wVzoMVsWUWiiE/Iz4fd67PplxeyL4sw/MPcVJJVhbwGGXCsHn9GrQt2mlAzig==",
1388
-
"license": "MIT",
1389
-
"dependencies": {
1390
-
"@tanstack/query-core": "5.80.10"
1391
-
},
1392
-
"funding": {
1393
-
"type": "github",
1394
-
"url": "https://github.com/sponsors/tannerlinsley"
1395
-
},
1396
-
"peerDependencies": {
1397
-
"react": "^18 || ^19"
1398
-
}
1399
-
},
1400
-
"node_modules/@tanstack/react-query-devtools": {
1401
-
"version": "5.80.10",
1402
-
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.80.10.tgz",
1403
-
"integrity": "sha512-6JL63fSc7kxyGOLV2w466SxhMn/m7LZk/ximQciy6OpVt+n2A8Mq3S0QwhIzfm4WEwLK/F3OELfzRToQburnYA==",
1404
-
"license": "MIT",
1405
-
"dependencies": {
1406
-
"@tanstack/query-devtools": "5.80.0"
1407
-
},
1408
-
"funding": {
1409
-
"type": "github",
1410
-
"url": "https://github.com/sponsors/tannerlinsley"
1411
-
},
1412
-
"peerDependencies": {
1413
-
"@tanstack/react-query": "^5.80.10",
1414
-
"react": "^18 || ^19"
1415
-
}
1416
-
},
1417
-
"node_modules/@types/babel__core": {
1418
-
"version": "7.20.5",
1419
-
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
1420
-
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1421
-
"dev": true,
1422
-
"license": "MIT",
1423
-
"dependencies": {
1424
-
"@babel/parser": "^7.20.7",
1425
-
"@babel/types": "^7.20.7",
1426
-
"@types/babel__generator": "*",
1427
-
"@types/babel__template": "*",
1428
-
"@types/babel__traverse": "*"
1429
-
}
1430
-
},
1431
-
"node_modules/@types/babel__generator": {
1432
-
"version": "7.27.0",
1433
-
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
1434
-
"integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
1435
-
"dev": true,
1436
-
"license": "MIT",
1437
-
"dependencies": {
1438
-
"@babel/types": "^7.0.0"
1439
-
}
1440
-
},
1441
-
"node_modules/@types/babel__template": {
1442
-
"version": "7.4.4",
1443
-
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
1444
-
"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1445
-
"dev": true,
1446
-
"license": "MIT",
1447
-
"dependencies": {
1448
-
"@babel/parser": "^7.1.0",
1449
-
"@babel/types": "^7.0.0"
1450
-
}
1451
-
},
1452
-
"node_modules/@types/babel__traverse": {
1453
-
"version": "7.20.7",
1454
-
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
1455
-
"integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
1456
-
"dev": true,
1457
-
"license": "MIT",
1458
-
"dependencies": {
1459
-
"@babel/types": "^7.20.7"
1460
-
}
1461
-
},
1462
-
"node_modules/@types/estree": {
1463
-
"version": "1.0.8",
1464
-
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
1465
-
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
1466
-
"dev": true,
1467
-
"license": "MIT"
1468
-
},
1469
-
"node_modules/@types/json-schema": {
1470
-
"version": "7.0.15",
1471
-
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
1472
-
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
1473
-
"dev": true,
1474
-
"license": "MIT"
1475
-
},
1476
-
"node_modules/@types/react": {
1477
-
"version": "19.1.8",
1478
-
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
1479
-
"integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
1480
-
"dev": true,
1481
-
"license": "MIT",
1482
-
"dependencies": {
1483
-
"csstype": "^3.0.2"
1484
-
}
1485
-
},
1486
-
"node_modules/@types/react-dom": {
1487
-
"version": "19.1.6",
1488
-
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz",
1489
-
"integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==",
1490
-
"dev": true,
1491
-
"license": "MIT",
1492
-
"peerDependencies": {
1493
-
"@types/react": "^19.0.0"
1494
-
}
1495
-
},
1496
-
"node_modules/@typescript-eslint/eslint-plugin": {
1497
-
"version": "8.34.1",
1498
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz",
1499
-
"integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==",
1500
-
"dev": true,
1501
-
"license": "MIT",
1502
-
"dependencies": {
1503
-
"@eslint-community/regexpp": "^4.10.0",
1504
-
"@typescript-eslint/scope-manager": "8.34.1",
1505
-
"@typescript-eslint/type-utils": "8.34.1",
1506
-
"@typescript-eslint/utils": "8.34.1",
1507
-
"@typescript-eslint/visitor-keys": "8.34.1",
1508
-
"graphemer": "^1.4.0",
1509
-
"ignore": "^7.0.0",
1510
-
"natural-compare": "^1.4.0",
1511
-
"ts-api-utils": "^2.1.0"
1512
-
},
1513
-
"engines": {
1514
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1515
-
},
1516
-
"funding": {
1517
-
"type": "opencollective",
1518
-
"url": "https://opencollective.com/typescript-eslint"
1519
-
},
1520
-
"peerDependencies": {
1521
-
"@typescript-eslint/parser": "^8.34.1",
1522
-
"eslint": "^8.57.0 || ^9.0.0",
1523
-
"typescript": ">=4.8.4 <5.9.0"
1524
-
}
1525
-
},
1526
-
"node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
1527
-
"version": "7.0.5",
1528
-
"resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
1529
-
"integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
1530
-
"dev": true,
1531
-
"license": "MIT",
1532
-
"engines": {
1533
-
"node": ">= 4"
1534
-
}
1535
-
},
1536
-
"node_modules/@typescript-eslint/parser": {
1537
-
"version": "8.34.1",
1538
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz",
1539
-
"integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==",
1540
-
"dev": true,
1541
-
"license": "MIT",
1542
-
"dependencies": {
1543
-
"@typescript-eslint/scope-manager": "8.34.1",
1544
-
"@typescript-eslint/types": "8.34.1",
1545
-
"@typescript-eslint/typescript-estree": "8.34.1",
1546
-
"@typescript-eslint/visitor-keys": "8.34.1",
1547
-
"debug": "^4.3.4"
1548
-
},
1549
-
"engines": {
1550
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1551
-
},
1552
-
"funding": {
1553
-
"type": "opencollective",
1554
-
"url": "https://opencollective.com/typescript-eslint"
1555
-
},
1556
-
"peerDependencies": {
1557
-
"eslint": "^8.57.0 || ^9.0.0",
1558
-
"typescript": ">=4.8.4 <5.9.0"
1559
-
}
1560
-
},
1561
-
"node_modules/@typescript-eslint/project-service": {
1562
-
"version": "8.34.1",
1563
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz",
1564
-
"integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==",
1565
-
"dev": true,
1566
-
"license": "MIT",
1567
-
"dependencies": {
1568
-
"@typescript-eslint/tsconfig-utils": "^8.34.1",
1569
-
"@typescript-eslint/types": "^8.34.1",
1570
-
"debug": "^4.3.4"
1571
-
},
1572
-
"engines": {
1573
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1574
-
},
1575
-
"funding": {
1576
-
"type": "opencollective",
1577
-
"url": "https://opencollective.com/typescript-eslint"
1578
-
},
1579
-
"peerDependencies": {
1580
-
"typescript": ">=4.8.4 <5.9.0"
1581
-
}
1582
-
},
1583
-
"node_modules/@typescript-eslint/scope-manager": {
1584
-
"version": "8.34.1",
1585
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz",
1586
-
"integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==",
1587
-
"dev": true,
1588
-
"license": "MIT",
1589
-
"dependencies": {
1590
-
"@typescript-eslint/types": "8.34.1",
1591
-
"@typescript-eslint/visitor-keys": "8.34.1"
1592
-
},
1593
-
"engines": {
1594
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1595
-
},
1596
-
"funding": {
1597
-
"type": "opencollective",
1598
-
"url": "https://opencollective.com/typescript-eslint"
1599
-
}
1600
-
},
1601
-
"node_modules/@typescript-eslint/tsconfig-utils": {
1602
-
"version": "8.34.1",
1603
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz",
1604
-
"integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==",
1605
-
"dev": true,
1606
-
"license": "MIT",
1607
-
"engines": {
1608
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1609
-
},
1610
-
"funding": {
1611
-
"type": "opencollective",
1612
-
"url": "https://opencollective.com/typescript-eslint"
1613
-
},
1614
-
"peerDependencies": {
1615
-
"typescript": ">=4.8.4 <5.9.0"
1616
-
}
1617
-
},
1618
-
"node_modules/@typescript-eslint/type-utils": {
1619
-
"version": "8.34.1",
1620
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz",
1621
-
"integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==",
1622
-
"dev": true,
1623
-
"license": "MIT",
1624
-
"dependencies": {
1625
-
"@typescript-eslint/typescript-estree": "8.34.1",
1626
-
"@typescript-eslint/utils": "8.34.1",
1627
-
"debug": "^4.3.4",
1628
-
"ts-api-utils": "^2.1.0"
1629
-
},
1630
-
"engines": {
1631
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1632
-
},
1633
-
"funding": {
1634
-
"type": "opencollective",
1635
-
"url": "https://opencollective.com/typescript-eslint"
1636
-
},
1637
-
"peerDependencies": {
1638
-
"eslint": "^8.57.0 || ^9.0.0",
1639
-
"typescript": ">=4.8.4 <5.9.0"
1640
-
}
1641
-
},
1642
-
"node_modules/@typescript-eslint/types": {
1643
-
"version": "8.34.1",
1644
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz",
1645
-
"integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==",
1646
-
"dev": true,
1647
-
"license": "MIT",
1648
-
"engines": {
1649
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1650
-
},
1651
-
"funding": {
1652
-
"type": "opencollective",
1653
-
"url": "https://opencollective.com/typescript-eslint"
1654
-
}
1655
-
},
1656
-
"node_modules/@typescript-eslint/typescript-estree": {
1657
-
"version": "8.34.1",
1658
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz",
1659
-
"integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==",
1660
-
"dev": true,
1661
-
"license": "MIT",
1662
-
"dependencies": {
1663
-
"@typescript-eslint/project-service": "8.34.1",
1664
-
"@typescript-eslint/tsconfig-utils": "8.34.1",
1665
-
"@typescript-eslint/types": "8.34.1",
1666
-
"@typescript-eslint/visitor-keys": "8.34.1",
1667
-
"debug": "^4.3.4",
1668
-
"fast-glob": "^3.3.2",
1669
-
"is-glob": "^4.0.3",
1670
-
"minimatch": "^9.0.4",
1671
-
"semver": "^7.6.0",
1672
-
"ts-api-utils": "^2.1.0"
1673
-
},
1674
-
"engines": {
1675
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1676
-
},
1677
-
"funding": {
1678
-
"type": "opencollective",
1679
-
"url": "https://opencollective.com/typescript-eslint"
1680
-
},
1681
-
"peerDependencies": {
1682
-
"typescript": ">=4.8.4 <5.9.0"
1683
-
}
1684
-
},
1685
-
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
1686
-
"version": "2.0.2",
1687
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1688
-
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1689
-
"dev": true,
1690
-
"license": "MIT",
1691
-
"dependencies": {
1692
-
"balanced-match": "^1.0.0"
1693
-
}
1694
-
},
1695
-
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
1696
-
"version": "9.0.5",
1697
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1698
-
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1699
-
"dev": true,
1700
-
"license": "ISC",
1701
-
"dependencies": {
1702
-
"brace-expansion": "^2.0.1"
1703
-
},
1704
-
"engines": {
1705
-
"node": ">=16 || 14 >=14.17"
1706
-
},
1707
-
"funding": {
1708
-
"url": "https://github.com/sponsors/isaacs"
1709
-
}
1710
-
},
1711
-
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
1712
-
"version": "7.7.2",
1713
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
1714
-
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
1715
-
"dev": true,
1716
-
"license": "ISC",
1717
-
"bin": {
1718
-
"semver": "bin/semver.js"
1719
-
},
1720
-
"engines": {
1721
-
"node": ">=10"
1722
-
}
1723
-
},
1724
-
"node_modules/@typescript-eslint/utils": {
1725
-
"version": "8.34.1",
1726
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz",
1727
-
"integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==",
1728
-
"dev": true,
1729
-
"license": "MIT",
1730
-
"dependencies": {
1731
-
"@eslint-community/eslint-utils": "^4.7.0",
1732
-
"@typescript-eslint/scope-manager": "8.34.1",
1733
-
"@typescript-eslint/types": "8.34.1",
1734
-
"@typescript-eslint/typescript-estree": "8.34.1"
1735
-
},
1736
-
"engines": {
1737
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1738
-
},
1739
-
"funding": {
1740
-
"type": "opencollective",
1741
-
"url": "https://opencollective.com/typescript-eslint"
1742
-
},
1743
-
"peerDependencies": {
1744
-
"eslint": "^8.57.0 || ^9.0.0",
1745
-
"typescript": ">=4.8.4 <5.9.0"
1746
-
}
1747
-
},
1748
-
"node_modules/@typescript-eslint/visitor-keys": {
1749
-
"version": "8.34.1",
1750
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz",
1751
-
"integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==",
1752
-
"dev": true,
1753
-
"license": "MIT",
1754
-
"dependencies": {
1755
-
"@typescript-eslint/types": "8.34.1",
1756
-
"eslint-visitor-keys": "^4.2.1"
1757
-
},
1758
-
"engines": {
1759
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1760
-
},
1761
-
"funding": {
1762
-
"type": "opencollective",
1763
-
"url": "https://opencollective.com/typescript-eslint"
1764
-
}
1765
-
},
1766
-
"node_modules/@vitejs/plugin-react": {
1767
-
"version": "4.5.2",
1768
-
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.2.tgz",
1769
-
"integrity": "sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==",
1770
-
"dev": true,
1771
-
"license": "MIT",
1772
-
"dependencies": {
1773
-
"@babel/core": "^7.27.4",
1774
-
"@babel/plugin-transform-react-jsx-self": "^7.27.1",
1775
-
"@babel/plugin-transform-react-jsx-source": "^7.27.1",
1776
-
"@rolldown/pluginutils": "1.0.0-beta.11",
1777
-
"@types/babel__core": "^7.20.5",
1778
-
"react-refresh": "^0.17.0"
1779
-
},
1780
-
"engines": {
1781
-
"node": "^14.18.0 || >=16.0.0"
1782
-
},
1783
-
"peerDependencies": {
1784
-
"vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
1785
-
}
1786
-
},
1787
-
"node_modules/acorn": {
1788
-
"version": "8.15.0",
1789
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
1790
-
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
1791
-
"dev": true,
1792
-
"license": "MIT",
1793
-
"bin": {
1794
-
"acorn": "bin/acorn"
1795
-
},
1796
-
"engines": {
1797
-
"node": ">=0.4.0"
1798
-
}
1799
-
},
1800
-
"node_modules/acorn-jsx": {
1801
-
"version": "5.3.2",
1802
-
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1803
-
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1804
-
"dev": true,
1805
-
"license": "MIT",
1806
-
"peerDependencies": {
1807
-
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
1808
-
}
1809
-
},
1810
-
"node_modules/ajv": {
1811
-
"version": "6.12.6",
1812
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1813
-
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1814
-
"dev": true,
1815
-
"license": "MIT",
1816
-
"dependencies": {
1817
-
"fast-deep-equal": "^3.1.1",
1818
-
"fast-json-stable-stringify": "^2.0.0",
1819
-
"json-schema-traverse": "^0.4.1",
1820
-
"uri-js": "^4.2.2"
1821
-
},
1822
-
"funding": {
1823
-
"type": "github",
1824
-
"url": "https://github.com/sponsors/epoberezkin"
1825
-
}
1826
-
},
1827
-
"node_modules/ansi-styles": {
1828
-
"version": "4.3.0",
1829
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1830
-
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1831
-
"dev": true,
1832
-
"license": "MIT",
1833
-
"dependencies": {
1834
-
"color-convert": "^2.0.1"
1835
-
},
1836
-
"engines": {
1837
-
"node": ">=8"
1838
-
},
1839
-
"funding": {
1840
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
1841
-
}
1842
-
},
1843
-
"node_modules/argparse": {
1844
-
"version": "2.0.1",
1845
-
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1846
-
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1847
-
"dev": true,
1848
-
"license": "Python-2.0"
1849
-
},
1850
-
"node_modules/asynckit": {
1851
-
"version": "0.4.0",
1852
-
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
1853
-
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
1854
-
"license": "MIT"
1855
-
},
1856
-
"node_modules/axios": {
1857
-
"version": "1.10.0",
1858
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
1859
-
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
1860
-
"license": "MIT",
1861
-
"dependencies": {
1862
-
"follow-redirects": "^1.15.6",
1863
-
"form-data": "^4.0.0",
1864
-
"proxy-from-env": "^1.1.0"
1865
-
}
1866
-
},
1867
-
"node_modules/balanced-match": {
1868
-
"version": "1.0.2",
1869
-
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1870
-
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1871
-
"dev": true,
1872
-
"license": "MIT"
1873
-
},
1874
-
"node_modules/brace-expansion": {
1875
-
"version": "1.1.12",
1876
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
1877
-
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
1878
-
"dev": true,
1879
-
"license": "MIT",
1880
-
"dependencies": {
1881
-
"balanced-match": "^1.0.0",
1882
-
"concat-map": "0.0.1"
1883
-
}
1884
-
},
1885
-
"node_modules/braces": {
1886
-
"version": "3.0.3",
1887
-
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1888
-
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1889
-
"dev": true,
1890
-
"license": "MIT",
1891
-
"dependencies": {
1892
-
"fill-range": "^7.1.1"
1893
-
},
1894
-
"engines": {
1895
-
"node": ">=8"
1896
-
}
1897
-
},
1898
-
"node_modules/browserslist": {
1899
-
"version": "4.25.0",
1900
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
1901
-
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
1902
-
"dev": true,
1903
-
"funding": [
1904
-
{
1905
-
"type": "opencollective",
1906
-
"url": "https://opencollective.com/browserslist"
1907
-
},
1908
-
{
1909
-
"type": "tidelift",
1910
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
1911
-
},
1912
-
{
1913
-
"type": "github",
1914
-
"url": "https://github.com/sponsors/ai"
1915
-
}
1916
-
],
1917
-
"license": "MIT",
1918
-
"dependencies": {
1919
-
"caniuse-lite": "^1.0.30001718",
1920
-
"electron-to-chromium": "^1.5.160",
1921
-
"node-releases": "^2.0.19",
1922
-
"update-browserslist-db": "^1.1.3"
1923
-
},
1924
-
"bin": {
1925
-
"browserslist": "cli.js"
1926
-
},
1927
-
"engines": {
1928
-
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1929
-
}
1930
-
},
1931
-
"node_modules/call-bind-apply-helpers": {
1932
-
"version": "1.0.2",
1933
-
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1934
-
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1935
-
"license": "MIT",
1936
-
"dependencies": {
1937
-
"es-errors": "^1.3.0",
1938
-
"function-bind": "^1.1.2"
1939
-
},
1940
-
"engines": {
1941
-
"node": ">= 0.4"
1942
-
}
1943
-
},
1944
-
"node_modules/callsites": {
1945
-
"version": "3.1.0",
1946
-
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1947
-
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1948
-
"dev": true,
1949
-
"license": "MIT",
1950
-
"engines": {
1951
-
"node": ">=6"
1952
-
}
1953
-
},
1954
-
"node_modules/caniuse-lite": {
1955
-
"version": "1.0.30001723",
1956
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz",
1957
-
"integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==",
1958
-
"dev": true,
1959
-
"funding": [
1960
-
{
1961
-
"type": "opencollective",
1962
-
"url": "https://opencollective.com/browserslist"
1963
-
},
1964
-
{
1965
-
"type": "tidelift",
1966
-
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1967
-
},
1968
-
{
1969
-
"type": "github",
1970
-
"url": "https://github.com/sponsors/ai"
1971
-
}
1972
-
],
1973
-
"license": "CC-BY-4.0"
1974
-
},
1975
-
"node_modules/chalk": {
1976
-
"version": "4.1.2",
1977
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1978
-
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1979
-
"dev": true,
1980
-
"license": "MIT",
1981
-
"dependencies": {
1982
-
"ansi-styles": "^4.1.0",
1983
-
"supports-color": "^7.1.0"
1984
-
},
1985
-
"engines": {
1986
-
"node": ">=10"
1987
-
},
1988
-
"funding": {
1989
-
"url": "https://github.com/chalk/chalk?sponsor=1"
1990
-
}
1991
-
},
1992
-
"node_modules/color-convert": {
1993
-
"version": "2.0.1",
1994
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1995
-
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1996
-
"dev": true,
1997
-
"license": "MIT",
1998
-
"dependencies": {
1999
-
"color-name": "~1.1.4"
2000
-
},
2001
-
"engines": {
2002
-
"node": ">=7.0.0"
2003
-
}
2004
-
},
2005
-
"node_modules/color-name": {
2006
-
"version": "1.1.4",
2007
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2008
-
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2009
-
"dev": true,
2010
-
"license": "MIT"
2011
-
},
2012
-
"node_modules/combined-stream": {
2013
-
"version": "1.0.8",
2014
-
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
2015
-
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
2016
-
"license": "MIT",
2017
-
"dependencies": {
2018
-
"delayed-stream": "~1.0.0"
2019
-
},
2020
-
"engines": {
2021
-
"node": ">= 0.8"
2022
-
}
2023
-
},
2024
-
"node_modules/concat-map": {
2025
-
"version": "0.0.1",
2026
-
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2027
-
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
2028
-
"dev": true,
2029
-
"license": "MIT"
2030
-
},
2031
-
"node_modules/convert-source-map": {
2032
-
"version": "2.0.0",
2033
-
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
2034
-
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
2035
-
"dev": true,
2036
-
"license": "MIT"
2037
-
},
2038
-
"node_modules/cookie": {
2039
-
"version": "1.0.2",
2040
-
"resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
2041
-
"integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
2042
-
"license": "MIT",
2043
-
"engines": {
2044
-
"node": ">=18"
2045
-
}
2046
-
},
2047
-
"node_modules/cross-spawn": {
2048
-
"version": "7.0.6",
2049
-
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
2050
-
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
2051
-
"dev": true,
2052
-
"license": "MIT",
2053
-
"dependencies": {
2054
-
"path-key": "^3.1.0",
2055
-
"shebang-command": "^2.0.0",
2056
-
"which": "^2.0.1"
2057
-
},
2058
-
"engines": {
2059
-
"node": ">= 8"
2060
-
}
2061
-
},
2062
-
"node_modules/csstype": {
2063
-
"version": "3.1.3",
2064
-
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
2065
-
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
2066
-
"dev": true,
2067
-
"license": "MIT"
2068
-
},
2069
-
"node_modules/debug": {
2070
-
"version": "4.4.1",
2071
-
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
2072
-
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
2073
-
"dev": true,
2074
-
"license": "MIT",
2075
-
"dependencies": {
2076
-
"ms": "^2.1.3"
2077
-
},
2078
-
"engines": {
2079
-
"node": ">=6.0"
2080
-
},
2081
-
"peerDependenciesMeta": {
2082
-
"supports-color": {
2083
-
"optional": true
2084
-
}
2085
-
}
2086
-
},
2087
-
"node_modules/deep-is": {
2088
-
"version": "0.1.4",
2089
-
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
2090
-
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
2091
-
"dev": true,
2092
-
"license": "MIT"
2093
-
},
2094
-
"node_modules/delayed-stream": {
2095
-
"version": "1.0.0",
2096
-
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2097
-
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
2098
-
"license": "MIT",
2099
-
"engines": {
2100
-
"node": ">=0.4.0"
2101
-
}
2102
-
},
2103
-
"node_modules/dunder-proto": {
2104
-
"version": "1.0.1",
2105
-
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
2106
-
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
2107
-
"license": "MIT",
2108
-
"dependencies": {
2109
-
"call-bind-apply-helpers": "^1.0.1",
2110
-
"es-errors": "^1.3.0",
2111
-
"gopd": "^1.2.0"
2112
-
},
2113
-
"engines": {
2114
-
"node": ">= 0.4"
2115
-
}
2116
-
},
2117
-
"node_modules/electron-to-chromium": {
2118
-
"version": "1.5.170",
2119
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.170.tgz",
2120
-
"integrity": "sha512-GP+M7aeluQo9uAyiTCxgIj/j+PrWhMlY7LFVj8prlsPljd0Fdg9AprlfUi+OCSFWy9Y5/2D/Jrj9HS8Z4rpKWA==",
2121
-
"dev": true,
2122
-
"license": "ISC"
2123
-
},
2124
-
"node_modules/es-define-property": {
2125
-
"version": "1.0.1",
2126
-
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
2127
-
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
2128
-
"license": "MIT",
2129
-
"engines": {
2130
-
"node": ">= 0.4"
2131
-
}
2132
-
},
2133
-
"node_modules/es-errors": {
2134
-
"version": "1.3.0",
2135
-
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
2136
-
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
2137
-
"license": "MIT",
2138
-
"engines": {
2139
-
"node": ">= 0.4"
2140
-
}
2141
-
},
2142
-
"node_modules/es-object-atoms": {
2143
-
"version": "1.1.1",
2144
-
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
2145
-
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
2146
-
"license": "MIT",
2147
-
"dependencies": {
2148
-
"es-errors": "^1.3.0"
2149
-
},
2150
-
"engines": {
2151
-
"node": ">= 0.4"
2152
-
}
2153
-
},
2154
-
"node_modules/es-set-tostringtag": {
2155
-
"version": "2.1.0",
2156
-
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
2157
-
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
2158
-
"license": "MIT",
2159
-
"dependencies": {
2160
-
"es-errors": "^1.3.0",
2161
-
"get-intrinsic": "^1.2.6",
2162
-
"has-tostringtag": "^1.0.2",
2163
-
"hasown": "^2.0.2"
2164
-
},
2165
-
"engines": {
2166
-
"node": ">= 0.4"
2167
-
}
2168
-
},
2169
-
"node_modules/esbuild": {
2170
-
"version": "0.25.5",
2171
-
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
2172
-
"integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
2173
-
"dev": true,
2174
-
"hasInstallScript": true,
2175
-
"license": "MIT",
2176
-
"bin": {
2177
-
"esbuild": "bin/esbuild"
2178
-
},
2179
-
"engines": {
2180
-
"node": ">=18"
2181
-
},
2182
-
"optionalDependencies": {
2183
-
"@esbuild/aix-ppc64": "0.25.5",
2184
-
"@esbuild/android-arm": "0.25.5",
2185
-
"@esbuild/android-arm64": "0.25.5",
2186
-
"@esbuild/android-x64": "0.25.5",
2187
-
"@esbuild/darwin-arm64": "0.25.5",
2188
-
"@esbuild/darwin-x64": "0.25.5",
2189
-
"@esbuild/freebsd-arm64": "0.25.5",
2190
-
"@esbuild/freebsd-x64": "0.25.5",
2191
-
"@esbuild/linux-arm": "0.25.5",
2192
-
"@esbuild/linux-arm64": "0.25.5",
2193
-
"@esbuild/linux-ia32": "0.25.5",
2194
-
"@esbuild/linux-loong64": "0.25.5",
2195
-
"@esbuild/linux-mips64el": "0.25.5",
2196
-
"@esbuild/linux-ppc64": "0.25.5",
2197
-
"@esbuild/linux-riscv64": "0.25.5",
2198
-
"@esbuild/linux-s390x": "0.25.5",
2199
-
"@esbuild/linux-x64": "0.25.5",
2200
-
"@esbuild/netbsd-arm64": "0.25.5",
2201
-
"@esbuild/netbsd-x64": "0.25.5",
2202
-
"@esbuild/openbsd-arm64": "0.25.5",
2203
-
"@esbuild/openbsd-x64": "0.25.5",
2204
-
"@esbuild/sunos-x64": "0.25.5",
2205
-
"@esbuild/win32-arm64": "0.25.5",
2206
-
"@esbuild/win32-ia32": "0.25.5",
2207
-
"@esbuild/win32-x64": "0.25.5"
2208
-
}
2209
-
},
2210
-
"node_modules/escalade": {
2211
-
"version": "3.2.0",
2212
-
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
2213
-
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
2214
-
"dev": true,
2215
-
"license": "MIT",
2216
-
"engines": {
2217
-
"node": ">=6"
2218
-
}
2219
-
},
2220
-
"node_modules/escape-string-regexp": {
2221
-
"version": "4.0.0",
2222
-
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
2223
-
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
2224
-
"dev": true,
2225
-
"license": "MIT",
2226
-
"engines": {
2227
-
"node": ">=10"
2228
-
},
2229
-
"funding": {
2230
-
"url": "https://github.com/sponsors/sindresorhus"
2231
-
}
2232
-
},
2233
-
"node_modules/eslint": {
2234
-
"version": "9.29.0",
2235
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz",
2236
-
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
2237
-
"dev": true,
2238
-
"license": "MIT",
2239
-
"dependencies": {
2240
-
"@eslint-community/eslint-utils": "^4.2.0",
2241
-
"@eslint-community/regexpp": "^4.12.1",
2242
-
"@eslint/config-array": "^0.20.1",
2243
-
"@eslint/config-helpers": "^0.2.1",
2244
-
"@eslint/core": "^0.14.0",
2245
-
"@eslint/eslintrc": "^3.3.1",
2246
-
"@eslint/js": "9.29.0",
2247
-
"@eslint/plugin-kit": "^0.3.1",
2248
-
"@humanfs/node": "^0.16.6",
2249
-
"@humanwhocodes/module-importer": "^1.0.1",
2250
-
"@humanwhocodes/retry": "^0.4.2",
2251
-
"@types/estree": "^1.0.6",
2252
-
"@types/json-schema": "^7.0.15",
2253
-
"ajv": "^6.12.4",
2254
-
"chalk": "^4.0.0",
2255
-
"cross-spawn": "^7.0.6",
2256
-
"debug": "^4.3.2",
2257
-
"escape-string-regexp": "^4.0.0",
2258
-
"eslint-scope": "^8.4.0",
2259
-
"eslint-visitor-keys": "^4.2.1",
2260
-
"espree": "^10.4.0",
2261
-
"esquery": "^1.5.0",
2262
-
"esutils": "^2.0.2",
2263
-
"fast-deep-equal": "^3.1.3",
2264
-
"file-entry-cache": "^8.0.0",
2265
-
"find-up": "^5.0.0",
2266
-
"glob-parent": "^6.0.2",
2267
-
"ignore": "^5.2.0",
2268
-
"imurmurhash": "^0.1.4",
2269
-
"is-glob": "^4.0.0",
2270
-
"json-stable-stringify-without-jsonify": "^1.0.1",
2271
-
"lodash.merge": "^4.6.2",
2272
-
"minimatch": "^3.1.2",
2273
-
"natural-compare": "^1.4.0",
2274
-
"optionator": "^0.9.3"
2275
-
},
2276
-
"bin": {
2277
-
"eslint": "bin/eslint.js"
2278
-
},
2279
-
"engines": {
2280
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2281
-
},
2282
-
"funding": {
2283
-
"url": "https://eslint.org/donate"
2284
-
},
2285
-
"peerDependencies": {
2286
-
"jiti": "*"
2287
-
},
2288
-
"peerDependenciesMeta": {
2289
-
"jiti": {
2290
-
"optional": true
2291
-
}
2292
-
}
2293
-
},
2294
-
"node_modules/eslint-plugin-react-hooks": {
2295
-
"version": "5.2.0",
2296
-
"resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
2297
-
"integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
2298
-
"dev": true,
2299
-
"license": "MIT",
2300
-
"engines": {
2301
-
"node": ">=10"
2302
-
},
2303
-
"peerDependencies": {
2304
-
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
2305
-
}
2306
-
},
2307
-
"node_modules/eslint-plugin-react-refresh": {
2308
-
"version": "0.4.20",
2309
-
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz",
2310
-
"integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==",
2311
-
"dev": true,
2312
-
"license": "MIT",
2313
-
"peerDependencies": {
2314
-
"eslint": ">=8.40"
2315
-
}
2316
-
},
2317
-
"node_modules/eslint-scope": {
2318
-
"version": "8.4.0",
2319
-
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
2320
-
"integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
2321
-
"dev": true,
2322
-
"license": "BSD-2-Clause",
2323
-
"dependencies": {
2324
-
"esrecurse": "^4.3.0",
2325
-
"estraverse": "^5.2.0"
2326
-
},
2327
-
"engines": {
2328
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2329
-
},
2330
-
"funding": {
2331
-
"url": "https://opencollective.com/eslint"
2332
-
}
2333
-
},
2334
-
"node_modules/eslint-visitor-keys": {
2335
-
"version": "4.2.1",
2336
-
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
2337
-
"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
2338
-
"dev": true,
2339
-
"license": "Apache-2.0",
2340
-
"engines": {
2341
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2342
-
},
2343
-
"funding": {
2344
-
"url": "https://opencollective.com/eslint"
2345
-
}
2346
-
},
2347
-
"node_modules/espree": {
2348
-
"version": "10.4.0",
2349
-
"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
2350
-
"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
2351
-
"dev": true,
2352
-
"license": "BSD-2-Clause",
2353
-
"dependencies": {
2354
-
"acorn": "^8.15.0",
2355
-
"acorn-jsx": "^5.3.2",
2356
-
"eslint-visitor-keys": "^4.2.1"
2357
-
},
2358
-
"engines": {
2359
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2360
-
},
2361
-
"funding": {
2362
-
"url": "https://opencollective.com/eslint"
2363
-
}
2364
-
},
2365
-
"node_modules/esquery": {
2366
-
"version": "1.6.0",
2367
-
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
2368
-
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
2369
-
"dev": true,
2370
-
"license": "BSD-3-Clause",
2371
-
"dependencies": {
2372
-
"estraverse": "^5.1.0"
2373
-
},
2374
-
"engines": {
2375
-
"node": ">=0.10"
2376
-
}
2377
-
},
2378
-
"node_modules/esrecurse": {
2379
-
"version": "4.3.0",
2380
-
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
2381
-
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
2382
-
"dev": true,
2383
-
"license": "BSD-2-Clause",
2384
-
"dependencies": {
2385
-
"estraverse": "^5.2.0"
2386
-
},
2387
-
"engines": {
2388
-
"node": ">=4.0"
2389
-
}
2390
-
},
2391
-
"node_modules/estraverse": {
2392
-
"version": "5.3.0",
2393
-
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
2394
-
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
2395
-
"dev": true,
2396
-
"license": "BSD-2-Clause",
2397
-
"engines": {
2398
-
"node": ">=4.0"
2399
-
}
2400
-
},
2401
-
"node_modules/esutils": {
2402
-
"version": "2.0.3",
2403
-
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2404
-
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2405
-
"dev": true,
2406
-
"license": "BSD-2-Clause",
2407
-
"engines": {
2408
-
"node": ">=0.10.0"
2409
-
}
2410
-
},
2411
-
"node_modules/fast-deep-equal": {
2412
-
"version": "3.1.3",
2413
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2414
-
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2415
-
"dev": true,
2416
-
"license": "MIT"
2417
-
},
2418
-
"node_modules/fast-glob": {
2419
-
"version": "3.3.3",
2420
-
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2421
-
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2422
-
"dev": true,
2423
-
"license": "MIT",
2424
-
"dependencies": {
2425
-
"@nodelib/fs.stat": "^2.0.2",
2426
-
"@nodelib/fs.walk": "^1.2.3",
2427
-
"glob-parent": "^5.1.2",
2428
-
"merge2": "^1.3.0",
2429
-
"micromatch": "^4.0.8"
2430
-
},
2431
-
"engines": {
2432
-
"node": ">=8.6.0"
2433
-
}
2434
-
},
2435
-
"node_modules/fast-glob/node_modules/glob-parent": {
2436
-
"version": "5.1.2",
2437
-
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2438
-
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2439
-
"dev": true,
2440
-
"license": "ISC",
2441
-
"dependencies": {
2442
-
"is-glob": "^4.0.1"
2443
-
},
2444
-
"engines": {
2445
-
"node": ">= 6"
2446
-
}
2447
-
},
2448
-
"node_modules/fast-json-stable-stringify": {
2449
-
"version": "2.1.0",
2450
-
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2451
-
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2452
-
"dev": true,
2453
-
"license": "MIT"
2454
-
},
2455
-
"node_modules/fast-levenshtein": {
2456
-
"version": "2.0.6",
2457
-
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
2458
-
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
2459
-
"dev": true,
2460
-
"license": "MIT"
2461
-
},
2462
-
"node_modules/fastq": {
2463
-
"version": "1.19.1",
2464
-
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
2465
-
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
2466
-
"dev": true,
2467
-
"license": "ISC",
2468
-
"dependencies": {
2469
-
"reusify": "^1.0.4"
2470
-
}
2471
-
},
2472
-
"node_modules/file-entry-cache": {
2473
-
"version": "8.0.0",
2474
-
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
2475
-
"integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
2476
-
"dev": true,
2477
-
"license": "MIT",
2478
-
"dependencies": {
2479
-
"flat-cache": "^4.0.0"
2480
-
},
2481
-
"engines": {
2482
-
"node": ">=16.0.0"
2483
-
}
2484
-
},
2485
-
"node_modules/fill-range": {
2486
-
"version": "7.1.1",
2487
-
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
2488
-
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2489
-
"dev": true,
2490
-
"license": "MIT",
2491
-
"dependencies": {
2492
-
"to-regex-range": "^5.0.1"
2493
-
},
2494
-
"engines": {
2495
-
"node": ">=8"
2496
-
}
2497
-
},
2498
-
"node_modules/find-up": {
2499
-
"version": "5.0.0",
2500
-
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
2501
-
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2502
-
"dev": true,
2503
-
"license": "MIT",
2504
-
"dependencies": {
2505
-
"locate-path": "^6.0.0",
2506
-
"path-exists": "^4.0.0"
2507
-
},
2508
-
"engines": {
2509
-
"node": ">=10"
2510
-
},
2511
-
"funding": {
2512
-
"url": "https://github.com/sponsors/sindresorhus"
2513
-
}
2514
-
},
2515
-
"node_modules/flat-cache": {
2516
-
"version": "4.0.1",
2517
-
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
2518
-
"integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
2519
-
"dev": true,
2520
-
"license": "MIT",
2521
-
"dependencies": {
2522
-
"flatted": "^3.2.9",
2523
-
"keyv": "^4.5.4"
2524
-
},
2525
-
"engines": {
2526
-
"node": ">=16"
2527
-
}
2528
-
},
2529
-
"node_modules/flatted": {
2530
-
"version": "3.3.3",
2531
-
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
2532
-
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
2533
-
"dev": true,
2534
-
"license": "ISC"
2535
-
},
2536
-
"node_modules/follow-redirects": {
2537
-
"version": "1.15.9",
2538
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
2539
-
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
2540
-
"funding": [
2541
-
{
2542
-
"type": "individual",
2543
-
"url": "https://github.com/sponsors/RubenVerborgh"
2544
-
}
2545
-
],
2546
-
"license": "MIT",
2547
-
"engines": {
2548
-
"node": ">=4.0"
2549
-
},
2550
-
"peerDependenciesMeta": {
2551
-
"debug": {
2552
-
"optional": true
2553
-
}
2554
-
}
2555
-
},
2556
-
"node_modules/form-data": {
2557
-
"version": "4.0.3",
2558
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
2559
-
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
2560
-
"license": "MIT",
2561
-
"dependencies": {
2562
-
"asynckit": "^0.4.0",
2563
-
"combined-stream": "^1.0.8",
2564
-
"es-set-tostringtag": "^2.1.0",
2565
-
"hasown": "^2.0.2",
2566
-
"mime-types": "^2.1.12"
2567
-
},
2568
-
"engines": {
2569
-
"node": ">= 6"
2570
-
}
2571
-
},
2572
-
"node_modules/fsevents": {
2573
-
"version": "2.3.3",
2574
-
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2575
-
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2576
-
"dev": true,
2577
-
"hasInstallScript": true,
2578
-
"license": "MIT",
2579
-
"optional": true,
2580
-
"os": [
2581
-
"darwin"
2582
-
],
2583
-
"engines": {
2584
-
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
2585
-
}
2586
-
},
2587
-
"node_modules/function-bind": {
2588
-
"version": "1.1.2",
2589
-
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2590
-
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2591
-
"license": "MIT",
2592
-
"funding": {
2593
-
"url": "https://github.com/sponsors/ljharb"
2594
-
}
2595
-
},
2596
-
"node_modules/gensync": {
2597
-
"version": "1.0.0-beta.2",
2598
-
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2599
-
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2600
-
"dev": true,
2601
-
"license": "MIT",
2602
-
"engines": {
2603
-
"node": ">=6.9.0"
2604
-
}
2605
-
},
2606
-
"node_modules/get-intrinsic": {
2607
-
"version": "1.3.0",
2608
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2609
-
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2610
-
"license": "MIT",
2611
-
"dependencies": {
2612
-
"call-bind-apply-helpers": "^1.0.2",
2613
-
"es-define-property": "^1.0.1",
2614
-
"es-errors": "^1.3.0",
2615
-
"es-object-atoms": "^1.1.1",
2616
-
"function-bind": "^1.1.2",
2617
-
"get-proto": "^1.0.1",
2618
-
"gopd": "^1.2.0",
2619
-
"has-symbols": "^1.1.0",
2620
-
"hasown": "^2.0.2",
2621
-
"math-intrinsics": "^1.1.0"
2622
-
},
2623
-
"engines": {
2624
-
"node": ">= 0.4"
2625
-
},
2626
-
"funding": {
2627
-
"url": "https://github.com/sponsors/ljharb"
2628
-
}
2629
-
},
2630
-
"node_modules/get-proto": {
2631
-
"version": "1.0.1",
2632
-
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2633
-
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2634
-
"license": "MIT",
2635
-
"dependencies": {
2636
-
"dunder-proto": "^1.0.1",
2637
-
"es-object-atoms": "^1.0.0"
2638
-
},
2639
-
"engines": {
2640
-
"node": ">= 0.4"
2641
-
}
2642
-
},
2643
-
"node_modules/glob-parent": {
2644
-
"version": "6.0.2",
2645
-
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2646
-
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2647
-
"dev": true,
2648
-
"license": "ISC",
2649
-
"dependencies": {
2650
-
"is-glob": "^4.0.3"
2651
-
},
2652
-
"engines": {
2653
-
"node": ">=10.13.0"
2654
-
}
2655
-
},
2656
-
"node_modules/globals": {
2657
-
"version": "16.2.0",
2658
-
"resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
2659
-
"integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==",
2660
-
"dev": true,
2661
-
"license": "MIT",
2662
-
"engines": {
2663
-
"node": ">=18"
2664
-
},
2665
-
"funding": {
2666
-
"url": "https://github.com/sponsors/sindresorhus"
2667
-
}
2668
-
},
2669
-
"node_modules/gopd": {
2670
-
"version": "1.2.0",
2671
-
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2672
-
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2673
-
"license": "MIT",
2674
-
"engines": {
2675
-
"node": ">= 0.4"
2676
-
},
2677
-
"funding": {
2678
-
"url": "https://github.com/sponsors/ljharb"
2679
-
}
2680
-
},
2681
-
"node_modules/graphemer": {
2682
-
"version": "1.4.0",
2683
-
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
2684
-
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
2685
-
"dev": true,
2686
-
"license": "MIT"
2687
-
},
2688
-
"node_modules/has-flag": {
2689
-
"version": "4.0.0",
2690
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2691
-
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2692
-
"dev": true,
2693
-
"license": "MIT",
2694
-
"engines": {
2695
-
"node": ">=8"
2696
-
}
2697
-
},
2698
-
"node_modules/has-symbols": {
2699
-
"version": "1.1.0",
2700
-
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2701
-
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2702
-
"license": "MIT",
2703
-
"engines": {
2704
-
"node": ">= 0.4"
2705
-
},
2706
-
"funding": {
2707
-
"url": "https://github.com/sponsors/ljharb"
2708
-
}
2709
-
},
2710
-
"node_modules/has-tostringtag": {
2711
-
"version": "1.0.2",
2712
-
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
2713
-
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
2714
-
"license": "MIT",
2715
-
"dependencies": {
2716
-
"has-symbols": "^1.0.3"
2717
-
},
2718
-
"engines": {
2719
-
"node": ">= 0.4"
2720
-
},
2721
-
"funding": {
2722
-
"url": "https://github.com/sponsors/ljharb"
2723
-
}
2724
-
},
2725
-
"node_modules/hasown": {
2726
-
"version": "2.0.2",
2727
-
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2728
-
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
2729
-
"license": "MIT",
2730
-
"dependencies": {
2731
-
"function-bind": "^1.1.2"
2732
-
},
2733
-
"engines": {
2734
-
"node": ">= 0.4"
2735
-
}
2736
-
},
2737
-
"node_modules/ignore": {
2738
-
"version": "5.3.2",
2739
-
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
2740
-
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
2741
-
"dev": true,
2742
-
"license": "MIT",
2743
-
"engines": {
2744
-
"node": ">= 4"
2745
-
}
2746
-
},
2747
-
"node_modules/import-fresh": {
2748
-
"version": "3.3.1",
2749
-
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
2750
-
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
2751
-
"dev": true,
2752
-
"license": "MIT",
2753
-
"dependencies": {
2754
-
"parent-module": "^1.0.0",
2755
-
"resolve-from": "^4.0.0"
2756
-
},
2757
-
"engines": {
2758
-
"node": ">=6"
2759
-
},
2760
-
"funding": {
2761
-
"url": "https://github.com/sponsors/sindresorhus"
2762
-
}
2763
-
},
2764
-
"node_modules/imurmurhash": {
2765
-
"version": "0.1.4",
2766
-
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2767
-
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2768
-
"dev": true,
2769
-
"license": "MIT",
2770
-
"engines": {
2771
-
"node": ">=0.8.19"
2772
-
}
2773
-
},
2774
-
"node_modules/is-extglob": {
2775
-
"version": "2.1.1",
2776
-
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2777
-
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2778
-
"dev": true,
2779
-
"license": "MIT",
2780
-
"engines": {
2781
-
"node": ">=0.10.0"
2782
-
}
2783
-
},
2784
-
"node_modules/is-glob": {
2785
-
"version": "4.0.3",
2786
-
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2787
-
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2788
-
"dev": true,
2789
-
"license": "MIT",
2790
-
"dependencies": {
2791
-
"is-extglob": "^2.1.1"
2792
-
},
2793
-
"engines": {
2794
-
"node": ">=0.10.0"
2795
-
}
2796
-
},
2797
-
"node_modules/is-number": {
2798
-
"version": "7.0.0",
2799
-
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2800
-
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2801
-
"dev": true,
2802
-
"license": "MIT",
2803
-
"engines": {
2804
-
"node": ">=0.12.0"
2805
-
}
2806
-
},
2807
-
"node_modules/isexe": {
2808
-
"version": "2.0.0",
2809
-
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2810
-
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2811
-
"dev": true,
2812
-
"license": "ISC"
2813
-
},
2814
-
"node_modules/js-tokens": {
2815
-
"version": "4.0.0",
2816
-
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2817
-
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2818
-
"dev": true,
2819
-
"license": "MIT"
2820
-
},
2821
-
"node_modules/js-yaml": {
2822
-
"version": "4.1.0",
2823
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2824
-
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2825
-
"dev": true,
2826
-
"license": "MIT",
2827
-
"dependencies": {
2828
-
"argparse": "^2.0.1"
2829
-
},
2830
-
"bin": {
2831
-
"js-yaml": "bin/js-yaml.js"
2832
-
}
2833
-
},
2834
-
"node_modules/jsesc": {
2835
-
"version": "3.1.0",
2836
-
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
2837
-
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
2838
-
"dev": true,
2839
-
"license": "MIT",
2840
-
"bin": {
2841
-
"jsesc": "bin/jsesc"
2842
-
},
2843
-
"engines": {
2844
-
"node": ">=6"
2845
-
}
2846
-
},
2847
-
"node_modules/json-buffer": {
2848
-
"version": "3.0.1",
2849
-
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
2850
-
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
2851
-
"dev": true,
2852
-
"license": "MIT"
2853
-
},
2854
-
"node_modules/json-schema-traverse": {
2855
-
"version": "0.4.1",
2856
-
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2857
-
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2858
-
"dev": true,
2859
-
"license": "MIT"
2860
-
},
2861
-
"node_modules/json-stable-stringify-without-jsonify": {
2862
-
"version": "1.0.1",
2863
-
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2864
-
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
2865
-
"dev": true,
2866
-
"license": "MIT"
2867
-
},
2868
-
"node_modules/json5": {
2869
-
"version": "2.2.3",
2870
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2871
-
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2872
-
"dev": true,
2873
-
"license": "MIT",
2874
-
"bin": {
2875
-
"json5": "lib/cli.js"
2876
-
},
2877
-
"engines": {
2878
-
"node": ">=6"
2879
-
}
2880
-
},
2881
-
"node_modules/keyv": {
2882
-
"version": "4.5.4",
2883
-
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
2884
-
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
2885
-
"dev": true,
2886
-
"license": "MIT",
2887
-
"dependencies": {
2888
-
"json-buffer": "3.0.1"
2889
-
}
2890
-
},
2891
-
"node_modules/levn": {
2892
-
"version": "0.4.1",
2893
-
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2894
-
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2895
-
"dev": true,
2896
-
"license": "MIT",
2897
-
"dependencies": {
2898
-
"prelude-ls": "^1.2.1",
2899
-
"type-check": "~0.4.0"
2900
-
},
2901
-
"engines": {
2902
-
"node": ">= 0.8.0"
2903
-
}
2904
-
},
2905
-
"node_modules/locate-path": {
2906
-
"version": "6.0.0",
2907
-
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2908
-
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2909
-
"dev": true,
2910
-
"license": "MIT",
2911
-
"dependencies": {
2912
-
"p-locate": "^5.0.0"
2913
-
},
2914
-
"engines": {
2915
-
"node": ">=10"
2916
-
},
2917
-
"funding": {
2918
-
"url": "https://github.com/sponsors/sindresorhus"
2919
-
}
2920
-
},
2921
-
"node_modules/lodash.merge": {
2922
-
"version": "4.6.2",
2923
-
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2924
-
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2925
-
"dev": true,
2926
-
"license": "MIT"
2927
-
},
2928
-
"node_modules/lru-cache": {
2929
-
"version": "5.1.1",
2930
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2931
-
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2932
-
"dev": true,
2933
-
"license": "ISC",
2934
-
"dependencies": {
2935
-
"yallist": "^3.0.2"
2936
-
}
2937
-
},
2938
-
"node_modules/math-intrinsics": {
2939
-
"version": "1.1.0",
2940
-
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
2941
-
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
2942
-
"license": "MIT",
2943
-
"engines": {
2944
-
"node": ">= 0.4"
2945
-
}
2946
-
},
2947
-
"node_modules/merge2": {
2948
-
"version": "1.4.1",
2949
-
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2950
-
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2951
-
"dev": true,
2952
-
"license": "MIT",
2953
-
"engines": {
2954
-
"node": ">= 8"
2955
-
}
2956
-
},
2957
-
"node_modules/micromatch": {
2958
-
"version": "4.0.8",
2959
-
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
2960
-
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2961
-
"dev": true,
2962
-
"license": "MIT",
2963
-
"dependencies": {
2964
-
"braces": "^3.0.3",
2965
-
"picomatch": "^2.3.1"
2966
-
},
2967
-
"engines": {
2968
-
"node": ">=8.6"
2969
-
}
2970
-
},
2971
-
"node_modules/mime-db": {
2972
-
"version": "1.52.0",
2973
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
2974
-
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
2975
-
"license": "MIT",
2976
-
"engines": {
2977
-
"node": ">= 0.6"
2978
-
}
2979
-
},
2980
-
"node_modules/mime-types": {
2981
-
"version": "2.1.35",
2982
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
2983
-
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
2984
-
"license": "MIT",
2985
-
"dependencies": {
2986
-
"mime-db": "1.52.0"
2987
-
},
2988
-
"engines": {
2989
-
"node": ">= 0.6"
2990
-
}
2991
-
},
2992
-
"node_modules/minimatch": {
2993
-
"version": "3.1.2",
2994
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2995
-
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2996
-
"dev": true,
2997
-
"license": "ISC",
2998
-
"dependencies": {
2999
-
"brace-expansion": "^1.1.7"
3000
-
},
3001
-
"engines": {
3002
-
"node": "*"
3003
-
}
3004
-
},
3005
-
"node_modules/ms": {
3006
-
"version": "2.1.3",
3007
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3008
-
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
3009
-
"dev": true,
3010
-
"license": "MIT"
3011
-
},
3012
-
"node_modules/nanoid": {
3013
-
"version": "3.3.11",
3014
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
3015
-
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
3016
-
"dev": true,
3017
-
"funding": [
3018
-
{
3019
-
"type": "github",
3020
-
"url": "https://github.com/sponsors/ai"
3021
-
}
3022
-
],
3023
-
"license": "MIT",
3024
-
"bin": {
3025
-
"nanoid": "bin/nanoid.cjs"
3026
-
},
3027
-
"engines": {
3028
-
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
3029
-
}
3030
-
},
3031
-
"node_modules/natural-compare": {
3032
-
"version": "1.4.0",
3033
-
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3034
-
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
3035
-
"dev": true,
3036
-
"license": "MIT"
3037
-
},
3038
-
"node_modules/node-releases": {
3039
-
"version": "2.0.19",
3040
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
3041
-
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
3042
-
"dev": true,
3043
-
"license": "MIT"
3044
-
},
3045
-
"node_modules/optionator": {
3046
-
"version": "0.9.4",
3047
-
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
3048
-
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
3049
-
"dev": true,
3050
-
"license": "MIT",
3051
-
"dependencies": {
3052
-
"deep-is": "^0.1.3",
3053
-
"fast-levenshtein": "^2.0.6",
3054
-
"levn": "^0.4.1",
3055
-
"prelude-ls": "^1.2.1",
3056
-
"type-check": "^0.4.0",
3057
-
"word-wrap": "^1.2.5"
3058
-
},
3059
-
"engines": {
3060
-
"node": ">= 0.8.0"
3061
-
}
3062
-
},
3063
-
"node_modules/p-limit": {
3064
-
"version": "3.1.0",
3065
-
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
3066
-
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
3067
-
"dev": true,
3068
-
"license": "MIT",
3069
-
"dependencies": {
3070
-
"yocto-queue": "^0.1.0"
3071
-
},
3072
-
"engines": {
3073
-
"node": ">=10"
3074
-
},
3075
-
"funding": {
3076
-
"url": "https://github.com/sponsors/sindresorhus"
3077
-
}
3078
-
},
3079
-
"node_modules/p-locate": {
3080
-
"version": "5.0.0",
3081
-
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
3082
-
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
3083
-
"dev": true,
3084
-
"license": "MIT",
3085
-
"dependencies": {
3086
-
"p-limit": "^3.0.2"
3087
-
},
3088
-
"engines": {
3089
-
"node": ">=10"
3090
-
},
3091
-
"funding": {
3092
-
"url": "https://github.com/sponsors/sindresorhus"
3093
-
}
3094
-
},
3095
-
"node_modules/parent-module": {
3096
-
"version": "1.0.1",
3097
-
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3098
-
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3099
-
"dev": true,
3100
-
"license": "MIT",
3101
-
"dependencies": {
3102
-
"callsites": "^3.0.0"
3103
-
},
3104
-
"engines": {
3105
-
"node": ">=6"
3106
-
}
3107
-
},
3108
-
"node_modules/path-exists": {
3109
-
"version": "4.0.0",
3110
-
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
3111
-
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
3112
-
"dev": true,
3113
-
"license": "MIT",
3114
-
"engines": {
3115
-
"node": ">=8"
3116
-
}
3117
-
},
3118
-
"node_modules/path-key": {
3119
-
"version": "3.1.1",
3120
-
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3121
-
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
3122
-
"dev": true,
3123
-
"license": "MIT",
3124
-
"engines": {
3125
-
"node": ">=8"
3126
-
}
3127
-
},
3128
-
"node_modules/picocolors": {
3129
-
"version": "1.1.1",
3130
-
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
3131
-
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
3132
-
"dev": true,
3133
-
"license": "ISC"
3134
-
},
3135
-
"node_modules/picomatch": {
3136
-
"version": "2.3.1",
3137
-
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
3138
-
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
3139
-
"dev": true,
3140
-
"license": "MIT",
3141
-
"engines": {
3142
-
"node": ">=8.6"
3143
-
},
3144
-
"funding": {
3145
-
"url": "https://github.com/sponsors/jonschlinkert"
3146
-
}
3147
-
},
3148
-
"node_modules/postcss": {
3149
-
"version": "8.5.6",
3150
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
3151
-
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
3152
-
"dev": true,
3153
-
"funding": [
3154
-
{
3155
-
"type": "opencollective",
3156
-
"url": "https://opencollective.com/postcss/"
3157
-
},
3158
-
{
3159
-
"type": "tidelift",
3160
-
"url": "https://tidelift.com/funding/github/npm/postcss"
3161
-
},
3162
-
{
3163
-
"type": "github",
3164
-
"url": "https://github.com/sponsors/ai"
3165
-
}
3166
-
],
3167
-
"license": "MIT",
3168
-
"dependencies": {
3169
-
"nanoid": "^3.3.11",
3170
-
"picocolors": "^1.1.1",
3171
-
"source-map-js": "^1.2.1"
3172
-
},
3173
-
"engines": {
3174
-
"node": "^10 || ^12 || >=14"
3175
-
}
3176
-
},
3177
-
"node_modules/prelude-ls": {
3178
-
"version": "1.2.1",
3179
-
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
3180
-
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
3181
-
"dev": true,
3182
-
"license": "MIT",
3183
-
"engines": {
3184
-
"node": ">= 0.8.0"
3185
-
}
3186
-
},
3187
-
"node_modules/proxy-from-env": {
3188
-
"version": "1.1.0",
3189
-
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
3190
-
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
3191
-
"license": "MIT"
3192
-
},
3193
-
"node_modules/punycode": {
3194
-
"version": "2.3.1",
3195
-
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
3196
-
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
3197
-
"dev": true,
3198
-
"license": "MIT",
3199
-
"engines": {
3200
-
"node": ">=6"
3201
-
}
3202
-
},
3203
-
"node_modules/queue-microtask": {
3204
-
"version": "1.2.3",
3205
-
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
3206
-
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
3207
-
"dev": true,
3208
-
"funding": [
3209
-
{
3210
-
"type": "github",
3211
-
"url": "https://github.com/sponsors/feross"
3212
-
},
3213
-
{
3214
-
"type": "patreon",
3215
-
"url": "https://www.patreon.com/feross"
3216
-
},
3217
-
{
3218
-
"type": "consulting",
3219
-
"url": "https://feross.org/support"
3220
-
}
3221
-
],
3222
-
"license": "MIT"
3223
-
},
3224
-
"node_modules/react": {
3225
-
"version": "19.1.0",
3226
-
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
3227
-
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
3228
-
"license": "MIT",
3229
-
"engines": {
3230
-
"node": ">=0.10.0"
3231
-
}
3232
-
},
3233
-
"node_modules/react-dom": {
3234
-
"version": "19.1.0",
3235
-
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
3236
-
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
3237
-
"license": "MIT",
3238
-
"dependencies": {
3239
-
"scheduler": "^0.26.0"
3240
-
},
3241
-
"peerDependencies": {
3242
-
"react": "^19.1.0"
3243
-
}
3244
-
},
3245
-
"node_modules/react-refresh": {
3246
-
"version": "0.17.0",
3247
-
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
3248
-
"integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
3249
-
"dev": true,
3250
-
"license": "MIT",
3251
-
"engines": {
3252
-
"node": ">=0.10.0"
3253
-
}
3254
-
},
3255
-
"node_modules/react-router": {
3256
-
"version": "7.6.2",
3257
-
"resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz",
3258
-
"integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==",
3259
-
"license": "MIT",
3260
-
"dependencies": {
3261
-
"cookie": "^1.0.1",
3262
-
"set-cookie-parser": "^2.6.0"
3263
-
},
3264
-
"engines": {
3265
-
"node": ">=20.0.0"
3266
-
},
3267
-
"peerDependencies": {
3268
-
"react": ">=18",
3269
-
"react-dom": ">=18"
3270
-
},
3271
-
"peerDependenciesMeta": {
3272
-
"react-dom": {
3273
-
"optional": true
3274
-
}
3275
-
}
3276
-
},
3277
-
"node_modules/react-router-dom": {
3278
-
"version": "7.6.2",
3279
-
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz",
3280
-
"integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==",
3281
-
"license": "MIT",
3282
-
"dependencies": {
3283
-
"react-router": "7.6.2"
3284
-
},
3285
-
"engines": {
3286
-
"node": ">=20.0.0"
3287
-
},
3288
-
"peerDependencies": {
3289
-
"react": ">=18",
3290
-
"react-dom": ">=18"
3291
-
}
3292
-
},
3293
-
"node_modules/resolve-from": {
3294
-
"version": "4.0.0",
3295
-
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3296
-
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3297
-
"dev": true,
3298
-
"license": "MIT",
3299
-
"engines": {
3300
-
"node": ">=4"
3301
-
}
3302
-
},
3303
-
"node_modules/reusify": {
3304
-
"version": "1.1.0",
3305
-
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
3306
-
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
3307
-
"dev": true,
3308
-
"license": "MIT",
3309
-
"engines": {
3310
-
"iojs": ">=1.0.0",
3311
-
"node": ">=0.10.0"
3312
-
}
3313
-
},
3314
-
"node_modules/rollup": {
3315
-
"version": "4.44.0",
3316
-
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.0.tgz",
3317
-
"integrity": "sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==",
3318
-
"dev": true,
3319
-
"license": "MIT",
3320
-
"dependencies": {
3321
-
"@types/estree": "1.0.8"
3322
-
},
3323
-
"bin": {
3324
-
"rollup": "dist/bin/rollup"
3325
-
},
3326
-
"engines": {
3327
-
"node": ">=18.0.0",
3328
-
"npm": ">=8.0.0"
3329
-
},
3330
-
"optionalDependencies": {
3331
-
"@rollup/rollup-android-arm-eabi": "4.44.0",
3332
-
"@rollup/rollup-android-arm64": "4.44.0",
3333
-
"@rollup/rollup-darwin-arm64": "4.44.0",
3334
-
"@rollup/rollup-darwin-x64": "4.44.0",
3335
-
"@rollup/rollup-freebsd-arm64": "4.44.0",
3336
-
"@rollup/rollup-freebsd-x64": "4.44.0",
3337
-
"@rollup/rollup-linux-arm-gnueabihf": "4.44.0",
3338
-
"@rollup/rollup-linux-arm-musleabihf": "4.44.0",
3339
-
"@rollup/rollup-linux-arm64-gnu": "4.44.0",
3340
-
"@rollup/rollup-linux-arm64-musl": "4.44.0",
3341
-
"@rollup/rollup-linux-loongarch64-gnu": "4.44.0",
3342
-
"@rollup/rollup-linux-powerpc64le-gnu": "4.44.0",
3343
-
"@rollup/rollup-linux-riscv64-gnu": "4.44.0",
3344
-
"@rollup/rollup-linux-riscv64-musl": "4.44.0",
3345
-
"@rollup/rollup-linux-s390x-gnu": "4.44.0",
3346
-
"@rollup/rollup-linux-x64-gnu": "4.44.0",
3347
-
"@rollup/rollup-linux-x64-musl": "4.44.0",
3348
-
"@rollup/rollup-win32-arm64-msvc": "4.44.0",
3349
-
"@rollup/rollup-win32-ia32-msvc": "4.44.0",
3350
-
"@rollup/rollup-win32-x64-msvc": "4.44.0",
3351
-
"fsevents": "~2.3.2"
3352
-
}
3353
-
},
3354
-
"node_modules/run-parallel": {
3355
-
"version": "1.2.0",
3356
-
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3357
-
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3358
-
"dev": true,
3359
-
"funding": [
3360
-
{
3361
-
"type": "github",
3362
-
"url": "https://github.com/sponsors/feross"
3363
-
},
3364
-
{
3365
-
"type": "patreon",
3366
-
"url": "https://www.patreon.com/feross"
3367
-
},
3368
-
{
3369
-
"type": "consulting",
3370
-
"url": "https://feross.org/support"
3371
-
}
3372
-
],
3373
-
"license": "MIT",
3374
-
"dependencies": {
3375
-
"queue-microtask": "^1.2.2"
3376
-
}
3377
-
},
3378
-
"node_modules/scheduler": {
3379
-
"version": "0.26.0",
3380
-
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
3381
-
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
3382
-
"license": "MIT"
3383
-
},
3384
-
"node_modules/semver": {
3385
-
"version": "6.3.1",
3386
-
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
3387
-
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
3388
-
"dev": true,
3389
-
"license": "ISC",
3390
-
"bin": {
3391
-
"semver": "bin/semver.js"
3392
-
}
3393
-
},
3394
-
"node_modules/set-cookie-parser": {
3395
-
"version": "2.7.1",
3396
-
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
3397
-
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
3398
-
"license": "MIT"
3399
-
},
3400
-
"node_modules/shebang-command": {
3401
-
"version": "2.0.0",
3402
-
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3403
-
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3404
-
"dev": true,
3405
-
"license": "MIT",
3406
-
"dependencies": {
3407
-
"shebang-regex": "^3.0.0"
3408
-
},
3409
-
"engines": {
3410
-
"node": ">=8"
3411
-
}
3412
-
},
3413
-
"node_modules/shebang-regex": {
3414
-
"version": "3.0.0",
3415
-
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3416
-
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3417
-
"dev": true,
3418
-
"license": "MIT",
3419
-
"engines": {
3420
-
"node": ">=8"
3421
-
}
3422
-
},
3423
-
"node_modules/source-map-js": {
3424
-
"version": "1.2.1",
3425
-
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
3426
-
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
3427
-
"dev": true,
3428
-
"license": "BSD-3-Clause",
3429
-
"engines": {
3430
-
"node": ">=0.10.0"
3431
-
}
3432
-
},
3433
-
"node_modules/strip-json-comments": {
3434
-
"version": "3.1.1",
3435
-
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
3436
-
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
3437
-
"dev": true,
3438
-
"license": "MIT",
3439
-
"engines": {
3440
-
"node": ">=8"
3441
-
},
3442
-
"funding": {
3443
-
"url": "https://github.com/sponsors/sindresorhus"
3444
-
}
3445
-
},
3446
-
"node_modules/supports-color": {
3447
-
"version": "7.2.0",
3448
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
3449
-
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
3450
-
"dev": true,
3451
-
"license": "MIT",
3452
-
"dependencies": {
3453
-
"has-flag": "^4.0.0"
3454
-
},
3455
-
"engines": {
3456
-
"node": ">=8"
3457
-
}
3458
-
},
3459
-
"node_modules/tinyglobby": {
3460
-
"version": "0.2.14",
3461
-
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
3462
-
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
3463
-
"dev": true,
3464
-
"license": "MIT",
3465
-
"dependencies": {
3466
-
"fdir": "^6.4.4",
3467
-
"picomatch": "^4.0.2"
3468
-
},
3469
-
"engines": {
3470
-
"node": ">=12.0.0"
3471
-
},
3472
-
"funding": {
3473
-
"url": "https://github.com/sponsors/SuperchupuDev"
3474
-
}
3475
-
},
3476
-
"node_modules/tinyglobby/node_modules/fdir": {
3477
-
"version": "6.4.6",
3478
-
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
3479
-
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
3480
-
"dev": true,
3481
-
"license": "MIT",
3482
-
"peerDependencies": {
3483
-
"picomatch": "^3 || ^4"
3484
-
},
3485
-
"peerDependenciesMeta": {
3486
-
"picomatch": {
3487
-
"optional": true
3488
-
}
3489
-
}
3490
-
},
3491
-
"node_modules/tinyglobby/node_modules/picomatch": {
3492
-
"version": "4.0.2",
3493
-
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
3494
-
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
3495
-
"dev": true,
3496
-
"license": "MIT",
3497
-
"engines": {
3498
-
"node": ">=12"
3499
-
},
3500
-
"funding": {
3501
-
"url": "https://github.com/sponsors/jonschlinkert"
3502
-
}
3503
-
},
3504
-
"node_modules/to-regex-range": {
3505
-
"version": "5.0.1",
3506
-
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3507
-
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3508
-
"dev": true,
3509
-
"license": "MIT",
3510
-
"dependencies": {
3511
-
"is-number": "^7.0.0"
3512
-
},
3513
-
"engines": {
3514
-
"node": ">=8.0"
3515
-
}
3516
-
},
3517
-
"node_modules/ts-api-utils": {
3518
-
"version": "2.1.0",
3519
-
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
3520
-
"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
3521
-
"dev": true,
3522
-
"license": "MIT",
3523
-
"engines": {
3524
-
"node": ">=18.12"
3525
-
},
3526
-
"peerDependencies": {
3527
-
"typescript": ">=4.8.4"
3528
-
}
3529
-
},
3530
-
"node_modules/type-check": {
3531
-
"version": "0.4.0",
3532
-
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
3533
-
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
3534
-
"dev": true,
3535
-
"license": "MIT",
3536
-
"dependencies": {
3537
-
"prelude-ls": "^1.2.1"
3538
-
},
3539
-
"engines": {
3540
-
"node": ">= 0.8.0"
3541
-
}
3542
-
},
3543
-
"node_modules/typescript": {
3544
-
"version": "5.8.3",
3545
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
3546
-
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
3547
-
"dev": true,
3548
-
"license": "Apache-2.0",
3549
-
"bin": {
3550
-
"tsc": "bin/tsc",
3551
-
"tsserver": "bin/tsserver"
3552
-
},
3553
-
"engines": {
3554
-
"node": ">=14.17"
3555
-
}
3556
-
},
3557
-
"node_modules/typescript-eslint": {
3558
-
"version": "8.34.1",
3559
-
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz",
3560
-
"integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==",
3561
-
"dev": true,
3562
-
"license": "MIT",
3563
-
"dependencies": {
3564
-
"@typescript-eslint/eslint-plugin": "8.34.1",
3565
-
"@typescript-eslint/parser": "8.34.1",
3566
-
"@typescript-eslint/utils": "8.34.1"
3567
-
},
3568
-
"engines": {
3569
-
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
3570
-
},
3571
-
"funding": {
3572
-
"type": "opencollective",
3573
-
"url": "https://opencollective.com/typescript-eslint"
3574
-
},
3575
-
"peerDependencies": {
3576
-
"eslint": "^8.57.0 || ^9.0.0",
3577
-
"typescript": ">=4.8.4 <5.9.0"
3578
-
}
3579
-
},
3580
-
"node_modules/update-browserslist-db": {
3581
-
"version": "1.1.3",
3582
-
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
3583
-
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
3584
-
"dev": true,
3585
-
"funding": [
3586
-
{
3587
-
"type": "opencollective",
3588
-
"url": "https://opencollective.com/browserslist"
3589
-
},
3590
-
{
3591
-
"type": "tidelift",
3592
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
3593
-
},
3594
-
{
3595
-
"type": "github",
3596
-
"url": "https://github.com/sponsors/ai"
3597
-
}
3598
-
],
3599
-
"license": "MIT",
3600
-
"dependencies": {
3601
-
"escalade": "^3.2.0",
3602
-
"picocolors": "^1.1.1"
3603
-
},
3604
-
"bin": {
3605
-
"update-browserslist-db": "cli.js"
3606
-
},
3607
-
"peerDependencies": {
3608
-
"browserslist": ">= 4.21.0"
3609
-
}
3610
-
},
3611
-
"node_modules/uri-js": {
3612
-
"version": "4.4.1",
3613
-
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
3614
-
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3615
-
"dev": true,
3616
-
"license": "BSD-2-Clause",
3617
-
"dependencies": {
3618
-
"punycode": "^2.1.0"
3619
-
}
3620
-
},
3621
-
"node_modules/vite": {
3622
-
"version": "6.3.5",
3623
-
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
3624
-
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
3625
-
"dev": true,
3626
-
"license": "MIT",
3627
-
"dependencies": {
3628
-
"esbuild": "^0.25.0",
3629
-
"fdir": "^6.4.4",
3630
-
"picomatch": "^4.0.2",
3631
-
"postcss": "^8.5.3",
3632
-
"rollup": "^4.34.9",
3633
-
"tinyglobby": "^0.2.13"
3634
-
},
3635
-
"bin": {
3636
-
"vite": "bin/vite.js"
3637
-
},
3638
-
"engines": {
3639
-
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
3640
-
},
3641
-
"funding": {
3642
-
"url": "https://github.com/vitejs/vite?sponsor=1"
3643
-
},
3644
-
"optionalDependencies": {
3645
-
"fsevents": "~2.3.3"
3646
-
},
3647
-
"peerDependencies": {
3648
-
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
3649
-
"jiti": ">=1.21.0",
3650
-
"less": "*",
3651
-
"lightningcss": "^1.21.0",
3652
-
"sass": "*",
3653
-
"sass-embedded": "*",
3654
-
"stylus": "*",
3655
-
"sugarss": "*",
3656
-
"terser": "^5.16.0",
3657
-
"tsx": "^4.8.1",
3658
-
"yaml": "^2.4.2"
3659
-
},
3660
-
"peerDependenciesMeta": {
3661
-
"@types/node": {
3662
-
"optional": true
3663
-
},
3664
-
"jiti": {
3665
-
"optional": true
3666
-
},
3667
-
"less": {
3668
-
"optional": true
3669
-
},
3670
-
"lightningcss": {
3671
-
"optional": true
3672
-
},
3673
-
"sass": {
3674
-
"optional": true
3675
-
},
3676
-
"sass-embedded": {
3677
-
"optional": true
3678
-
},
3679
-
"stylus": {
3680
-
"optional": true
3681
-
},
3682
-
"sugarss": {
3683
-
"optional": true
3684
-
},
3685
-
"terser": {
3686
-
"optional": true
3687
-
},
3688
-
"tsx": {
3689
-
"optional": true
3690
-
},
3691
-
"yaml": {
3692
-
"optional": true
3693
-
}
3694
-
}
3695
-
},
3696
-
"node_modules/vite/node_modules/fdir": {
3697
-
"version": "6.4.6",
3698
-
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
3699
-
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
3700
-
"dev": true,
3701
-
"license": "MIT",
3702
-
"peerDependencies": {
3703
-
"picomatch": "^3 || ^4"
3704
-
},
3705
-
"peerDependenciesMeta": {
3706
-
"picomatch": {
3707
-
"optional": true
3708
-
}
3709
-
}
3710
-
},
3711
-
"node_modules/vite/node_modules/picomatch": {
3712
-
"version": "4.0.2",
3713
-
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
3714
-
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
3715
-
"dev": true,
3716
-
"license": "MIT",
3717
-
"engines": {
3718
-
"node": ">=12"
3719
-
},
3720
-
"funding": {
3721
-
"url": "https://github.com/sponsors/jonschlinkert"
3722
-
}
3723
-
},
3724
-
"node_modules/which": {
3725
-
"version": "2.0.2",
3726
-
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3727
-
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3728
-
"dev": true,
3729
-
"license": "ISC",
3730
-
"dependencies": {
3731
-
"isexe": "^2.0.0"
3732
-
},
3733
-
"bin": {
3734
-
"node-which": "bin/node-which"
3735
-
},
3736
-
"engines": {
3737
-
"node": ">= 8"
3738
-
}
3739
-
},
3740
-
"node_modules/word-wrap": {
3741
-
"version": "1.2.5",
3742
-
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
3743
-
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
3744
-
"dev": true,
3745
-
"license": "MIT",
3746
-
"engines": {
3747
-
"node": ">=0.10.0"
3748
-
}
3749
-
},
3750
-
"node_modules/yallist": {
3751
-
"version": "3.1.1",
3752
-
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
3753
-
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
3754
-
"dev": true,
3755
-
"license": "ISC"
3756
-
},
3757
-
"node_modules/yocto-queue": {
3758
-
"version": "0.1.0",
3759
-
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3760
-
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
3761
-
"dev": true,
3762
-
"license": "MIT",
3763
-
"engines": {
3764
-
"node": ">=10"
3765
-
},
3766
-
"funding": {
3767
-
"url": "https://github.com/sponsors/sindresorhus"
3768
-
}
3769
-
}
3770
-
}
3771
-
}
-33
client/package.json
-33
client/package.json
···
1
-
{
2
-
"name": "client",
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
-
"@tanstack/react-query": "^5.80.10",
14
-
"@tanstack/react-query-devtools": "^5.80.10",
15
-
"axios": "^1.10.0",
16
-
"react": "^19.1.0",
17
-
"react-dom": "^19.1.0",
18
-
"react-router-dom": "^7.6.2"
19
-
},
20
-
"devDependencies": {
21
-
"@eslint/js": "^9.25.0",
22
-
"@types/react": "^19.1.2",
23
-
"@types/react-dom": "^19.1.2",
24
-
"@vitejs/plugin-react": "^4.4.1",
25
-
"eslint": "^9.25.0",
26
-
"eslint-plugin-react-hooks": "^5.2.0",
27
-
"eslint-plugin-react-refresh": "^0.4.19",
28
-
"globals": "^16.0.0",
29
-
"typescript": "~5.8.3",
30
-
"typescript-eslint": "^8.30.1",
31
-
"vite": "^6.3.5"
32
-
}
33
-
}
-1
client/public/vite.svg
-1
client/public/vite.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
-42
client/src/App.tsx
-42
client/src/App.tsx
···
1
-
import { Routes, Route, Link } from 'react-router-dom'
2
-
import { Home } from './pages/Home'
3
-
import { Submit } from './pages/Submit'
4
-
import { Tag } from './pages/Tag'
5
-
import { Vibes } from './pages/Vibes'
6
-
import { Vibe } from './pages/Vibe'
7
-
import { Emerging } from './pages/Emerging'
8
-
9
-
function App() {
10
-
return (
11
-
<div className="app">
12
-
<header>
13
-
<div className="container">
14
-
<h1>
15
-
<Link to="/">
16
-
<span className="radar-icon">📡</span>blonk
17
-
</Link>
18
-
</h1>
19
-
<nav>
20
-
<Link to="/">radar</Link>
21
-
<Link to="/vibes">vibes</Link>
22
-
<Link to="/emerging">emerging</Link>
23
-
<Link to="/submit">transmit</Link>
24
-
</nav>
25
-
</div>
26
-
</header>
27
-
28
-
<div className="container">
29
-
<Routes>
30
-
<Route path="/" element={<Home />} />
31
-
<Route path="/submit" element={<Submit />} />
32
-
<Route path="/tag/:tag" element={<Tag />} />
33
-
<Route path="/vibes" element={<Vibes />} />
34
-
<Route path="/vibe/:vibeUri" element={<Vibe />} />
35
-
<Route path="/emerging" element={<Emerging />} />
36
-
</Routes>
37
-
</div>
38
-
</div>
39
-
)
40
-
}
41
-
42
-
export default App
-58
client/src/api/blips.ts
-58
client/src/api/blips.ts
···
1
-
import axios from 'axios'
2
-
3
-
const API_BASE = '/api'
4
-
5
-
export interface Vibe {
6
-
uri: string
7
-
cid: string
8
-
creatorDid: string
9
-
name: string
10
-
mood: string
11
-
emoji?: string
12
-
color?: string
13
-
memberCount: number
14
-
createdAt: string
15
-
}
16
-
17
-
export interface Blip {
18
-
uri: string
19
-
cid: string
20
-
authorDid: string
21
-
authorHandle?: string
22
-
authorDisplayName?: string
23
-
title: string
24
-
body?: string
25
-
url?: string
26
-
tags?: string[]
27
-
vibeUri?: string
28
-
vibeName?: string
29
-
createdAt: string
30
-
grooves: number
31
-
}
32
-
33
-
export const blipsApi = {
34
-
getBlips: async (): Promise<Blip[]> => {
35
-
const { data } = await axios.get(`${API_BASE}/blips`)
36
-
return data.blips
37
-
},
38
-
39
-
getBlipsByTag: async (tag: string): Promise<Blip[]> => {
40
-
const { data } = await axios.get(`${API_BASE}/blips/tag/${tag}`)
41
-
return data.blips
42
-
},
43
-
44
-
createBlip: async (blip: {
45
-
title: string
46
-
body?: string
47
-
url?: string
48
-
tags: string[]
49
-
vibe?: {
50
-
uri: string
51
-
cid: string
52
-
name?: string
53
-
}
54
-
}) => {
55
-
const { data } = await axios.post(`${API_BASE}/blips`, blip)
56
-
return data
57
-
},
58
-
}
-44
client/src/api/vibes.ts
-44
client/src/api/vibes.ts
···
1
-
import axios from 'axios'
2
-
import type { Vibe, Blip } from './blips'
3
-
4
-
const API_BASE = '/api'
5
-
6
-
export interface EmergingVibe {
7
-
vibeName: string
8
-
mentionCount: number
9
-
firstMentioned: string
10
-
lastMentioned: string
11
-
progress: number
12
-
}
13
-
14
-
export const vibesApi = {
15
-
getVibes: async (): Promise<Vibe[]> => {
16
-
const { data } = await axios.get(`${API_BASE}/vibes`)
17
-
return data.vibes
18
-
},
19
-
20
-
getEmergingVibes: async (): Promise<EmergingVibe[]> => {
21
-
const { data } = await axios.get(`${API_BASE}/vibes/emerging`)
22
-
return data.emergingVibes
23
-
},
24
-
25
-
getVibeBlips: async (vibeUri: string): Promise<Blip[]> => {
26
-
const { data } = await axios.get(`${API_BASE}/vibes/${encodeURIComponent(vibeUri)}/blips`)
27
-
return data.blips
28
-
},
29
-
30
-
createVibe: async (vibe: {
31
-
name: string
32
-
mood: string
33
-
emoji?: string
34
-
color?: string
35
-
}) => {
36
-
const { data } = await axios.post(`${API_BASE}/vibes`, vibe)
37
-
return data
38
-
},
39
-
40
-
joinVibe: async (vibeUri: string, cid: string) => {
41
-
const { data } = await axios.post(`${API_BASE}/vibes/${encodeURIComponent(vibeUri)}/join`, { cid })
42
-
return data
43
-
},
44
-
}
-1
client/src/assets/react.svg
-1
client/src/assets/react.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
-74
client/src/components/BlipList.tsx
-74
client/src/components/BlipList.tsx
···
1
-
import { Link } from 'react-router-dom'
2
-
import type { Blip } from '../api/blips'
3
-
import { formatDistance } from '../utils/date'
4
-
5
-
interface BlipListProps {
6
-
blips: Blip[]
7
-
}
8
-
9
-
export function BlipList({ blips }: BlipListProps) {
10
-
if (blips.length === 0) {
11
-
return (
12
-
<div className="empty-state">
13
-
<p>No blips detected on the radar yet.</p>
14
-
<p>
15
-
<Link to="/submit">Transmit the first blip</Link>
16
-
</p>
17
-
</div>
18
-
)
19
-
}
20
-
21
-
return (
22
-
<div className="blip-list">
23
-
{blips.map((blip) => (
24
-
<div key={blip.uri} className="blip-item">
25
-
<div className="blip-grooves">{blip.grooves}</div>
26
-
<div className="blip-content">
27
-
{blip.url ? (
28
-
<a
29
-
href={blip.url}
30
-
className="blip-title"
31
-
target="_blank"
32
-
rel="noopener noreferrer"
33
-
>
34
-
{blip.title}
35
-
</a>
36
-
) : (
37
-
<span className="blip-title">{blip.title}</span>
38
-
)}
39
-
40
-
{blip.body && (
41
-
<div className="blip-body">
42
-
{blip.body.length > 200
43
-
? `${blip.body.substring(0, 200)}...`
44
-
: blip.body}
45
-
</div>
46
-
)}
47
-
48
-
<div className="blip-meta">
49
-
<span>
50
-
{blip.authorHandle ? `@${blip.authorHandle}` : 'anonymous'} · {formatDistance(blip.createdAt)}
51
-
</span>
52
-
{blip.vibeName && (
53
-
<span className="blip-vibe">
54
-
· <Link to={`/vibe/${encodeURIComponent(blip.vibeUri!)}`} className="vibe-link">
55
-
{blip.vibeName}
56
-
</Link>
57
-
</span>
58
-
)}
59
-
{blip.tags && blip.tags.length > 0 && (
60
-
<span className="blip-tags">
61
-
{blip.tags.map((tag) => (
62
-
<Link key={tag} to={`/tag/${tag}`} className="tag">
63
-
{tag}
64
-
</Link>
65
-
))}
66
-
</span>
67
-
)}
68
-
</div>
69
-
</div>
70
-
</div>
71
-
))}
72
-
</div>
73
-
)
74
-
}
-28
client/src/hooks/useBlips.ts
-28
client/src/hooks/useBlips.ts
···
1
-
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
2
-
import { blipsApi } from '../api/blips'
3
-
4
-
export const useBlips = () => {
5
-
return useQuery({
6
-
queryKey: ['blips'],
7
-
queryFn: blipsApi.getBlips,
8
-
})
9
-
}
10
-
11
-
export const useBlipsByTag = (tag: string) => {
12
-
return useQuery({
13
-
queryKey: ['blips', 'tag', tag],
14
-
queryFn: () => blipsApi.getBlipsByTag(tag),
15
-
enabled: !!tag,
16
-
})
17
-
}
18
-
19
-
export const useCreateBlip = () => {
20
-
const queryClient = useQueryClient()
21
-
22
-
return useMutation({
23
-
mutationFn: blipsApi.createBlip,
24
-
onSuccess: () => {
25
-
queryClient.invalidateQueries({ queryKey: ['blips'] })
26
-
},
27
-
})
28
-
}
-48
client/src/hooks/useVibes.ts
-48
client/src/hooks/useVibes.ts
···
1
-
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
2
-
import { vibesApi } from '../api/vibes'
3
-
4
-
export const useVibes = () => {
5
-
return useQuery({
6
-
queryKey: ['vibes'],
7
-
queryFn: vibesApi.getVibes,
8
-
})
9
-
}
10
-
11
-
export const useEmergingVibes = () => {
12
-
return useQuery({
13
-
queryKey: ['vibes', 'emerging'],
14
-
queryFn: vibesApi.getEmergingVibes,
15
-
refetchInterval: 10000, // Refresh every 10 seconds to see progress
16
-
})
17
-
}
18
-
19
-
export const useVibeBlips = (vibeUri: string) => {
20
-
return useQuery({
21
-
queryKey: ['vibes', vibeUri, 'blips'],
22
-
queryFn: () => vibesApi.getVibeBlips(vibeUri),
23
-
enabled: !!vibeUri,
24
-
})
25
-
}
26
-
27
-
export const useCreateVibe = () => {
28
-
const queryClient = useQueryClient()
29
-
30
-
return useMutation({
31
-
mutationFn: vibesApi.createVibe,
32
-
onSuccess: () => {
33
-
queryClient.invalidateQueries({ queryKey: ['vibes'] })
34
-
},
35
-
})
36
-
}
37
-
38
-
export const useJoinVibe = () => {
39
-
const queryClient = useQueryClient()
40
-
41
-
return useMutation({
42
-
mutationFn: ({ vibeUri, cid }: { vibeUri: string; cid: string }) =>
43
-
vibesApi.joinVibe(vibeUri, cid),
44
-
onSuccess: () => {
45
-
queryClient.invalidateQueries({ queryKey: ['vibes'] })
46
-
},
47
-
})
48
-
}
-415
client/src/index.css
-415
client/src/index.css
···
1
-
:root {
2
-
--blonk-blue: #3366cc;
3
-
--blonk-light-blue: #6699ff;
4
-
--blonk-gray: #666666;
5
-
--blonk-light-gray: #cccccc;
6
-
--blonk-bg: #f8f8f8;
7
-
--blonk-white: #ffffff;
8
-
}
9
-
10
-
* {
11
-
margin: 0;
12
-
padding: 0;
13
-
box-sizing: border-box;
14
-
}
15
-
16
-
body {
17
-
font-family: Verdana, Arial, sans-serif;
18
-
font-size: 11px;
19
-
line-height: 1.4;
20
-
color: #333;
21
-
background-color: var(--blonk-bg);
22
-
margin: 0;
23
-
}
24
-
25
-
.app {
26
-
min-height: 100vh;
27
-
display: flex;
28
-
flex-direction: column;
29
-
}
30
-
31
-
.container {
32
-
max-width: 800px;
33
-
margin: 0 auto;
34
-
padding: 20px;
35
-
width: 100%;
36
-
}
37
-
38
-
header {
39
-
background-color: var(--blonk-blue);
40
-
color: var(--blonk-white);
41
-
padding: 10px 0;
42
-
margin-bottom: 20px;
43
-
}
44
-
45
-
header .container {
46
-
display: flex;
47
-
justify-content: space-between;
48
-
align-items: center;
49
-
padding: 0 20px;
50
-
}
51
-
52
-
header h1 {
53
-
font-size: 24px;
54
-
font-weight: normal;
55
-
letter-spacing: -1px;
56
-
}
57
-
58
-
header h1 a {
59
-
color: var(--blonk-white);
60
-
text-decoration: none;
61
-
}
62
-
63
-
header nav a {
64
-
color: var(--blonk-white);
65
-
text-decoration: none;
66
-
margin-left: 15px;
67
-
font-size: 12px;
68
-
}
69
-
70
-
header nav a:hover {
71
-
text-decoration: underline;
72
-
}
73
-
74
-
.blip-list {
75
-
background-color: var(--blonk-white);
76
-
border: 1px solid var(--blonk-light-gray);
77
-
}
78
-
79
-
.blip-item {
80
-
padding: 8px 10px;
81
-
border-bottom: 1px solid #f0f0f0;
82
-
display: flex;
83
-
align-items: start;
84
-
gap: 10px;
85
-
}
86
-
87
-
.blip-item:last-child {
88
-
border-bottom: none;
89
-
}
90
-
91
-
.blip-grooves {
92
-
color: var(--blonk-gray);
93
-
font-size: 10px;
94
-
min-width: 30px;
95
-
text-align: right;
96
-
padding-top: 2px;
97
-
}
98
-
99
-
.blip-content {
100
-
flex: 1;
101
-
}
102
-
103
-
.blip-title {
104
-
color: var(--blonk-blue);
105
-
text-decoration: none;
106
-
font-size: 12px;
107
-
font-weight: normal;
108
-
}
109
-
110
-
.blip-title:hover {
111
-
text-decoration: underline;
112
-
}
113
-
114
-
.blip-body {
115
-
color: #666;
116
-
font-size: 10px;
117
-
margin-top: 2px;
118
-
}
119
-
120
-
.blip-meta {
121
-
color: var(--blonk-gray);
122
-
font-size: 10px;
123
-
margin-top: 2px;
124
-
}
125
-
126
-
.blip-tags {
127
-
display: inline;
128
-
margin-left: 5px;
129
-
}
130
-
131
-
.tag {
132
-
color: var(--blonk-gray);
133
-
text-decoration: none;
134
-
margin-right: 5px;
135
-
font-size: 10px;
136
-
}
137
-
138
-
.tag:hover {
139
-
color: var(--blonk-blue);
140
-
text-decoration: underline;
141
-
}
142
-
143
-
.submit-form {
144
-
background-color: var(--blonk-white);
145
-
border: 1px solid var(--blonk-light-gray);
146
-
padding: 20px;
147
-
margin-top: 20px;
148
-
}
149
-
150
-
.form-group {
151
-
margin-bottom: 15px;
152
-
}
153
-
154
-
.form-group label {
155
-
display: block;
156
-
color: var(--blonk-gray);
157
-
margin-bottom: 3px;
158
-
font-size: 11px;
159
-
}
160
-
161
-
.form-group input[type="text"],
162
-
.form-group input[type="url"],
163
-
.form-group textarea {
164
-
width: 100%;
165
-
padding: 4px 6px;
166
-
border: 1px solid var(--blonk-light-gray);
167
-
font-family: Verdana, Arial, sans-serif;
168
-
font-size: 11px;
169
-
}
170
-
171
-
.form-group textarea {
172
-
height: 60px;
173
-
resize: vertical;
174
-
}
175
-
176
-
.form-note {
177
-
color: var(--blonk-gray);
178
-
font-size: 10px;
179
-
margin-top: 2px;
180
-
}
181
-
182
-
.submit-button {
183
-
background-color: var(--blonk-blue);
184
-
color: var(--blonk-white);
185
-
border: none;
186
-
padding: 5px 15px;
187
-
font-size: 11px;
188
-
cursor: pointer;
189
-
border-radius: 0;
190
-
}
191
-
192
-
.submit-button:hover {
193
-
background-color: var(--blonk-light-blue);
194
-
}
195
-
196
-
.submit-button:disabled {
197
-
opacity: 0.6;
198
-
cursor: not-allowed;
199
-
}
200
-
201
-
.vibe-select {
202
-
width: 100%;
203
-
padding: 4px 6px;
204
-
border: 1px solid var(--blonk-light-gray);
205
-
font-family: Verdana, Arial, sans-serif;
206
-
font-size: 11px;
207
-
background-color: var(--blonk-white);
208
-
}
209
-
210
-
.blip-vibe {
211
-
color: var(--blonk-gray);
212
-
font-size: 10px;
213
-
}
214
-
215
-
.vibe-link {
216
-
color: var(--blonk-blue);
217
-
text-decoration: none;
218
-
font-style: italic;
219
-
}
220
-
221
-
.vibe-link:hover {
222
-
text-decoration: underline;
223
-
}
224
-
225
-
.page-title {
226
-
font-size: 16px;
227
-
color: var(--blonk-gray);
228
-
margin-bottom: 15px;
229
-
font-weight: normal;
230
-
display: flex;
231
-
justify-content: space-between;
232
-
align-items: center;
233
-
}
234
-
235
-
.back-link {
236
-
font-size: 11px;
237
-
color: var(--blonk-blue);
238
-
text-decoration: none;
239
-
}
240
-
241
-
.back-link:hover {
242
-
text-decoration: underline;
243
-
}
244
-
245
-
.empty-state {
246
-
text-align: center;
247
-
padding: 40px;
248
-
color: var(--blonk-gray);
249
-
background-color: var(--blonk-white);
250
-
border: 1px solid var(--blonk-light-gray);
251
-
}
252
-
253
-
.loading {
254
-
text-align: center;
255
-
padding: 40px;
256
-
color: var(--blonk-gray);
257
-
}
258
-
259
-
.error {
260
-
text-align: center;
261
-
padding: 40px;
262
-
color: #cc3333;
263
-
}
264
-
265
-
.error-message {
266
-
color: #cc3333;
267
-
margin-bottom: 10px;
268
-
font-size: 11px;
269
-
}
270
-
271
-
.radar-icon {
272
-
display: inline-block;
273
-
animation: pulse 2s infinite;
274
-
margin-right: 5px;
275
-
}
276
-
277
-
@keyframes pulse {
278
-
0% { opacity: 1; }
279
-
50% { opacity: 0.5; }
280
-
100% { opacity: 1; }
281
-
}
282
-
283
-
.vibes-grid {
284
-
display: grid;
285
-
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
286
-
gap: 15px;
287
-
margin-top: 20px;
288
-
}
289
-
290
-
.vibe-card {
291
-
background-color: var(--blonk-white);
292
-
border: 2px solid;
293
-
padding: 20px;
294
-
text-align: center;
295
-
text-decoration: none;
296
-
color: inherit;
297
-
transition: transform 0.2s;
298
-
}
299
-
300
-
.vibe-card:hover {
301
-
transform: translateY(-2px);
302
-
}
303
-
304
-
.vibe-emoji {
305
-
font-size: 32px;
306
-
margin-bottom: 10px;
307
-
}
308
-
309
-
.vibe-name {
310
-
font-size: 14px;
311
-
color: var(--blonk-blue);
312
-
margin-bottom: 5px;
313
-
}
314
-
315
-
.vibe-mood {
316
-
font-size: 10px;
317
-
color: var(--blonk-gray);
318
-
line-height: 1.3;
319
-
margin-bottom: 10px;
320
-
}
321
-
322
-
.vibe-stats {
323
-
font-size: 10px;
324
-
color: var(--blonk-gray);
325
-
}
326
-
327
-
.vibe-info {
328
-
margin-top: 30px;
329
-
padding: 20px;
330
-
background-color: var(--blonk-white);
331
-
border: 1px solid var(--blonk-light-gray);
332
-
}
333
-
334
-
.vibe-info h3 {
335
-
font-size: 14px;
336
-
color: var(--blonk-gray);
337
-
margin-bottom: 10px;
338
-
font-weight: normal;
339
-
}
340
-
341
-
.vibe-info p {
342
-
font-size: 11px;
343
-
color: var(--blonk-gray);
344
-
margin-bottom: 5px;
345
-
}
346
-
347
-
.vibe-info code {
348
-
background-color: var(--blonk-bg);
349
-
padding: 2px 4px;
350
-
font-family: monospace;
351
-
font-size: 10px;
352
-
}
353
-
354
-
.emerging-info {
355
-
background-color: var(--blonk-white);
356
-
border: 1px solid var(--blonk-light-gray);
357
-
padding: 15px;
358
-
margin-bottom: 20px;
359
-
font-size: 11px;
360
-
color: var(--blonk-gray);
361
-
}
362
-
363
-
.emerging-list {
364
-
background-color: var(--blonk-white);
365
-
border: 1px solid var(--blonk-light-gray);
366
-
}
367
-
368
-
.emerging-item {
369
-
padding: 15px;
370
-
border-bottom: 1px solid #f0f0f0;
371
-
}
372
-
373
-
.emerging-item:last-child {
374
-
border-bottom: none;
375
-
}
376
-
377
-
.emerging-header {
378
-
display: flex;
379
-
justify-content: space-between;
380
-
align-items: center;
381
-
margin-bottom: 10px;
382
-
}
383
-
384
-
.emerging-name {
385
-
font-size: 14px;
386
-
color: var(--blonk-blue);
387
-
font-weight: normal;
388
-
margin: 0;
389
-
}
390
-
391
-
.emerging-meta {
392
-
font-size: 12px;
393
-
color: var(--blonk-gray);
394
-
font-weight: bold;
395
-
}
396
-
397
-
.progress-bar {
398
-
width: 100%;
399
-
height: 8px;
400
-
background-color: var(--blonk-bg);
401
-
border-radius: 4px;
402
-
overflow: hidden;
403
-
margin-bottom: 8px;
404
-
}
405
-
406
-
.progress-fill {
407
-
height: 100%;
408
-
background-color: var(--blonk-blue);
409
-
transition: width 0.3s ease;
410
-
}
411
-
412
-
.emerging-details {
413
-
font-size: 10px;
414
-
color: var(--blonk-gray);
415
-
}
-27
client/src/main.tsx
-27
client/src/main.tsx
···
1
-
import { StrictMode } from 'react'
2
-
import { createRoot } from 'react-dom/client'
3
-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
4
-
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
5
-
import { BrowserRouter } from 'react-router-dom'
6
-
import App from './App.tsx'
7
-
import './index.css'
8
-
9
-
const queryClient = new QueryClient({
10
-
defaultOptions: {
11
-
queries: {
12
-
staleTime: 1000 * 60 * 5, // 5 minutes
13
-
retry: 1,
14
-
},
15
-
},
16
-
})
17
-
18
-
createRoot(document.getElementById('root')!).render(
19
-
<StrictMode>
20
-
<QueryClientProvider client={queryClient}>
21
-
<BrowserRouter>
22
-
<App />
23
-
</BrowserRouter>
24
-
<ReactQueryDevtools initialIsOpen={false} />
25
-
</QueryClientProvider>
26
-
</StrictMode>,
27
-
)
-64
client/src/pages/Emerging.tsx
-64
client/src/pages/Emerging.tsx
···
1
-
import { Link } from 'react-router-dom'
2
-
import { useEmergingVibes } from '../hooks/useVibes'
3
-
import { formatDistance } from '../utils/date'
4
-
5
-
export function Emerging() {
6
-
const { data: emergingVibes, isLoading, error } = useEmergingVibes()
7
-
8
-
if (isLoading) {
9
-
return <div className="loading">Scanning for emerging vibes...</div>
10
-
}
11
-
12
-
if (error) {
13
-
return <div className="error">Failed to detect emerging vibes</div>
14
-
}
15
-
16
-
return (
17
-
<>
18
-
<h2 className="page-title">
19
-
emerging vibes
20
-
<Link to="/vibes" className="back-link">← established vibes</Link>
21
-
</h2>
22
-
23
-
<div className="emerging-info">
24
-
<p>These vibes are gaining momentum. A vibe materializes when it reaches 5 unique users OR 10 total mentions!</p>
25
-
</div>
26
-
27
-
{emergingVibes && emergingVibes.length > 0 ? (
28
-
<div className="emerging-list">
29
-
{emergingVibes.map(vibe => (
30
-
<div key={vibe.vibeName} className="emerging-item">
31
-
<div className="emerging-header">
32
-
<h3 className="emerging-name">
33
-
#vibe-{vibe.vibeName}
34
-
</h3>
35
-
<div className="emerging-meta">
36
-
{vibe.mentionCount}/5 unique ({vibe.totalMentionCount}/10 total)
37
-
</div>
38
-
</div>
39
-
40
-
<div className="progress-bar">
41
-
<div
42
-
className="progress-fill"
43
-
style={{ width: `${vibe.progress}%` }}
44
-
/>
45
-
</div>
46
-
47
-
<div className="emerging-details">
48
-
<span>First detected {formatDistance(vibe.firstMentioned)} ago</span>
49
-
{vibe.lastMentioned !== vibe.firstMentioned && (
50
-
<span> · Last seen {formatDistance(vibe.lastMentioned)} ago</span>
51
-
)}
52
-
</div>
53
-
</div>
54
-
))}
55
-
</div>
56
-
) : (
57
-
<div className="empty-state">
58
-
<p>No emerging vibes detected yet.</p>
59
-
<p>Start using <code>#vibe-something_new</code> in your blips!</p>
60
-
</div>
61
-
)}
62
-
</>
63
-
)
64
-
}
-21
client/src/pages/Home.tsx
-21
client/src/pages/Home.tsx
···
1
-
import { useBlips } from '../hooks/useBlips'
2
-
import { BlipList } from '../components/BlipList'
3
-
4
-
export function Home() {
5
-
const { data: blips, isLoading, error } = useBlips()
6
-
7
-
if (isLoading) {
8
-
return <div className="loading">Scanning radar...</div>
9
-
}
10
-
11
-
if (error) {
12
-
return <div className="error">Failed to connect to radar</div>
13
-
}
14
-
15
-
return (
16
-
<>
17
-
<h2 className="page-title">recent blips on the radar</h2>
18
-
<BlipList blips={blips || []} />
19
-
</>
20
-
)
21
-
}
-134
client/src/pages/Submit.tsx
-134
client/src/pages/Submit.tsx
···
1
-
import { useState } from 'react'
2
-
import { useNavigate } from 'react-router-dom'
3
-
import { useCreateBlip } from '../hooks/useBlips'
4
-
import { useVibes } from '../hooks/useVibes'
5
-
6
-
export function Submit() {
7
-
const navigate = useNavigate()
8
-
const createBlip = useCreateBlip()
9
-
const { data: vibes } = useVibes()
10
-
const [formData, setFormData] = useState({
11
-
title: '',
12
-
url: '',
13
-
body: '',
14
-
tags: '',
15
-
vibeUri: '',
16
-
})
17
-
18
-
const handleSubmit = async (e: React.FormEvent) => {
19
-
e.preventDefault()
20
-
21
-
const tagArray = formData.tags
22
-
.split(' ')
23
-
.filter(tag => tag.length > 0)
24
-
.map(tag => tag.toLowerCase())
25
-
26
-
const selectedVibe = vibes?.find(v => v.uri === formData.vibeUri)
27
-
28
-
try {
29
-
await createBlip.mutateAsync({
30
-
title: formData.title,
31
-
url: formData.url || undefined,
32
-
body: formData.body || undefined,
33
-
tags: tagArray,
34
-
vibe: selectedVibe ? {
35
-
uri: selectedVibe.uri,
36
-
cid: selectedVibe.cid,
37
-
name: selectedVibe.name,
38
-
} : undefined,
39
-
})
40
-
navigate('/')
41
-
} catch (error) {
42
-
console.error('Failed to create blip:', error)
43
-
}
44
-
}
45
-
46
-
return (
47
-
<>
48
-
<h2 className="page-title">transmit a new blip</h2>
49
-
50
-
<form onSubmit={handleSubmit} className="submit-form">
51
-
<div className="form-group">
52
-
<label htmlFor="title">signal</label>
53
-
<input
54
-
type="text"
55
-
id="title"
56
-
name="title"
57
-
required
58
-
placeholder="What's on the radar?"
59
-
value={formData.title}
60
-
onChange={(e) => setFormData({ ...formData, title: e.target.value })}
61
-
/>
62
-
</div>
63
-
64
-
<div className="form-group">
65
-
<label htmlFor="url">frequency (optional)</label>
66
-
<input
67
-
type="url"
68
-
id="url"
69
-
name="url"
70
-
placeholder="https://..."
71
-
value={formData.url}
72
-
onChange={(e) => setFormData({ ...formData, url: e.target.value })}
73
-
/>
74
-
<div className="form-note">link to external content</div>
75
-
</div>
76
-
77
-
<div className="form-group">
78
-
<label htmlFor="body">transmission details (optional)</label>
79
-
<textarea
80
-
id="body"
81
-
name="body"
82
-
placeholder="Additional context or thoughts..."
83
-
value={formData.body}
84
-
onChange={(e) => setFormData({ ...formData, body: e.target.value })}
85
-
/>
86
-
</div>
87
-
88
-
<div className="form-group">
89
-
<label htmlFor="vibe">vibe</label>
90
-
<select
91
-
id="vibe"
92
-
name="vibe"
93
-
value={formData.vibeUri}
94
-
onChange={(e) => setFormData({ ...formData, vibeUri: e.target.value })}
95
-
className="vibe-select"
96
-
>
97
-
<option value="">-- choose a vibe --</option>
98
-
{vibes?.map(vibe => (
99
-
<option key={vibe.uri} value={vibe.uri}>
100
-
{vibe.emoji} {vibe.name} - {vibe.mood}
101
-
</option>
102
-
))}
103
-
</select>
104
-
<div className="form-note">select the mood for your blip</div>
105
-
</div>
106
-
107
-
<div className="form-group">
108
-
<label htmlFor="tags">tags</label>
109
-
<input
110
-
type="text"
111
-
id="tags"
112
-
name="tags"
113
-
placeholder="space separated tags"
114
-
value={formData.tags}
115
-
onChange={(e) => setFormData({ ...formData, tags: e.target.value })}
116
-
/>
117
-
<div className="form-note">e.g., programming atproto bluesky</div>
118
-
</div>
119
-
120
-
{createBlip.isError && (
121
-
<div className="error-message">Failed to transmit blip</div>
122
-
)}
123
-
124
-
<button
125
-
type="submit"
126
-
className="submit-button"
127
-
disabled={createBlip.isPending}
128
-
>
129
-
{createBlip.isPending ? 'transmitting...' : 'transmit blip'}
130
-
</button>
131
-
</form>
132
-
</>
133
-
)
134
-
}
-26
client/src/pages/Tag.tsx
-26
client/src/pages/Tag.tsx
···
1
-
import { useParams, Link } from 'react-router-dom'
2
-
import { useBlipsByTag } from '../hooks/useBlips'
3
-
import { BlipList } from '../components/BlipList'
4
-
5
-
export function Tag() {
6
-
const { tag } = useParams<{ tag: string }>()
7
-
const { data: blips, isLoading, error } = useBlipsByTag(tag || '')
8
-
9
-
if (isLoading) {
10
-
return <div className="loading">Scanning radar for tag...</div>
11
-
}
12
-
13
-
if (error) {
14
-
return <div className="error">Failed to connect to radar</div>
15
-
}
16
-
17
-
return (
18
-
<>
19
-
<h2 className="page-title">
20
-
blips tagged: {tag}
21
-
<Link to="/" className="back-link">← all blips</Link>
22
-
</h2>
23
-
<BlipList blips={blips || []} />
24
-
</>
25
-
)
26
-
}
-30
client/src/pages/Vibe.tsx
-30
client/src/pages/Vibe.tsx
···
1
-
import { useParams, Link } from 'react-router-dom'
2
-
import { useVibeBlips } from '../hooks/useVibes'
3
-
import { BlipList } from '../components/BlipList'
4
-
5
-
export function Vibe() {
6
-
const { vibeUri } = useParams<{ vibeUri: string }>()
7
-
const decodedUri = decodeURIComponent(vibeUri || '')
8
-
const { data: blips, isLoading, error } = useVibeBlips(decodedUri)
9
-
10
-
if (isLoading) {
11
-
return <div className="loading">Tuning into vibe frequency...</div>
12
-
}
13
-
14
-
if (error) {
15
-
return <div className="error">Failed to connect to vibe</div>
16
-
}
17
-
18
-
// Get vibe name from the first blip (hacky but works for now)
19
-
const vibeName = blips?.[0]?.vibeName || 'unknown vibe'
20
-
21
-
return (
22
-
<>
23
-
<h2 className="page-title">
24
-
vibe: {vibeName}
25
-
<Link to="/vibes" className="back-link">← all vibes</Link>
26
-
</h2>
27
-
<BlipList blips={blips || []} />
28
-
</>
29
-
)
30
-
}
-53
client/src/pages/Vibes.tsx
-53
client/src/pages/Vibes.tsx
···
1
-
import { Link } from 'react-router-dom'
2
-
import { useVibes } from '../hooks/useVibes'
3
-
4
-
export function Vibes() {
5
-
const { data: vibes, isLoading, error } = useVibes()
6
-
7
-
if (isLoading) {
8
-
return <div className="loading">Tuning into vibes...</div>
9
-
}
10
-
11
-
if (error) {
12
-
return <div className="error">Failed to connect to vibe frequencies</div>
13
-
}
14
-
15
-
return (
16
-
<>
17
-
<h2 className="page-title">
18
-
vibe frequencies
19
-
<Link to="/emerging" className="back-link">→ emerging vibes</Link>
20
-
</h2>
21
-
22
-
<div className="vibes-grid">
23
-
{vibes?.map(vibe => (
24
-
<Link
25
-
key={vibe.uri}
26
-
to={`/vibe/${encodeURIComponent(vibe.uri)}`}
27
-
className="vibe-card"
28
-
style={{ borderColor: vibe.color || 'var(--blonk-light-gray)' }}
29
-
>
30
-
<div className="vibe-emoji">{vibe.emoji || '📡'}</div>
31
-
<div className="vibe-name">{vibe.name}</div>
32
-
<div className="vibe-mood">{vibe.mood}</div>
33
-
<div className="vibe-stats">{vibe.memberCount} members</div>
34
-
</Link>
35
-
))}
36
-
</div>
37
-
38
-
{(!vibes || vibes.length === 0) && (
39
-
<div className="empty-state">
40
-
<p>No vibes discovered yet.</p>
41
-
<p>To create a vibe, use <code>#vibe-YOUR_VIBE</code> in your blips!</p>
42
-
<p className="form-note">When 5 different people use the same vibe hashtag, it becomes real.</p>
43
-
</div>
44
-
)}
45
-
46
-
<div className="vibe-info">
47
-
<h3>How vibes are born:</h3>
48
-
<p>Include <code>#vibe-something_cool</code> in your blips. When 5 unique users mention the same vibe, it materializes!</p>
49
-
<p className="form-note">Vibe names must use underscores instead of spaces (e.g., <code>#vibe-late_night_coding</code>)</p>
50
-
</div>
51
-
</>
52
-
)
53
-
}
-12
client/src/utils/date.ts
-12
client/src/utils/date.ts
···
1
-
export function formatDistance(dateString: string): string {
2
-
const date = new Date(dateString)
3
-
const now = new Date()
4
-
const seconds = Math.floor((now.getTime() - date.getTime()) / 1000)
5
-
6
-
if (seconds < 60) return 'just now'
7
-
if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`
8
-
if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`
9
-
if (seconds < 604800) return `${Math.floor(seconds / 86400)}d ago`
10
-
11
-
return date.toLocaleDateString()
12
-
}
-1
client/src/vite-env.d.ts
-1
client/src/vite-env.d.ts
···
1
-
/// <reference types="vite/client" />
-28
client/tsconfig.app.json
-28
client/tsconfig.app.json
···
1
-
{
2
-
"compilerOptions": {
3
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
-
"target": "ES2020",
5
-
"useDefineForClassFields": true,
6
-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
7
-
"module": "ESNext",
8
-
"skipLibCheck": true,
9
-
10
-
/* Bundler mode */
11
-
"moduleResolution": "bundler",
12
-
"allowImportingTsExtensions": true,
13
-
"verbatimModuleSyntax": true,
14
-
"moduleDetection": "force",
15
-
"noEmit": true,
16
-
"emitDeclarationOnly": false,
17
-
"jsx": "react-jsx",
18
-
19
-
/* Linting */
20
-
"strict": true,
21
-
"noUnusedLocals": true,
22
-
"noUnusedParameters": true,
23
-
"erasableSyntaxOnly": true,
24
-
"noFallthroughCasesInSwitch": true,
25
-
"noUncheckedSideEffectImports": true
26
-
},
27
-
"include": ["src"]
28
-
}
-7
client/tsconfig.json
-7
client/tsconfig.json
-25
client/tsconfig.node.json
-25
client/tsconfig.node.json
···
1
-
{
2
-
"compilerOptions": {
3
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
-
"target": "ES2022",
5
-
"lib": ["ES2023"],
6
-
"module": "ESNext",
7
-
"skipLibCheck": true,
8
-
9
-
/* Bundler mode */
10
-
"moduleResolution": "bundler",
11
-
"allowImportingTsExtensions": true,
12
-
"verbatimModuleSyntax": true,
13
-
"moduleDetection": "force",
14
-
"noEmit": true,
15
-
16
-
/* Linting */
17
-
"strict": true,
18
-
"noUnusedLocals": true,
19
-
"noUnusedParameters": true,
20
-
"erasableSyntaxOnly": true,
21
-
"noFallthroughCasesInSwitch": true,
22
-
"noUncheckedSideEffectImports": true
23
-
},
24
-
"include": ["vite.config.ts"]
25
-
}
-16
client/vite.config.ts
-16
client/vite.config.ts
···
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
-
server: {
8
-
port: 5173,
9
-
proxy: {
10
-
'/api': {
11
-
target: 'http://localhost:3001',
12
-
changeOrigin: true,
13
-
},
14
-
},
15
-
},
16
-
})
-7855
package-lock.json
-7855
package-lock.json
···
1
-
{
2
-
"name": "blonk",
3
-
"version": "1.0.0",
4
-
"lockfileVersion": 3,
5
-
"requires": true,
6
-
"packages": {
7
-
"": {
8
-
"name": "blonk",
9
-
"version": "1.0.0",
10
-
"license": "ISC",
11
-
"dependencies": {
12
-
"@atproto/api": "^0.15.16",
13
-
"@atproto/lexicon": "^0.4.11",
14
-
"@atproto/repo": "^0.8.2",
15
-
"@atproto/sync": "^0.1.26",
16
-
"@ipld/car": "^5.4.2",
17
-
"@skyware/firehose": "^0.5.1",
18
-
"@types/better-sqlite3": "^7.6.13",
19
-
"@types/cors": "^2.8.19",
20
-
"@types/express": "^5.0.3",
21
-
"@types/express-session": "^1.18.2",
22
-
"@types/node": "^24.0.3",
23
-
"@types/ws": "^8.18.1",
24
-
"better-sqlite3": "^11.10.0",
25
-
"cbor-x": "^1.6.0",
26
-
"cors": "^2.8.5",
27
-
"dotenv": "^16.5.0",
28
-
"ejs": "^3.1.10",
29
-
"express": "^5.1.0",
30
-
"express-ejs-layouts": "^2.5.1",
31
-
"express-session": "^1.18.1",
32
-
"multiformats": "^13.3.7",
33
-
"tsx": "^4.20.3",
34
-
"typescript": "^5.8.3",
35
-
"ws": "^8.18.2"
36
-
},
37
-
"devDependencies": {
38
-
"@types/jest": "^30.0.0",
39
-
"@types/supertest": "^6.0.3",
40
-
"concurrently": "^9.1.2",
41
-
"jest": "^30.0.2",
42
-
"supertest": "^7.1.1",
43
-
"ts-jest": "^29.4.0"
44
-
}
45
-
},
46
-
"node_modules/@ampproject/remapping": {
47
-
"version": "2.3.0",
48
-
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
49
-
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
50
-
"dev": true,
51
-
"license": "Apache-2.0",
52
-
"dependencies": {
53
-
"@jridgewell/gen-mapping": "^0.3.5",
54
-
"@jridgewell/trace-mapping": "^0.3.24"
55
-
},
56
-
"engines": {
57
-
"node": ">=6.0.0"
58
-
}
59
-
},
60
-
"node_modules/@atcute/car": {
61
-
"version": "3.1.1",
62
-
"resolved": "https://registry.npmjs.org/@atcute/car/-/car-3.1.1.tgz",
63
-
"integrity": "sha512-yhez/LqIl0zHubG6z/G/gqWYHmg7wJ5L4jNkbXj5FvZ4eOvmzsw8+ojbdq6wfMU4p5NhP0pUJNLkTZHbYSPmLg==",
64
-
"license": "MIT",
65
-
"dependencies": {
66
-
"@atcute/cbor": "^2.2.4",
67
-
"@atcute/cid": "^2.2.3",
68
-
"@atcute/uint8array": "^1.0.2",
69
-
"@atcute/varint": "^1.0.2",
70
-
"yocto-queue": "^1.2.1"
71
-
}
72
-
},
73
-
"node_modules/@atcute/cbor": {
74
-
"version": "2.2.4",
75
-
"resolved": "https://registry.npmjs.org/@atcute/cbor/-/cbor-2.2.4.tgz",
76
-
"integrity": "sha512-8Y/OTM8zs5VInOCjfx4f9Idiiz7ygM/FkfWv/HW3/ZUsXczn1xk7GzTBbm4P5crn4C5luwDGpO7FwClMOERrow==",
77
-
"license": "MIT",
78
-
"dependencies": {
79
-
"@atcute/cid": "^2.2.3",
80
-
"@atcute/multibase": "^1.1.4",
81
-
"@atcute/uint8array": "^1.0.2"
82
-
}
83
-
},
84
-
"node_modules/@atcute/cid": {
85
-
"version": "2.2.3",
86
-
"resolved": "https://registry.npmjs.org/@atcute/cid/-/cid-2.2.3.tgz",
87
-
"integrity": "sha512-WEzNSL1EuCVtCQDFYEBIm4dEP6PcMEwi8IYUVIWvT77eO5EjY58F63z5T4qMABxSBM0+L4kqMxypdL1Fzf6LZw==",
88
-
"license": "MIT",
89
-
"dependencies": {
90
-
"@atcute/multibase": "^1.1.4",
91
-
"@atcute/uint8array": "^1.0.2"
92
-
}
93
-
},
94
-
"node_modules/@atcute/multibase": {
95
-
"version": "1.1.4",
96
-
"resolved": "https://registry.npmjs.org/@atcute/multibase/-/multibase-1.1.4.tgz",
97
-
"integrity": "sha512-NUf5AeeSOmuZHGU+4GAaMtISJoG+ZHtW/vUVA4lK/YDt/7LODAW0Fd0NNIIUPVUoW0xJS6zSEIWvwLLuxmEHhA==",
98
-
"license": "MIT",
99
-
"dependencies": {
100
-
"@atcute/uint8array": "^1.0.2"
101
-
}
102
-
},
103
-
"node_modules/@atcute/uint8array": {
104
-
"version": "1.0.3",
105
-
"resolved": "https://registry.npmjs.org/@atcute/uint8array/-/uint8array-1.0.3.tgz",
106
-
"integrity": "sha512-M/K+ihiVW8Pl2PFLzaC4E3l4JaZ1IH05Q0AbPWUC4cVHnd/gZ/1kAF5ngdtGvJeDMirHZ2VAy7OmAsPwR/2nlA==",
107
-
"license": "MIT"
108
-
},
109
-
"node_modules/@atcute/varint": {
110
-
"version": "1.0.2",
111
-
"resolved": "https://registry.npmjs.org/@atcute/varint/-/varint-1.0.2.tgz",
112
-
"integrity": "sha512-0O31hePzzr4O3NGWHUKKOyta6CGSL+AtN8iir8grGxu9jXyI7DBARlw6PbgKA6uTAvsXdpmRmF8MX+p0TsLnNg==",
113
-
"license": "MIT"
114
-
},
115
-
"node_modules/@atproto/api": {
116
-
"version": "0.15.16",
117
-
"resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.15.16.tgz",
118
-
"integrity": "sha512-ZNBrzBg2l0lHreKik1lJn8lrhAktwlY8NUPBU/hO9dwjAnDHQTiSzNFZt65dp9djmqZ75sX/VJ+heNuaJBvnhQ==",
119
-
"license": "MIT",
120
-
"dependencies": {
121
-
"@atproto/common-web": "^0.4.2",
122
-
"@atproto/lexicon": "^0.4.11",
123
-
"@atproto/syntax": "^0.4.0",
124
-
"@atproto/xrpc": "^0.7.0",
125
-
"await-lock": "^2.2.2",
126
-
"multiformats": "^9.9.0",
127
-
"tlds": "^1.234.0",
128
-
"zod": "^3.23.8"
129
-
}
130
-
},
131
-
"node_modules/@atproto/api/node_modules/multiformats": {
132
-
"version": "9.9.0",
133
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
134
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
135
-
"license": "(Apache-2.0 AND MIT)"
136
-
},
137
-
"node_modules/@atproto/common": {
138
-
"version": "0.4.11",
139
-
"resolved": "https://registry.npmjs.org/@atproto/common/-/common-0.4.11.tgz",
140
-
"integrity": "sha512-Knv0viYXNMfCdIE7jLUiWJKnnMfEwg+vz2epJQi8WOjqtqCFb3W/3Jn72ZiuovIfpdm13MaOiny6w2NErUQC6g==",
141
-
"license": "MIT",
142
-
"dependencies": {
143
-
"@atproto/common-web": "^0.4.2",
144
-
"@ipld/dag-cbor": "^7.0.3",
145
-
"cbor-x": "^1.5.1",
146
-
"iso-datestring-validator": "^2.2.2",
147
-
"multiformats": "^9.9.0",
148
-
"pino": "^8.21.0"
149
-
},
150
-
"engines": {
151
-
"node": ">=18.7.0"
152
-
}
153
-
},
154
-
"node_modules/@atproto/common-web": {
155
-
"version": "0.4.2",
156
-
"resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.2.tgz",
157
-
"integrity": "sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==",
158
-
"license": "MIT",
159
-
"dependencies": {
160
-
"graphemer": "^1.4.0",
161
-
"multiformats": "^9.9.0",
162
-
"uint8arrays": "3.0.0",
163
-
"zod": "^3.23.8"
164
-
}
165
-
},
166
-
"node_modules/@atproto/common-web/node_modules/multiformats": {
167
-
"version": "9.9.0",
168
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
169
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
170
-
"license": "(Apache-2.0 AND MIT)"
171
-
},
172
-
"node_modules/@atproto/common/node_modules/multiformats": {
173
-
"version": "9.9.0",
174
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
175
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
176
-
"license": "(Apache-2.0 AND MIT)"
177
-
},
178
-
"node_modules/@atproto/crypto": {
179
-
"version": "0.4.4",
180
-
"resolved": "https://registry.npmjs.org/@atproto/crypto/-/crypto-0.4.4.tgz",
181
-
"integrity": "sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==",
182
-
"license": "MIT",
183
-
"dependencies": {
184
-
"@noble/curves": "^1.7.0",
185
-
"@noble/hashes": "^1.6.1",
186
-
"uint8arrays": "3.0.0"
187
-
},
188
-
"engines": {
189
-
"node": ">=18.7.0"
190
-
}
191
-
},
192
-
"node_modules/@atproto/identity": {
193
-
"version": "0.4.8",
194
-
"resolved": "https://registry.npmjs.org/@atproto/identity/-/identity-0.4.8.tgz",
195
-
"integrity": "sha512-Z0sLnJ87SeNdAifT+rqpgE1Rc3layMMW25gfWNo4u40RGuRODbdfAZlTwBSU2r+Vk45hU+iE+xeQspfednCEnA==",
196
-
"license": "MIT",
197
-
"dependencies": {
198
-
"@atproto/common-web": "^0.4.2",
199
-
"@atproto/crypto": "^0.4.4"
200
-
},
201
-
"engines": {
202
-
"node": ">=18.7.0"
203
-
}
204
-
},
205
-
"node_modules/@atproto/lexicon": {
206
-
"version": "0.4.11",
207
-
"resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.11.tgz",
208
-
"integrity": "sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==",
209
-
"license": "MIT",
210
-
"dependencies": {
211
-
"@atproto/common-web": "^0.4.2",
212
-
"@atproto/syntax": "^0.4.0",
213
-
"iso-datestring-validator": "^2.2.2",
214
-
"multiformats": "^9.9.0",
215
-
"zod": "^3.23.8"
216
-
}
217
-
},
218
-
"node_modules/@atproto/lexicon/node_modules/multiformats": {
219
-
"version": "9.9.0",
220
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
221
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
222
-
"license": "(Apache-2.0 AND MIT)"
223
-
},
224
-
"node_modules/@atproto/repo": {
225
-
"version": "0.8.2",
226
-
"resolved": "https://registry.npmjs.org/@atproto/repo/-/repo-0.8.2.tgz",
227
-
"integrity": "sha512-lP0g5Uw3TUC2Tc7te8YKCpRoIhBYI+Uvn11fupGEaMcMjgLdYtB0Kc0AiqWXF42KqlBG9dAEoJITi2GRzDNHUg==",
228
-
"license": "MIT",
229
-
"dependencies": {
230
-
"@atproto/common": "^0.4.11",
231
-
"@atproto/common-web": "^0.4.2",
232
-
"@atproto/crypto": "^0.4.4",
233
-
"@atproto/lexicon": "^0.4.11",
234
-
"@ipld/dag-cbor": "^7.0.0",
235
-
"multiformats": "^9.9.0",
236
-
"uint8arrays": "3.0.0",
237
-
"varint": "^6.0.0",
238
-
"zod": "^3.23.8"
239
-
},
240
-
"engines": {
241
-
"node": ">=18.7.0"
242
-
}
243
-
},
244
-
"node_modules/@atproto/repo/node_modules/multiformats": {
245
-
"version": "9.9.0",
246
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
247
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
248
-
"license": "(Apache-2.0 AND MIT)"
249
-
},
250
-
"node_modules/@atproto/sync": {
251
-
"version": "0.1.26",
252
-
"resolved": "https://registry.npmjs.org/@atproto/sync/-/sync-0.1.26.tgz",
253
-
"integrity": "sha512-bpUIajtPrE3RgFW8mIfrI4EM/LJ4JjQhI5fsqc78zCHZawuflpllf1aH70roDWWiskMWoiLWnVRxdYXdeEgbXA==",
254
-
"license": "MIT",
255
-
"dependencies": {
256
-
"@atproto/common": "^0.4.11",
257
-
"@atproto/identity": "^0.4.8",
258
-
"@atproto/lexicon": "^0.4.11",
259
-
"@atproto/repo": "^0.8.2",
260
-
"@atproto/syntax": "^0.4.0",
261
-
"@atproto/xrpc-server": "^0.8.0",
262
-
"multiformats": "^9.9.0",
263
-
"p-queue": "^6.6.2",
264
-
"ws": "^8.12.0"
265
-
},
266
-
"engines": {
267
-
"node": ">=18.7.0"
268
-
}
269
-
},
270
-
"node_modules/@atproto/sync/node_modules/multiformats": {
271
-
"version": "9.9.0",
272
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
273
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
274
-
"license": "(Apache-2.0 AND MIT)"
275
-
},
276
-
"node_modules/@atproto/syntax": {
277
-
"version": "0.4.0",
278
-
"resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.0.tgz",
279
-
"integrity": "sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==",
280
-
"license": "MIT"
281
-
},
282
-
"node_modules/@atproto/xrpc": {
283
-
"version": "0.7.0",
284
-
"resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.7.0.tgz",
285
-
"integrity": "sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==",
286
-
"license": "MIT",
287
-
"dependencies": {
288
-
"@atproto/lexicon": "^0.4.11",
289
-
"zod": "^3.23.8"
290
-
}
291
-
},
292
-
"node_modules/@atproto/xrpc-server": {
293
-
"version": "0.8.0",
294
-
"resolved": "https://registry.npmjs.org/@atproto/xrpc-server/-/xrpc-server-0.8.0.tgz",
295
-
"integrity": "sha512-jDAEVHVhM4IvC0y491gXBuD4b1D9/XrM3HaEronRneAdNZ0qE0nsiJNqiHfQ6r4BvFdHnABM9KyHV9EQTvmxfg==",
296
-
"license": "MIT",
297
-
"dependencies": {
298
-
"@atproto/common": "^0.4.11",
299
-
"@atproto/crypto": "^0.4.4",
300
-
"@atproto/lexicon": "^0.4.11",
301
-
"@atproto/xrpc": "^0.7.0",
302
-
"cbor-x": "^1.5.1",
303
-
"express": "^4.17.2",
304
-
"http-errors": "^2.0.0",
305
-
"mime-types": "^2.1.35",
306
-
"rate-limiter-flexible": "^2.4.1",
307
-
"uint8arrays": "3.0.0",
308
-
"ws": "^8.12.0",
309
-
"zod": "^3.23.8"
310
-
},
311
-
"engines": {
312
-
"node": ">=18.7.0"
313
-
}
314
-
},
315
-
"node_modules/@atproto/xrpc-server/node_modules/accepts": {
316
-
"version": "1.3.8",
317
-
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
318
-
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
319
-
"license": "MIT",
320
-
"dependencies": {
321
-
"mime-types": "~2.1.34",
322
-
"negotiator": "0.6.3"
323
-
},
324
-
"engines": {
325
-
"node": ">= 0.6"
326
-
}
327
-
},
328
-
"node_modules/@atproto/xrpc-server/node_modules/body-parser": {
329
-
"version": "1.20.3",
330
-
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
331
-
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
332
-
"license": "MIT",
333
-
"dependencies": {
334
-
"bytes": "3.1.2",
335
-
"content-type": "~1.0.5",
336
-
"debug": "2.6.9",
337
-
"depd": "2.0.0",
338
-
"destroy": "1.2.0",
339
-
"http-errors": "2.0.0",
340
-
"iconv-lite": "0.4.24",
341
-
"on-finished": "2.4.1",
342
-
"qs": "6.13.0",
343
-
"raw-body": "2.5.2",
344
-
"type-is": "~1.6.18",
345
-
"unpipe": "1.0.0"
346
-
},
347
-
"engines": {
348
-
"node": ">= 0.8",
349
-
"npm": "1.2.8000 || >= 1.4.16"
350
-
}
351
-
},
352
-
"node_modules/@atproto/xrpc-server/node_modules/content-disposition": {
353
-
"version": "0.5.4",
354
-
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
355
-
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
356
-
"license": "MIT",
357
-
"dependencies": {
358
-
"safe-buffer": "5.2.1"
359
-
},
360
-
"engines": {
361
-
"node": ">= 0.6"
362
-
}
363
-
},
364
-
"node_modules/@atproto/xrpc-server/node_modules/cookie": {
365
-
"version": "0.7.1",
366
-
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
367
-
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
368
-
"license": "MIT",
369
-
"engines": {
370
-
"node": ">= 0.6"
371
-
}
372
-
},
373
-
"node_modules/@atproto/xrpc-server/node_modules/cookie-signature": {
374
-
"version": "1.0.6",
375
-
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
376
-
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
377
-
"license": "MIT"
378
-
},
379
-
"node_modules/@atproto/xrpc-server/node_modules/debug": {
380
-
"version": "2.6.9",
381
-
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
382
-
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
383
-
"license": "MIT",
384
-
"dependencies": {
385
-
"ms": "2.0.0"
386
-
}
387
-
},
388
-
"node_modules/@atproto/xrpc-server/node_modules/debug/node_modules/ms": {
389
-
"version": "2.0.0",
390
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
391
-
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
392
-
"license": "MIT"
393
-
},
394
-
"node_modules/@atproto/xrpc-server/node_modules/express": {
395
-
"version": "4.21.2",
396
-
"resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
397
-
"integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
398
-
"license": "MIT",
399
-
"dependencies": {
400
-
"accepts": "~1.3.8",
401
-
"array-flatten": "1.1.1",
402
-
"body-parser": "1.20.3",
403
-
"content-disposition": "0.5.4",
404
-
"content-type": "~1.0.4",
405
-
"cookie": "0.7.1",
406
-
"cookie-signature": "1.0.6",
407
-
"debug": "2.6.9",
408
-
"depd": "2.0.0",
409
-
"encodeurl": "~2.0.0",
410
-
"escape-html": "~1.0.3",
411
-
"etag": "~1.8.1",
412
-
"finalhandler": "1.3.1",
413
-
"fresh": "0.5.2",
414
-
"http-errors": "2.0.0",
415
-
"merge-descriptors": "1.0.3",
416
-
"methods": "~1.1.2",
417
-
"on-finished": "2.4.1",
418
-
"parseurl": "~1.3.3",
419
-
"path-to-regexp": "0.1.12",
420
-
"proxy-addr": "~2.0.7",
421
-
"qs": "6.13.0",
422
-
"range-parser": "~1.2.1",
423
-
"safe-buffer": "5.2.1",
424
-
"send": "0.19.0",
425
-
"serve-static": "1.16.2",
426
-
"setprototypeof": "1.2.0",
427
-
"statuses": "2.0.1",
428
-
"type-is": "~1.6.18",
429
-
"utils-merge": "1.0.1",
430
-
"vary": "~1.1.2"
431
-
},
432
-
"engines": {
433
-
"node": ">= 0.10.0"
434
-
},
435
-
"funding": {
436
-
"type": "opencollective",
437
-
"url": "https://opencollective.com/express"
438
-
}
439
-
},
440
-
"node_modules/@atproto/xrpc-server/node_modules/finalhandler": {
441
-
"version": "1.3.1",
442
-
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
443
-
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
444
-
"license": "MIT",
445
-
"dependencies": {
446
-
"debug": "2.6.9",
447
-
"encodeurl": "~2.0.0",
448
-
"escape-html": "~1.0.3",
449
-
"on-finished": "2.4.1",
450
-
"parseurl": "~1.3.3",
451
-
"statuses": "2.0.1",
452
-
"unpipe": "~1.0.0"
453
-
},
454
-
"engines": {
455
-
"node": ">= 0.8"
456
-
}
457
-
},
458
-
"node_modules/@atproto/xrpc-server/node_modules/fresh": {
459
-
"version": "0.5.2",
460
-
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
461
-
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
462
-
"license": "MIT",
463
-
"engines": {
464
-
"node": ">= 0.6"
465
-
}
466
-
},
467
-
"node_modules/@atproto/xrpc-server/node_modules/iconv-lite": {
468
-
"version": "0.4.24",
469
-
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
470
-
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
471
-
"license": "MIT",
472
-
"dependencies": {
473
-
"safer-buffer": ">= 2.1.2 < 3"
474
-
},
475
-
"engines": {
476
-
"node": ">=0.10.0"
477
-
}
478
-
},
479
-
"node_modules/@atproto/xrpc-server/node_modules/media-typer": {
480
-
"version": "0.3.0",
481
-
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
482
-
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
483
-
"license": "MIT",
484
-
"engines": {
485
-
"node": ">= 0.6"
486
-
}
487
-
},
488
-
"node_modules/@atproto/xrpc-server/node_modules/merge-descriptors": {
489
-
"version": "1.0.3",
490
-
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
491
-
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
492
-
"license": "MIT",
493
-
"funding": {
494
-
"url": "https://github.com/sponsors/sindresorhus"
495
-
}
496
-
},
497
-
"node_modules/@atproto/xrpc-server/node_modules/mime-db": {
498
-
"version": "1.52.0",
499
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
500
-
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
501
-
"license": "MIT",
502
-
"engines": {
503
-
"node": ">= 0.6"
504
-
}
505
-
},
506
-
"node_modules/@atproto/xrpc-server/node_modules/mime-types": {
507
-
"version": "2.1.35",
508
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
509
-
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
510
-
"license": "MIT",
511
-
"dependencies": {
512
-
"mime-db": "1.52.0"
513
-
},
514
-
"engines": {
515
-
"node": ">= 0.6"
516
-
}
517
-
},
518
-
"node_modules/@atproto/xrpc-server/node_modules/negotiator": {
519
-
"version": "0.6.3",
520
-
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
521
-
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
522
-
"license": "MIT",
523
-
"engines": {
524
-
"node": ">= 0.6"
525
-
}
526
-
},
527
-
"node_modules/@atproto/xrpc-server/node_modules/path-to-regexp": {
528
-
"version": "0.1.12",
529
-
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
530
-
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
531
-
"license": "MIT"
532
-
},
533
-
"node_modules/@atproto/xrpc-server/node_modules/qs": {
534
-
"version": "6.13.0",
535
-
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
536
-
"integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
537
-
"license": "BSD-3-Clause",
538
-
"dependencies": {
539
-
"side-channel": "^1.0.6"
540
-
},
541
-
"engines": {
542
-
"node": ">=0.6"
543
-
},
544
-
"funding": {
545
-
"url": "https://github.com/sponsors/ljharb"
546
-
}
547
-
},
548
-
"node_modules/@atproto/xrpc-server/node_modules/raw-body": {
549
-
"version": "2.5.2",
550
-
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
551
-
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
552
-
"license": "MIT",
553
-
"dependencies": {
554
-
"bytes": "3.1.2",
555
-
"http-errors": "2.0.0",
556
-
"iconv-lite": "0.4.24",
557
-
"unpipe": "1.0.0"
558
-
},
559
-
"engines": {
560
-
"node": ">= 0.8"
561
-
}
562
-
},
563
-
"node_modules/@atproto/xrpc-server/node_modules/send": {
564
-
"version": "0.19.0",
565
-
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
566
-
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
567
-
"license": "MIT",
568
-
"dependencies": {
569
-
"debug": "2.6.9",
570
-
"depd": "2.0.0",
571
-
"destroy": "1.2.0",
572
-
"encodeurl": "~1.0.2",
573
-
"escape-html": "~1.0.3",
574
-
"etag": "~1.8.1",
575
-
"fresh": "0.5.2",
576
-
"http-errors": "2.0.0",
577
-
"mime": "1.6.0",
578
-
"ms": "2.1.3",
579
-
"on-finished": "2.4.1",
580
-
"range-parser": "~1.2.1",
581
-
"statuses": "2.0.1"
582
-
},
583
-
"engines": {
584
-
"node": ">= 0.8.0"
585
-
}
586
-
},
587
-
"node_modules/@atproto/xrpc-server/node_modules/send/node_modules/encodeurl": {
588
-
"version": "1.0.2",
589
-
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
590
-
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
591
-
"license": "MIT",
592
-
"engines": {
593
-
"node": ">= 0.8"
594
-
}
595
-
},
596
-
"node_modules/@atproto/xrpc-server/node_modules/serve-static": {
597
-
"version": "1.16.2",
598
-
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
599
-
"integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
600
-
"license": "MIT",
601
-
"dependencies": {
602
-
"encodeurl": "~2.0.0",
603
-
"escape-html": "~1.0.3",
604
-
"parseurl": "~1.3.3",
605
-
"send": "0.19.0"
606
-
},
607
-
"engines": {
608
-
"node": ">= 0.8.0"
609
-
}
610
-
},
611
-
"node_modules/@atproto/xrpc-server/node_modules/statuses": {
612
-
"version": "2.0.1",
613
-
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
614
-
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
615
-
"license": "MIT",
616
-
"engines": {
617
-
"node": ">= 0.8"
618
-
}
619
-
},
620
-
"node_modules/@atproto/xrpc-server/node_modules/type-is": {
621
-
"version": "1.6.18",
622
-
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
623
-
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
624
-
"license": "MIT",
625
-
"dependencies": {
626
-
"media-typer": "0.3.0",
627
-
"mime-types": "~2.1.24"
628
-
},
629
-
"engines": {
630
-
"node": ">= 0.6"
631
-
}
632
-
},
633
-
"node_modules/@babel/code-frame": {
634
-
"version": "7.27.1",
635
-
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
636
-
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
637
-
"dev": true,
638
-
"license": "MIT",
639
-
"dependencies": {
640
-
"@babel/helper-validator-identifier": "^7.27.1",
641
-
"js-tokens": "^4.0.0",
642
-
"picocolors": "^1.1.1"
643
-
},
644
-
"engines": {
645
-
"node": ">=6.9.0"
646
-
}
647
-
},
648
-
"node_modules/@babel/compat-data": {
649
-
"version": "7.27.5",
650
-
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
651
-
"integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
652
-
"dev": true,
653
-
"license": "MIT",
654
-
"engines": {
655
-
"node": ">=6.9.0"
656
-
}
657
-
},
658
-
"node_modules/@babel/core": {
659
-
"version": "7.27.4",
660
-
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz",
661
-
"integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",
662
-
"dev": true,
663
-
"license": "MIT",
664
-
"dependencies": {
665
-
"@ampproject/remapping": "^2.2.0",
666
-
"@babel/code-frame": "^7.27.1",
667
-
"@babel/generator": "^7.27.3",
668
-
"@babel/helper-compilation-targets": "^7.27.2",
669
-
"@babel/helper-module-transforms": "^7.27.3",
670
-
"@babel/helpers": "^7.27.4",
671
-
"@babel/parser": "^7.27.4",
672
-
"@babel/template": "^7.27.2",
673
-
"@babel/traverse": "^7.27.4",
674
-
"@babel/types": "^7.27.3",
675
-
"convert-source-map": "^2.0.0",
676
-
"debug": "^4.1.0",
677
-
"gensync": "^1.0.0-beta.2",
678
-
"json5": "^2.2.3",
679
-
"semver": "^6.3.1"
680
-
},
681
-
"engines": {
682
-
"node": ">=6.9.0"
683
-
},
684
-
"funding": {
685
-
"type": "opencollective",
686
-
"url": "https://opencollective.com/babel"
687
-
}
688
-
},
689
-
"node_modules/@babel/core/node_modules/semver": {
690
-
"version": "6.3.1",
691
-
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
692
-
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
693
-
"dev": true,
694
-
"license": "ISC",
695
-
"bin": {
696
-
"semver": "bin/semver.js"
697
-
}
698
-
},
699
-
"node_modules/@babel/generator": {
700
-
"version": "7.27.5",
701
-
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz",
702
-
"integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==",
703
-
"dev": true,
704
-
"license": "MIT",
705
-
"dependencies": {
706
-
"@babel/parser": "^7.27.5",
707
-
"@babel/types": "^7.27.3",
708
-
"@jridgewell/gen-mapping": "^0.3.5",
709
-
"@jridgewell/trace-mapping": "^0.3.25",
710
-
"jsesc": "^3.0.2"
711
-
},
712
-
"engines": {
713
-
"node": ">=6.9.0"
714
-
}
715
-
},
716
-
"node_modules/@babel/helper-compilation-targets": {
717
-
"version": "7.27.2",
718
-
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
719
-
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
720
-
"dev": true,
721
-
"license": "MIT",
722
-
"dependencies": {
723
-
"@babel/compat-data": "^7.27.2",
724
-
"@babel/helper-validator-option": "^7.27.1",
725
-
"browserslist": "^4.24.0",
726
-
"lru-cache": "^5.1.1",
727
-
"semver": "^6.3.1"
728
-
},
729
-
"engines": {
730
-
"node": ">=6.9.0"
731
-
}
732
-
},
733
-
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
734
-
"version": "6.3.1",
735
-
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
736
-
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
737
-
"dev": true,
738
-
"license": "ISC",
739
-
"bin": {
740
-
"semver": "bin/semver.js"
741
-
}
742
-
},
743
-
"node_modules/@babel/helper-module-imports": {
744
-
"version": "7.27.1",
745
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
746
-
"integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
747
-
"dev": true,
748
-
"license": "MIT",
749
-
"dependencies": {
750
-
"@babel/traverse": "^7.27.1",
751
-
"@babel/types": "^7.27.1"
752
-
},
753
-
"engines": {
754
-
"node": ">=6.9.0"
755
-
}
756
-
},
757
-
"node_modules/@babel/helper-module-transforms": {
758
-
"version": "7.27.3",
759
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
760
-
"integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
761
-
"dev": true,
762
-
"license": "MIT",
763
-
"dependencies": {
764
-
"@babel/helper-module-imports": "^7.27.1",
765
-
"@babel/helper-validator-identifier": "^7.27.1",
766
-
"@babel/traverse": "^7.27.3"
767
-
},
768
-
"engines": {
769
-
"node": ">=6.9.0"
770
-
},
771
-
"peerDependencies": {
772
-
"@babel/core": "^7.0.0"
773
-
}
774
-
},
775
-
"node_modules/@babel/helper-plugin-utils": {
776
-
"version": "7.27.1",
777
-
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
778
-
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
779
-
"dev": true,
780
-
"license": "MIT",
781
-
"engines": {
782
-
"node": ">=6.9.0"
783
-
}
784
-
},
785
-
"node_modules/@babel/helper-string-parser": {
786
-
"version": "7.27.1",
787
-
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
788
-
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
789
-
"dev": true,
790
-
"license": "MIT",
791
-
"engines": {
792
-
"node": ">=6.9.0"
793
-
}
794
-
},
795
-
"node_modules/@babel/helper-validator-identifier": {
796
-
"version": "7.27.1",
797
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
798
-
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
799
-
"dev": true,
800
-
"license": "MIT",
801
-
"engines": {
802
-
"node": ">=6.9.0"
803
-
}
804
-
},
805
-
"node_modules/@babel/helper-validator-option": {
806
-
"version": "7.27.1",
807
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
808
-
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
809
-
"dev": true,
810
-
"license": "MIT",
811
-
"engines": {
812
-
"node": ">=6.9.0"
813
-
}
814
-
},
815
-
"node_modules/@babel/helpers": {
816
-
"version": "7.27.6",
817
-
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz",
818
-
"integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",
819
-
"dev": true,
820
-
"license": "MIT",
821
-
"dependencies": {
822
-
"@babel/template": "^7.27.2",
823
-
"@babel/types": "^7.27.6"
824
-
},
825
-
"engines": {
826
-
"node": ">=6.9.0"
827
-
}
828
-
},
829
-
"node_modules/@babel/parser": {
830
-
"version": "7.27.5",
831
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz",
832
-
"integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
833
-
"dev": true,
834
-
"license": "MIT",
835
-
"dependencies": {
836
-
"@babel/types": "^7.27.3"
837
-
},
838
-
"bin": {
839
-
"parser": "bin/babel-parser.js"
840
-
},
841
-
"engines": {
842
-
"node": ">=6.0.0"
843
-
}
844
-
},
845
-
"node_modules/@babel/plugin-syntax-async-generators": {
846
-
"version": "7.8.4",
847
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
848
-
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
849
-
"dev": true,
850
-
"license": "MIT",
851
-
"dependencies": {
852
-
"@babel/helper-plugin-utils": "^7.8.0"
853
-
},
854
-
"peerDependencies": {
855
-
"@babel/core": "^7.0.0-0"
856
-
}
857
-
},
858
-
"node_modules/@babel/plugin-syntax-bigint": {
859
-
"version": "7.8.3",
860
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
861
-
"integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
862
-
"dev": true,
863
-
"license": "MIT",
864
-
"dependencies": {
865
-
"@babel/helper-plugin-utils": "^7.8.0"
866
-
},
867
-
"peerDependencies": {
868
-
"@babel/core": "^7.0.0-0"
869
-
}
870
-
},
871
-
"node_modules/@babel/plugin-syntax-class-properties": {
872
-
"version": "7.12.13",
873
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
874
-
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
875
-
"dev": true,
876
-
"license": "MIT",
877
-
"dependencies": {
878
-
"@babel/helper-plugin-utils": "^7.12.13"
879
-
},
880
-
"peerDependencies": {
881
-
"@babel/core": "^7.0.0-0"
882
-
}
883
-
},
884
-
"node_modules/@babel/plugin-syntax-class-static-block": {
885
-
"version": "7.14.5",
886
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
887
-
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
888
-
"dev": true,
889
-
"license": "MIT",
890
-
"dependencies": {
891
-
"@babel/helper-plugin-utils": "^7.14.5"
892
-
},
893
-
"engines": {
894
-
"node": ">=6.9.0"
895
-
},
896
-
"peerDependencies": {
897
-
"@babel/core": "^7.0.0-0"
898
-
}
899
-
},
900
-
"node_modules/@babel/plugin-syntax-import-attributes": {
901
-
"version": "7.27.1",
902
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
903
-
"integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
904
-
"dev": true,
905
-
"license": "MIT",
906
-
"dependencies": {
907
-
"@babel/helper-plugin-utils": "^7.27.1"
908
-
},
909
-
"engines": {
910
-
"node": ">=6.9.0"
911
-
},
912
-
"peerDependencies": {
913
-
"@babel/core": "^7.0.0-0"
914
-
}
915
-
},
916
-
"node_modules/@babel/plugin-syntax-import-meta": {
917
-
"version": "7.10.4",
918
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
919
-
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
920
-
"dev": true,
921
-
"license": "MIT",
922
-
"dependencies": {
923
-
"@babel/helper-plugin-utils": "^7.10.4"
924
-
},
925
-
"peerDependencies": {
926
-
"@babel/core": "^7.0.0-0"
927
-
}
928
-
},
929
-
"node_modules/@babel/plugin-syntax-json-strings": {
930
-
"version": "7.8.3",
931
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
932
-
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
933
-
"dev": true,
934
-
"license": "MIT",
935
-
"dependencies": {
936
-
"@babel/helper-plugin-utils": "^7.8.0"
937
-
},
938
-
"peerDependencies": {
939
-
"@babel/core": "^7.0.0-0"
940
-
}
941
-
},
942
-
"node_modules/@babel/plugin-syntax-jsx": {
943
-
"version": "7.27.1",
944
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
945
-
"integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
946
-
"dev": true,
947
-
"license": "MIT",
948
-
"dependencies": {
949
-
"@babel/helper-plugin-utils": "^7.27.1"
950
-
},
951
-
"engines": {
952
-
"node": ">=6.9.0"
953
-
},
954
-
"peerDependencies": {
955
-
"@babel/core": "^7.0.0-0"
956
-
}
957
-
},
958
-
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
959
-
"version": "7.10.4",
960
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
961
-
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
962
-
"dev": true,
963
-
"license": "MIT",
964
-
"dependencies": {
965
-
"@babel/helper-plugin-utils": "^7.10.4"
966
-
},
967
-
"peerDependencies": {
968
-
"@babel/core": "^7.0.0-0"
969
-
}
970
-
},
971
-
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
972
-
"version": "7.8.3",
973
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
974
-
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
975
-
"dev": true,
976
-
"license": "MIT",
977
-
"dependencies": {
978
-
"@babel/helper-plugin-utils": "^7.8.0"
979
-
},
980
-
"peerDependencies": {
981
-
"@babel/core": "^7.0.0-0"
982
-
}
983
-
},
984
-
"node_modules/@babel/plugin-syntax-numeric-separator": {
985
-
"version": "7.10.4",
986
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
987
-
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
988
-
"dev": true,
989
-
"license": "MIT",
990
-
"dependencies": {
991
-
"@babel/helper-plugin-utils": "^7.10.4"
992
-
},
993
-
"peerDependencies": {
994
-
"@babel/core": "^7.0.0-0"
995
-
}
996
-
},
997
-
"node_modules/@babel/plugin-syntax-object-rest-spread": {
998
-
"version": "7.8.3",
999
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
1000
-
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
1001
-
"dev": true,
1002
-
"license": "MIT",
1003
-
"dependencies": {
1004
-
"@babel/helper-plugin-utils": "^7.8.0"
1005
-
},
1006
-
"peerDependencies": {
1007
-
"@babel/core": "^7.0.0-0"
1008
-
}
1009
-
},
1010
-
"node_modules/@babel/plugin-syntax-optional-catch-binding": {
1011
-
"version": "7.8.3",
1012
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
1013
-
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
1014
-
"dev": true,
1015
-
"license": "MIT",
1016
-
"dependencies": {
1017
-
"@babel/helper-plugin-utils": "^7.8.0"
1018
-
},
1019
-
"peerDependencies": {
1020
-
"@babel/core": "^7.0.0-0"
1021
-
}
1022
-
},
1023
-
"node_modules/@babel/plugin-syntax-optional-chaining": {
1024
-
"version": "7.8.3",
1025
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
1026
-
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
1027
-
"dev": true,
1028
-
"license": "MIT",
1029
-
"dependencies": {
1030
-
"@babel/helper-plugin-utils": "^7.8.0"
1031
-
},
1032
-
"peerDependencies": {
1033
-
"@babel/core": "^7.0.0-0"
1034
-
}
1035
-
},
1036
-
"node_modules/@babel/plugin-syntax-private-property-in-object": {
1037
-
"version": "7.14.5",
1038
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
1039
-
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
1040
-
"dev": true,
1041
-
"license": "MIT",
1042
-
"dependencies": {
1043
-
"@babel/helper-plugin-utils": "^7.14.5"
1044
-
},
1045
-
"engines": {
1046
-
"node": ">=6.9.0"
1047
-
},
1048
-
"peerDependencies": {
1049
-
"@babel/core": "^7.0.0-0"
1050
-
}
1051
-
},
1052
-
"node_modules/@babel/plugin-syntax-top-level-await": {
1053
-
"version": "7.14.5",
1054
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
1055
-
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
1056
-
"dev": true,
1057
-
"license": "MIT",
1058
-
"dependencies": {
1059
-
"@babel/helper-plugin-utils": "^7.14.5"
1060
-
},
1061
-
"engines": {
1062
-
"node": ">=6.9.0"
1063
-
},
1064
-
"peerDependencies": {
1065
-
"@babel/core": "^7.0.0-0"
1066
-
}
1067
-
},
1068
-
"node_modules/@babel/plugin-syntax-typescript": {
1069
-
"version": "7.27.1",
1070
-
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
1071
-
"integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
1072
-
"dev": true,
1073
-
"license": "MIT",
1074
-
"dependencies": {
1075
-
"@babel/helper-plugin-utils": "^7.27.1"
1076
-
},
1077
-
"engines": {
1078
-
"node": ">=6.9.0"
1079
-
},
1080
-
"peerDependencies": {
1081
-
"@babel/core": "^7.0.0-0"
1082
-
}
1083
-
},
1084
-
"node_modules/@babel/template": {
1085
-
"version": "7.27.2",
1086
-
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
1087
-
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
1088
-
"dev": true,
1089
-
"license": "MIT",
1090
-
"dependencies": {
1091
-
"@babel/code-frame": "^7.27.1",
1092
-
"@babel/parser": "^7.27.2",
1093
-
"@babel/types": "^7.27.1"
1094
-
},
1095
-
"engines": {
1096
-
"node": ">=6.9.0"
1097
-
}
1098
-
},
1099
-
"node_modules/@babel/traverse": {
1100
-
"version": "7.27.4",
1101
-
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz",
1102
-
"integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==",
1103
-
"dev": true,
1104
-
"license": "MIT",
1105
-
"dependencies": {
1106
-
"@babel/code-frame": "^7.27.1",
1107
-
"@babel/generator": "^7.27.3",
1108
-
"@babel/parser": "^7.27.4",
1109
-
"@babel/template": "^7.27.2",
1110
-
"@babel/types": "^7.27.3",
1111
-
"debug": "^4.3.1",
1112
-
"globals": "^11.1.0"
1113
-
},
1114
-
"engines": {
1115
-
"node": ">=6.9.0"
1116
-
}
1117
-
},
1118
-
"node_modules/@babel/types": {
1119
-
"version": "7.27.6",
1120
-
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz",
1121
-
"integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
1122
-
"dev": true,
1123
-
"license": "MIT",
1124
-
"dependencies": {
1125
-
"@babel/helper-string-parser": "^7.27.1",
1126
-
"@babel/helper-validator-identifier": "^7.27.1"
1127
-
},
1128
-
"engines": {
1129
-
"node": ">=6.9.0"
1130
-
}
1131
-
},
1132
-
"node_modules/@bcoe/v8-coverage": {
1133
-
"version": "0.2.3",
1134
-
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
1135
-
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
1136
-
"dev": true,
1137
-
"license": "MIT"
1138
-
},
1139
-
"node_modules/@cbor-extract/cbor-extract-darwin-arm64": {
1140
-
"version": "2.2.0",
1141
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz",
1142
-
"integrity": "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==",
1143
-
"cpu": [
1144
-
"arm64"
1145
-
],
1146
-
"license": "MIT",
1147
-
"optional": true,
1148
-
"os": [
1149
-
"darwin"
1150
-
]
1151
-
},
1152
-
"node_modules/@cbor-extract/cbor-extract-darwin-x64": {
1153
-
"version": "2.2.0",
1154
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz",
1155
-
"integrity": "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==",
1156
-
"cpu": [
1157
-
"x64"
1158
-
],
1159
-
"license": "MIT",
1160
-
"optional": true,
1161
-
"os": [
1162
-
"darwin"
1163
-
]
1164
-
},
1165
-
"node_modules/@cbor-extract/cbor-extract-linux-arm": {
1166
-
"version": "2.2.0",
1167
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz",
1168
-
"integrity": "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==",
1169
-
"cpu": [
1170
-
"arm"
1171
-
],
1172
-
"license": "MIT",
1173
-
"optional": true,
1174
-
"os": [
1175
-
"linux"
1176
-
]
1177
-
},
1178
-
"node_modules/@cbor-extract/cbor-extract-linux-arm64": {
1179
-
"version": "2.2.0",
1180
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz",
1181
-
"integrity": "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==",
1182
-
"cpu": [
1183
-
"arm64"
1184
-
],
1185
-
"license": "MIT",
1186
-
"optional": true,
1187
-
"os": [
1188
-
"linux"
1189
-
]
1190
-
},
1191
-
"node_modules/@cbor-extract/cbor-extract-linux-x64": {
1192
-
"version": "2.2.0",
1193
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz",
1194
-
"integrity": "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==",
1195
-
"cpu": [
1196
-
"x64"
1197
-
],
1198
-
"license": "MIT",
1199
-
"optional": true,
1200
-
"os": [
1201
-
"linux"
1202
-
]
1203
-
},
1204
-
"node_modules/@cbor-extract/cbor-extract-win32-x64": {
1205
-
"version": "2.2.0",
1206
-
"resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz",
1207
-
"integrity": "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==",
1208
-
"cpu": [
1209
-
"x64"
1210
-
],
1211
-
"license": "MIT",
1212
-
"optional": true,
1213
-
"os": [
1214
-
"win32"
1215
-
]
1216
-
},
1217
-
"node_modules/@emnapi/core": {
1218
-
"version": "1.4.3",
1219
-
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz",
1220
-
"integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==",
1221
-
"dev": true,
1222
-
"license": "MIT",
1223
-
"optional": true,
1224
-
"dependencies": {
1225
-
"@emnapi/wasi-threads": "1.0.2",
1226
-
"tslib": "^2.4.0"
1227
-
}
1228
-
},
1229
-
"node_modules/@emnapi/runtime": {
1230
-
"version": "1.4.3",
1231
-
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
1232
-
"integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
1233
-
"dev": true,
1234
-
"license": "MIT",
1235
-
"optional": true,
1236
-
"dependencies": {
1237
-
"tslib": "^2.4.0"
1238
-
}
1239
-
},
1240
-
"node_modules/@emnapi/wasi-threads": {
1241
-
"version": "1.0.2",
1242
-
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz",
1243
-
"integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==",
1244
-
"dev": true,
1245
-
"license": "MIT",
1246
-
"optional": true,
1247
-
"dependencies": {
1248
-
"tslib": "^2.4.0"
1249
-
}
1250
-
},
1251
-
"node_modules/@esbuild/aix-ppc64": {
1252
-
"version": "0.25.5",
1253
-
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
1254
-
"integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
1255
-
"cpu": [
1256
-
"ppc64"
1257
-
],
1258
-
"license": "MIT",
1259
-
"optional": true,
1260
-
"os": [
1261
-
"aix"
1262
-
],
1263
-
"engines": {
1264
-
"node": ">=18"
1265
-
}
1266
-
},
1267
-
"node_modules/@esbuild/android-arm": {
1268
-
"version": "0.25.5",
1269
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
1270
-
"integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
1271
-
"cpu": [
1272
-
"arm"
1273
-
],
1274
-
"license": "MIT",
1275
-
"optional": true,
1276
-
"os": [
1277
-
"android"
1278
-
],
1279
-
"engines": {
1280
-
"node": ">=18"
1281
-
}
1282
-
},
1283
-
"node_modules/@esbuild/android-arm64": {
1284
-
"version": "0.25.5",
1285
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
1286
-
"integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
1287
-
"cpu": [
1288
-
"arm64"
1289
-
],
1290
-
"license": "MIT",
1291
-
"optional": true,
1292
-
"os": [
1293
-
"android"
1294
-
],
1295
-
"engines": {
1296
-
"node": ">=18"
1297
-
}
1298
-
},
1299
-
"node_modules/@esbuild/android-x64": {
1300
-
"version": "0.25.5",
1301
-
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
1302
-
"integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
1303
-
"cpu": [
1304
-
"x64"
1305
-
],
1306
-
"license": "MIT",
1307
-
"optional": true,
1308
-
"os": [
1309
-
"android"
1310
-
],
1311
-
"engines": {
1312
-
"node": ">=18"
1313
-
}
1314
-
},
1315
-
"node_modules/@esbuild/darwin-arm64": {
1316
-
"version": "0.25.5",
1317
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
1318
-
"integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
1319
-
"cpu": [
1320
-
"arm64"
1321
-
],
1322
-
"license": "MIT",
1323
-
"optional": true,
1324
-
"os": [
1325
-
"darwin"
1326
-
],
1327
-
"engines": {
1328
-
"node": ">=18"
1329
-
}
1330
-
},
1331
-
"node_modules/@esbuild/darwin-x64": {
1332
-
"version": "0.25.5",
1333
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
1334
-
"integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
1335
-
"cpu": [
1336
-
"x64"
1337
-
],
1338
-
"license": "MIT",
1339
-
"optional": true,
1340
-
"os": [
1341
-
"darwin"
1342
-
],
1343
-
"engines": {
1344
-
"node": ">=18"
1345
-
}
1346
-
},
1347
-
"node_modules/@esbuild/freebsd-arm64": {
1348
-
"version": "0.25.5",
1349
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
1350
-
"integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
1351
-
"cpu": [
1352
-
"arm64"
1353
-
],
1354
-
"license": "MIT",
1355
-
"optional": true,
1356
-
"os": [
1357
-
"freebsd"
1358
-
],
1359
-
"engines": {
1360
-
"node": ">=18"
1361
-
}
1362
-
},
1363
-
"node_modules/@esbuild/freebsd-x64": {
1364
-
"version": "0.25.5",
1365
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
1366
-
"integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
1367
-
"cpu": [
1368
-
"x64"
1369
-
],
1370
-
"license": "MIT",
1371
-
"optional": true,
1372
-
"os": [
1373
-
"freebsd"
1374
-
],
1375
-
"engines": {
1376
-
"node": ">=18"
1377
-
}
1378
-
},
1379
-
"node_modules/@esbuild/linux-arm": {
1380
-
"version": "0.25.5",
1381
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
1382
-
"integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
1383
-
"cpu": [
1384
-
"arm"
1385
-
],
1386
-
"license": "MIT",
1387
-
"optional": true,
1388
-
"os": [
1389
-
"linux"
1390
-
],
1391
-
"engines": {
1392
-
"node": ">=18"
1393
-
}
1394
-
},
1395
-
"node_modules/@esbuild/linux-arm64": {
1396
-
"version": "0.25.5",
1397
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
1398
-
"integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
1399
-
"cpu": [
1400
-
"arm64"
1401
-
],
1402
-
"license": "MIT",
1403
-
"optional": true,
1404
-
"os": [
1405
-
"linux"
1406
-
],
1407
-
"engines": {
1408
-
"node": ">=18"
1409
-
}
1410
-
},
1411
-
"node_modules/@esbuild/linux-ia32": {
1412
-
"version": "0.25.5",
1413
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
1414
-
"integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
1415
-
"cpu": [
1416
-
"ia32"
1417
-
],
1418
-
"license": "MIT",
1419
-
"optional": true,
1420
-
"os": [
1421
-
"linux"
1422
-
],
1423
-
"engines": {
1424
-
"node": ">=18"
1425
-
}
1426
-
},
1427
-
"node_modules/@esbuild/linux-loong64": {
1428
-
"version": "0.25.5",
1429
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
1430
-
"integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
1431
-
"cpu": [
1432
-
"loong64"
1433
-
],
1434
-
"license": "MIT",
1435
-
"optional": true,
1436
-
"os": [
1437
-
"linux"
1438
-
],
1439
-
"engines": {
1440
-
"node": ">=18"
1441
-
}
1442
-
},
1443
-
"node_modules/@esbuild/linux-mips64el": {
1444
-
"version": "0.25.5",
1445
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
1446
-
"integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
1447
-
"cpu": [
1448
-
"mips64el"
1449
-
],
1450
-
"license": "MIT",
1451
-
"optional": true,
1452
-
"os": [
1453
-
"linux"
1454
-
],
1455
-
"engines": {
1456
-
"node": ">=18"
1457
-
}
1458
-
},
1459
-
"node_modules/@esbuild/linux-ppc64": {
1460
-
"version": "0.25.5",
1461
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
1462
-
"integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
1463
-
"cpu": [
1464
-
"ppc64"
1465
-
],
1466
-
"license": "MIT",
1467
-
"optional": true,
1468
-
"os": [
1469
-
"linux"
1470
-
],
1471
-
"engines": {
1472
-
"node": ">=18"
1473
-
}
1474
-
},
1475
-
"node_modules/@esbuild/linux-riscv64": {
1476
-
"version": "0.25.5",
1477
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
1478
-
"integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
1479
-
"cpu": [
1480
-
"riscv64"
1481
-
],
1482
-
"license": "MIT",
1483
-
"optional": true,
1484
-
"os": [
1485
-
"linux"
1486
-
],
1487
-
"engines": {
1488
-
"node": ">=18"
1489
-
}
1490
-
},
1491
-
"node_modules/@esbuild/linux-s390x": {
1492
-
"version": "0.25.5",
1493
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
1494
-
"integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
1495
-
"cpu": [
1496
-
"s390x"
1497
-
],
1498
-
"license": "MIT",
1499
-
"optional": true,
1500
-
"os": [
1501
-
"linux"
1502
-
],
1503
-
"engines": {
1504
-
"node": ">=18"
1505
-
}
1506
-
},
1507
-
"node_modules/@esbuild/linux-x64": {
1508
-
"version": "0.25.5",
1509
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
1510
-
"integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
1511
-
"cpu": [
1512
-
"x64"
1513
-
],
1514
-
"license": "MIT",
1515
-
"optional": true,
1516
-
"os": [
1517
-
"linux"
1518
-
],
1519
-
"engines": {
1520
-
"node": ">=18"
1521
-
}
1522
-
},
1523
-
"node_modules/@esbuild/netbsd-arm64": {
1524
-
"version": "0.25.5",
1525
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
1526
-
"integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
1527
-
"cpu": [
1528
-
"arm64"
1529
-
],
1530
-
"license": "MIT",
1531
-
"optional": true,
1532
-
"os": [
1533
-
"netbsd"
1534
-
],
1535
-
"engines": {
1536
-
"node": ">=18"
1537
-
}
1538
-
},
1539
-
"node_modules/@esbuild/netbsd-x64": {
1540
-
"version": "0.25.5",
1541
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
1542
-
"integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
1543
-
"cpu": [
1544
-
"x64"
1545
-
],
1546
-
"license": "MIT",
1547
-
"optional": true,
1548
-
"os": [
1549
-
"netbsd"
1550
-
],
1551
-
"engines": {
1552
-
"node": ">=18"
1553
-
}
1554
-
},
1555
-
"node_modules/@esbuild/openbsd-arm64": {
1556
-
"version": "0.25.5",
1557
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
1558
-
"integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
1559
-
"cpu": [
1560
-
"arm64"
1561
-
],
1562
-
"license": "MIT",
1563
-
"optional": true,
1564
-
"os": [
1565
-
"openbsd"
1566
-
],
1567
-
"engines": {
1568
-
"node": ">=18"
1569
-
}
1570
-
},
1571
-
"node_modules/@esbuild/openbsd-x64": {
1572
-
"version": "0.25.5",
1573
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
1574
-
"integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
1575
-
"cpu": [
1576
-
"x64"
1577
-
],
1578
-
"license": "MIT",
1579
-
"optional": true,
1580
-
"os": [
1581
-
"openbsd"
1582
-
],
1583
-
"engines": {
1584
-
"node": ">=18"
1585
-
}
1586
-
},
1587
-
"node_modules/@esbuild/sunos-x64": {
1588
-
"version": "0.25.5",
1589
-
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
1590
-
"integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
1591
-
"cpu": [
1592
-
"x64"
1593
-
],
1594
-
"license": "MIT",
1595
-
"optional": true,
1596
-
"os": [
1597
-
"sunos"
1598
-
],
1599
-
"engines": {
1600
-
"node": ">=18"
1601
-
}
1602
-
},
1603
-
"node_modules/@esbuild/win32-arm64": {
1604
-
"version": "0.25.5",
1605
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
1606
-
"integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
1607
-
"cpu": [
1608
-
"arm64"
1609
-
],
1610
-
"license": "MIT",
1611
-
"optional": true,
1612
-
"os": [
1613
-
"win32"
1614
-
],
1615
-
"engines": {
1616
-
"node": ">=18"
1617
-
}
1618
-
},
1619
-
"node_modules/@esbuild/win32-ia32": {
1620
-
"version": "0.25.5",
1621
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
1622
-
"integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
1623
-
"cpu": [
1624
-
"ia32"
1625
-
],
1626
-
"license": "MIT",
1627
-
"optional": true,
1628
-
"os": [
1629
-
"win32"
1630
-
],
1631
-
"engines": {
1632
-
"node": ">=18"
1633
-
}
1634
-
},
1635
-
"node_modules/@esbuild/win32-x64": {
1636
-
"version": "0.25.5",
1637
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
1638
-
"integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
1639
-
"cpu": [
1640
-
"x64"
1641
-
],
1642
-
"license": "MIT",
1643
-
"optional": true,
1644
-
"os": [
1645
-
"win32"
1646
-
],
1647
-
"engines": {
1648
-
"node": ">=18"
1649
-
}
1650
-
},
1651
-
"node_modules/@ipld/car": {
1652
-
"version": "5.4.2",
1653
-
"resolved": "https://registry.npmjs.org/@ipld/car/-/car-5.4.2.tgz",
1654
-
"integrity": "sha512-gfyrJvePyXnh2Fbj8mPg4JYvEZ3izhk8C9WgAle7xIYbrJNSXmNQ6BxAls8Gof97vvGbCROdxbTWRmHJtTCbcg==",
1655
-
"license": "Apache-2.0 OR MIT",
1656
-
"dependencies": {
1657
-
"@ipld/dag-cbor": "^9.0.7",
1658
-
"cborg": "^4.0.5",
1659
-
"multiformats": "^13.0.0",
1660
-
"varint": "^6.0.0"
1661
-
},
1662
-
"engines": {
1663
-
"node": ">=16.0.0",
1664
-
"npm": ">=7.0.0"
1665
-
}
1666
-
},
1667
-
"node_modules/@ipld/car/node_modules/@ipld/dag-cbor": {
1668
-
"version": "9.2.4",
1669
-
"resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.4.tgz",
1670
-
"integrity": "sha512-GbDWYl2fdJgkYtIJN0HY9oO0o50d1nB4EQb7uYWKUd2ztxCjxiEW3PjwGG0nqUpN1G4Cug6LX8NzbA7fKT+zfA==",
1671
-
"license": "Apache-2.0 OR MIT",
1672
-
"dependencies": {
1673
-
"cborg": "^4.0.0",
1674
-
"multiformats": "^13.1.0"
1675
-
},
1676
-
"engines": {
1677
-
"node": ">=16.0.0",
1678
-
"npm": ">=7.0.0"
1679
-
}
1680
-
},
1681
-
"node_modules/@ipld/dag-cbor": {
1682
-
"version": "7.0.3",
1683
-
"resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz",
1684
-
"integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==",
1685
-
"license": "(Apache-2.0 AND MIT)",
1686
-
"dependencies": {
1687
-
"cborg": "^1.6.0",
1688
-
"multiformats": "^9.5.4"
1689
-
}
1690
-
},
1691
-
"node_modules/@ipld/dag-cbor/node_modules/cborg": {
1692
-
"version": "1.10.2",
1693
-
"resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz",
1694
-
"integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==",
1695
-
"license": "Apache-2.0",
1696
-
"bin": {
1697
-
"cborg": "cli.js"
1698
-
}
1699
-
},
1700
-
"node_modules/@ipld/dag-cbor/node_modules/multiformats": {
1701
-
"version": "9.9.0",
1702
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
1703
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
1704
-
"license": "(Apache-2.0 AND MIT)"
1705
-
},
1706
-
"node_modules/@isaacs/cliui": {
1707
-
"version": "8.0.2",
1708
-
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
1709
-
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
1710
-
"dev": true,
1711
-
"license": "ISC",
1712
-
"dependencies": {
1713
-
"string-width": "^5.1.2",
1714
-
"string-width-cjs": "npm:string-width@^4.2.0",
1715
-
"strip-ansi": "^7.0.1",
1716
-
"strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
1717
-
"wrap-ansi": "^8.1.0",
1718
-
"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
1719
-
},
1720
-
"engines": {
1721
-
"node": ">=12"
1722
-
}
1723
-
},
1724
-
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
1725
-
"version": "6.1.0",
1726
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
1727
-
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
1728
-
"dev": true,
1729
-
"license": "MIT",
1730
-
"engines": {
1731
-
"node": ">=12"
1732
-
},
1733
-
"funding": {
1734
-
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
1735
-
}
1736
-
},
1737
-
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
1738
-
"version": "6.2.1",
1739
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
1740
-
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
1741
-
"dev": true,
1742
-
"license": "MIT",
1743
-
"engines": {
1744
-
"node": ">=12"
1745
-
},
1746
-
"funding": {
1747
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
1748
-
}
1749
-
},
1750
-
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
1751
-
"version": "9.2.2",
1752
-
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1753
-
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1754
-
"dev": true,
1755
-
"license": "MIT"
1756
-
},
1757
-
"node_modules/@isaacs/cliui/node_modules/string-width": {
1758
-
"version": "5.1.2",
1759
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1760
-
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1761
-
"dev": true,
1762
-
"license": "MIT",
1763
-
"dependencies": {
1764
-
"eastasianwidth": "^0.2.0",
1765
-
"emoji-regex": "^9.2.2",
1766
-
"strip-ansi": "^7.0.1"
1767
-
},
1768
-
"engines": {
1769
-
"node": ">=12"
1770
-
},
1771
-
"funding": {
1772
-
"url": "https://github.com/sponsors/sindresorhus"
1773
-
}
1774
-
},
1775
-
"node_modules/@isaacs/cliui/node_modules/strip-ansi": {
1776
-
"version": "7.1.0",
1777
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1778
-
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1779
-
"dev": true,
1780
-
"license": "MIT",
1781
-
"dependencies": {
1782
-
"ansi-regex": "^6.0.1"
1783
-
},
1784
-
"engines": {
1785
-
"node": ">=12"
1786
-
},
1787
-
"funding": {
1788
-
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
1789
-
}
1790
-
},
1791
-
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
1792
-
"version": "8.1.0",
1793
-
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
1794
-
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
1795
-
"dev": true,
1796
-
"license": "MIT",
1797
-
"dependencies": {
1798
-
"ansi-styles": "^6.1.0",
1799
-
"string-width": "^5.0.1",
1800
-
"strip-ansi": "^7.0.1"
1801
-
},
1802
-
"engines": {
1803
-
"node": ">=12"
1804
-
},
1805
-
"funding": {
1806
-
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1807
-
}
1808
-
},
1809
-
"node_modules/@istanbuljs/load-nyc-config": {
1810
-
"version": "1.1.0",
1811
-
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
1812
-
"integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
1813
-
"dev": true,
1814
-
"license": "ISC",
1815
-
"dependencies": {
1816
-
"camelcase": "^5.3.1",
1817
-
"find-up": "^4.1.0",
1818
-
"get-package-type": "^0.1.0",
1819
-
"js-yaml": "^3.13.1",
1820
-
"resolve-from": "^5.0.0"
1821
-
},
1822
-
"engines": {
1823
-
"node": ">=8"
1824
-
}
1825
-
},
1826
-
"node_modules/@istanbuljs/schema": {
1827
-
"version": "0.1.3",
1828
-
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
1829
-
"integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
1830
-
"dev": true,
1831
-
"license": "MIT",
1832
-
"engines": {
1833
-
"node": ">=8"
1834
-
}
1835
-
},
1836
-
"node_modules/@jest/console": {
1837
-
"version": "30.0.2",
1838
-
"resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.2.tgz",
1839
-
"integrity": "sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA==",
1840
-
"dev": true,
1841
-
"license": "MIT",
1842
-
"dependencies": {
1843
-
"@jest/types": "30.0.1",
1844
-
"@types/node": "*",
1845
-
"chalk": "^4.1.2",
1846
-
"jest-message-util": "30.0.2",
1847
-
"jest-util": "30.0.2",
1848
-
"slash": "^3.0.0"
1849
-
},
1850
-
"engines": {
1851
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1852
-
}
1853
-
},
1854
-
"node_modules/@jest/core": {
1855
-
"version": "30.0.2",
1856
-
"resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.2.tgz",
1857
-
"integrity": "sha512-mUMFdDtYWu7la63NxlyNIhgnzynszxunXWrtryR7bV24jV9hmi7XCZTzZHaLJjcBU66MeUAPZ81HjwASVpYhYQ==",
1858
-
"dev": true,
1859
-
"license": "MIT",
1860
-
"dependencies": {
1861
-
"@jest/console": "30.0.2",
1862
-
"@jest/pattern": "30.0.1",
1863
-
"@jest/reporters": "30.0.2",
1864
-
"@jest/test-result": "30.0.2",
1865
-
"@jest/transform": "30.0.2",
1866
-
"@jest/types": "30.0.1",
1867
-
"@types/node": "*",
1868
-
"ansi-escapes": "^4.3.2",
1869
-
"chalk": "^4.1.2",
1870
-
"ci-info": "^4.2.0",
1871
-
"exit-x": "^0.2.2",
1872
-
"graceful-fs": "^4.2.11",
1873
-
"jest-changed-files": "30.0.2",
1874
-
"jest-config": "30.0.2",
1875
-
"jest-haste-map": "30.0.2",
1876
-
"jest-message-util": "30.0.2",
1877
-
"jest-regex-util": "30.0.1",
1878
-
"jest-resolve": "30.0.2",
1879
-
"jest-resolve-dependencies": "30.0.2",
1880
-
"jest-runner": "30.0.2",
1881
-
"jest-runtime": "30.0.2",
1882
-
"jest-snapshot": "30.0.2",
1883
-
"jest-util": "30.0.2",
1884
-
"jest-validate": "30.0.2",
1885
-
"jest-watcher": "30.0.2",
1886
-
"micromatch": "^4.0.8",
1887
-
"pretty-format": "30.0.2",
1888
-
"slash": "^3.0.0"
1889
-
},
1890
-
"engines": {
1891
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1892
-
},
1893
-
"peerDependencies": {
1894
-
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
1895
-
},
1896
-
"peerDependenciesMeta": {
1897
-
"node-notifier": {
1898
-
"optional": true
1899
-
}
1900
-
}
1901
-
},
1902
-
"node_modules/@jest/diff-sequences": {
1903
-
"version": "30.0.1",
1904
-
"resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz",
1905
-
"integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==",
1906
-
"dev": true,
1907
-
"license": "MIT",
1908
-
"engines": {
1909
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1910
-
}
1911
-
},
1912
-
"node_modules/@jest/environment": {
1913
-
"version": "30.0.2",
1914
-
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.2.tgz",
1915
-
"integrity": "sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA==",
1916
-
"dev": true,
1917
-
"license": "MIT",
1918
-
"dependencies": {
1919
-
"@jest/fake-timers": "30.0.2",
1920
-
"@jest/types": "30.0.1",
1921
-
"@types/node": "*",
1922
-
"jest-mock": "30.0.2"
1923
-
},
1924
-
"engines": {
1925
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1926
-
}
1927
-
},
1928
-
"node_modules/@jest/expect": {
1929
-
"version": "30.0.2",
1930
-
"resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.2.tgz",
1931
-
"integrity": "sha512-blWRFPjv2cVfh42nLG6L3xIEbw+bnuiZYZDl/BZlsNG/i3wKV6FpPZ2EPHguk7t5QpLaouIu+7JmYO4uBR6AOg==",
1932
-
"dev": true,
1933
-
"license": "MIT",
1934
-
"dependencies": {
1935
-
"expect": "30.0.2",
1936
-
"jest-snapshot": "30.0.2"
1937
-
},
1938
-
"engines": {
1939
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1940
-
}
1941
-
},
1942
-
"node_modules/@jest/expect-utils": {
1943
-
"version": "30.0.2",
1944
-
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.2.tgz",
1945
-
"integrity": "sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ==",
1946
-
"dev": true,
1947
-
"license": "MIT",
1948
-
"dependencies": {
1949
-
"@jest/get-type": "30.0.1"
1950
-
},
1951
-
"engines": {
1952
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1953
-
}
1954
-
},
1955
-
"node_modules/@jest/fake-timers": {
1956
-
"version": "30.0.2",
1957
-
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.2.tgz",
1958
-
"integrity": "sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA==",
1959
-
"dev": true,
1960
-
"license": "MIT",
1961
-
"dependencies": {
1962
-
"@jest/types": "30.0.1",
1963
-
"@sinonjs/fake-timers": "^13.0.0",
1964
-
"@types/node": "*",
1965
-
"jest-message-util": "30.0.2",
1966
-
"jest-mock": "30.0.2",
1967
-
"jest-util": "30.0.2"
1968
-
},
1969
-
"engines": {
1970
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1971
-
}
1972
-
},
1973
-
"node_modules/@jest/get-type": {
1974
-
"version": "30.0.1",
1975
-
"resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz",
1976
-
"integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==",
1977
-
"dev": true,
1978
-
"license": "MIT",
1979
-
"engines": {
1980
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1981
-
}
1982
-
},
1983
-
"node_modules/@jest/globals": {
1984
-
"version": "30.0.2",
1985
-
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.2.tgz",
1986
-
"integrity": "sha512-DwTtus9jjbG7b6jUdkcVdptf0wtD1v153A+PVwWB/zFwXhqu6hhtSd+uq88jofMhmYPtkmPmVGUBRNCZEKXn+w==",
1987
-
"dev": true,
1988
-
"license": "MIT",
1989
-
"dependencies": {
1990
-
"@jest/environment": "30.0.2",
1991
-
"@jest/expect": "30.0.2",
1992
-
"@jest/types": "30.0.1",
1993
-
"jest-mock": "30.0.2"
1994
-
},
1995
-
"engines": {
1996
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1997
-
}
1998
-
},
1999
-
"node_modules/@jest/pattern": {
2000
-
"version": "30.0.1",
2001
-
"resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
2002
-
"integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
2003
-
"dev": true,
2004
-
"license": "MIT",
2005
-
"dependencies": {
2006
-
"@types/node": "*",
2007
-
"jest-regex-util": "30.0.1"
2008
-
},
2009
-
"engines": {
2010
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2011
-
}
2012
-
},
2013
-
"node_modules/@jest/reporters": {
2014
-
"version": "30.0.2",
2015
-
"resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.2.tgz",
2016
-
"integrity": "sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA==",
2017
-
"dev": true,
2018
-
"license": "MIT",
2019
-
"dependencies": {
2020
-
"@bcoe/v8-coverage": "^0.2.3",
2021
-
"@jest/console": "30.0.2",
2022
-
"@jest/test-result": "30.0.2",
2023
-
"@jest/transform": "30.0.2",
2024
-
"@jest/types": "30.0.1",
2025
-
"@jridgewell/trace-mapping": "^0.3.25",
2026
-
"@types/node": "*",
2027
-
"chalk": "^4.1.2",
2028
-
"collect-v8-coverage": "^1.0.2",
2029
-
"exit-x": "^0.2.2",
2030
-
"glob": "^10.3.10",
2031
-
"graceful-fs": "^4.2.11",
2032
-
"istanbul-lib-coverage": "^3.0.0",
2033
-
"istanbul-lib-instrument": "^6.0.0",
2034
-
"istanbul-lib-report": "^3.0.0",
2035
-
"istanbul-lib-source-maps": "^5.0.0",
2036
-
"istanbul-reports": "^3.1.3",
2037
-
"jest-message-util": "30.0.2",
2038
-
"jest-util": "30.0.2",
2039
-
"jest-worker": "30.0.2",
2040
-
"slash": "^3.0.0",
2041
-
"string-length": "^4.0.2",
2042
-
"v8-to-istanbul": "^9.0.1"
2043
-
},
2044
-
"engines": {
2045
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2046
-
},
2047
-
"peerDependencies": {
2048
-
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
2049
-
},
2050
-
"peerDependenciesMeta": {
2051
-
"node-notifier": {
2052
-
"optional": true
2053
-
}
2054
-
}
2055
-
},
2056
-
"node_modules/@jest/schemas": {
2057
-
"version": "30.0.1",
2058
-
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz",
2059
-
"integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==",
2060
-
"dev": true,
2061
-
"license": "MIT",
2062
-
"dependencies": {
2063
-
"@sinclair/typebox": "^0.34.0"
2064
-
},
2065
-
"engines": {
2066
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2067
-
}
2068
-
},
2069
-
"node_modules/@jest/snapshot-utils": {
2070
-
"version": "30.0.1",
2071
-
"resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.1.tgz",
2072
-
"integrity": "sha512-6Dpv7vdtoRiISEFwYF8/c7LIvqXD7xDXtLPNzC2xqAfBznKip0MQM+rkseKwUPUpv2PJ7KW/YsnwWXrIL2xF+A==",
2073
-
"dev": true,
2074
-
"license": "MIT",
2075
-
"dependencies": {
2076
-
"@jest/types": "30.0.1",
2077
-
"chalk": "^4.1.2",
2078
-
"graceful-fs": "^4.2.11",
2079
-
"natural-compare": "^1.4.0"
2080
-
},
2081
-
"engines": {
2082
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2083
-
}
2084
-
},
2085
-
"node_modules/@jest/source-map": {
2086
-
"version": "30.0.1",
2087
-
"resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz",
2088
-
"integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==",
2089
-
"dev": true,
2090
-
"license": "MIT",
2091
-
"dependencies": {
2092
-
"@jridgewell/trace-mapping": "^0.3.25",
2093
-
"callsites": "^3.1.0",
2094
-
"graceful-fs": "^4.2.11"
2095
-
},
2096
-
"engines": {
2097
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2098
-
}
2099
-
},
2100
-
"node_modules/@jest/test-result": {
2101
-
"version": "30.0.2",
2102
-
"resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.2.tgz",
2103
-
"integrity": "sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w==",
2104
-
"dev": true,
2105
-
"license": "MIT",
2106
-
"dependencies": {
2107
-
"@jest/console": "30.0.2",
2108
-
"@jest/types": "30.0.1",
2109
-
"@types/istanbul-lib-coverage": "^2.0.6",
2110
-
"collect-v8-coverage": "^1.0.2"
2111
-
},
2112
-
"engines": {
2113
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2114
-
}
2115
-
},
2116
-
"node_modules/@jest/test-sequencer": {
2117
-
"version": "30.0.2",
2118
-
"resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz",
2119
-
"integrity": "sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw==",
2120
-
"dev": true,
2121
-
"license": "MIT",
2122
-
"dependencies": {
2123
-
"@jest/test-result": "30.0.2",
2124
-
"graceful-fs": "^4.2.11",
2125
-
"jest-haste-map": "30.0.2",
2126
-
"slash": "^3.0.0"
2127
-
},
2128
-
"engines": {
2129
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2130
-
}
2131
-
},
2132
-
"node_modules/@jest/transform": {
2133
-
"version": "30.0.2",
2134
-
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.2.tgz",
2135
-
"integrity": "sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA==",
2136
-
"dev": true,
2137
-
"license": "MIT",
2138
-
"dependencies": {
2139
-
"@babel/core": "^7.27.4",
2140
-
"@jest/types": "30.0.1",
2141
-
"@jridgewell/trace-mapping": "^0.3.25",
2142
-
"babel-plugin-istanbul": "^7.0.0",
2143
-
"chalk": "^4.1.2",
2144
-
"convert-source-map": "^2.0.0",
2145
-
"fast-json-stable-stringify": "^2.1.0",
2146
-
"graceful-fs": "^4.2.11",
2147
-
"jest-haste-map": "30.0.2",
2148
-
"jest-regex-util": "30.0.1",
2149
-
"jest-util": "30.0.2",
2150
-
"micromatch": "^4.0.8",
2151
-
"pirates": "^4.0.7",
2152
-
"slash": "^3.0.0",
2153
-
"write-file-atomic": "^5.0.1"
2154
-
},
2155
-
"engines": {
2156
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2157
-
}
2158
-
},
2159
-
"node_modules/@jest/types": {
2160
-
"version": "30.0.1",
2161
-
"resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz",
2162
-
"integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==",
2163
-
"dev": true,
2164
-
"license": "MIT",
2165
-
"dependencies": {
2166
-
"@jest/pattern": "30.0.1",
2167
-
"@jest/schemas": "30.0.1",
2168
-
"@types/istanbul-lib-coverage": "^2.0.6",
2169
-
"@types/istanbul-reports": "^3.0.4",
2170
-
"@types/node": "*",
2171
-
"@types/yargs": "^17.0.33",
2172
-
"chalk": "^4.1.2"
2173
-
},
2174
-
"engines": {
2175
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2176
-
}
2177
-
},
2178
-
"node_modules/@jridgewell/gen-mapping": {
2179
-
"version": "0.3.8",
2180
-
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
2181
-
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
2182
-
"dev": true,
2183
-
"license": "MIT",
2184
-
"dependencies": {
2185
-
"@jridgewell/set-array": "^1.2.1",
2186
-
"@jridgewell/sourcemap-codec": "^1.4.10",
2187
-
"@jridgewell/trace-mapping": "^0.3.24"
2188
-
},
2189
-
"engines": {
2190
-
"node": ">=6.0.0"
2191
-
}
2192
-
},
2193
-
"node_modules/@jridgewell/resolve-uri": {
2194
-
"version": "3.1.2",
2195
-
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
2196
-
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
2197
-
"dev": true,
2198
-
"license": "MIT",
2199
-
"engines": {
2200
-
"node": ">=6.0.0"
2201
-
}
2202
-
},
2203
-
"node_modules/@jridgewell/set-array": {
2204
-
"version": "1.2.1",
2205
-
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
2206
-
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
2207
-
"dev": true,
2208
-
"license": "MIT",
2209
-
"engines": {
2210
-
"node": ">=6.0.0"
2211
-
}
2212
-
},
2213
-
"node_modules/@jridgewell/sourcemap-codec": {
2214
-
"version": "1.5.0",
2215
-
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
2216
-
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
2217
-
"dev": true,
2218
-
"license": "MIT"
2219
-
},
2220
-
"node_modules/@jridgewell/trace-mapping": {
2221
-
"version": "0.3.25",
2222
-
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
2223
-
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
2224
-
"dev": true,
2225
-
"license": "MIT",
2226
-
"dependencies": {
2227
-
"@jridgewell/resolve-uri": "^3.1.0",
2228
-
"@jridgewell/sourcemap-codec": "^1.4.14"
2229
-
}
2230
-
},
2231
-
"node_modules/@napi-rs/wasm-runtime": {
2232
-
"version": "0.2.11",
2233
-
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz",
2234
-
"integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==",
2235
-
"dev": true,
2236
-
"license": "MIT",
2237
-
"optional": true,
2238
-
"dependencies": {
2239
-
"@emnapi/core": "^1.4.3",
2240
-
"@emnapi/runtime": "^1.4.3",
2241
-
"@tybys/wasm-util": "^0.9.0"
2242
-
}
2243
-
},
2244
-
"node_modules/@noble/curves": {
2245
-
"version": "1.9.2",
2246
-
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.2.tgz",
2247
-
"integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==",
2248
-
"license": "MIT",
2249
-
"dependencies": {
2250
-
"@noble/hashes": "1.8.0"
2251
-
},
2252
-
"engines": {
2253
-
"node": "^14.21.3 || >=16"
2254
-
},
2255
-
"funding": {
2256
-
"url": "https://paulmillr.com/funding/"
2257
-
}
2258
-
},
2259
-
"node_modules/@noble/hashes": {
2260
-
"version": "1.8.0",
2261
-
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
2262
-
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
2263
-
"license": "MIT",
2264
-
"engines": {
2265
-
"node": "^14.21.3 || >=16"
2266
-
},
2267
-
"funding": {
2268
-
"url": "https://paulmillr.com/funding/"
2269
-
}
2270
-
},
2271
-
"node_modules/@paralleldrive/cuid2": {
2272
-
"version": "2.2.2",
2273
-
"resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
2274
-
"integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
2275
-
"dev": true,
2276
-
"license": "MIT",
2277
-
"dependencies": {
2278
-
"@noble/hashes": "^1.1.5"
2279
-
}
2280
-
},
2281
-
"node_modules/@pkgjs/parseargs": {
2282
-
"version": "0.11.0",
2283
-
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
2284
-
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
2285
-
"dev": true,
2286
-
"license": "MIT",
2287
-
"optional": true,
2288
-
"engines": {
2289
-
"node": ">=14"
2290
-
}
2291
-
},
2292
-
"node_modules/@pkgr/core": {
2293
-
"version": "0.2.7",
2294
-
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz",
2295
-
"integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==",
2296
-
"dev": true,
2297
-
"license": "MIT",
2298
-
"engines": {
2299
-
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
2300
-
},
2301
-
"funding": {
2302
-
"url": "https://opencollective.com/pkgr"
2303
-
}
2304
-
},
2305
-
"node_modules/@sinclair/typebox": {
2306
-
"version": "0.34.35",
2307
-
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz",
2308
-
"integrity": "sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A==",
2309
-
"dev": true,
2310
-
"license": "MIT"
2311
-
},
2312
-
"node_modules/@sinonjs/commons": {
2313
-
"version": "3.0.1",
2314
-
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
2315
-
"integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
2316
-
"dev": true,
2317
-
"license": "BSD-3-Clause",
2318
-
"dependencies": {
2319
-
"type-detect": "4.0.8"
2320
-
}
2321
-
},
2322
-
"node_modules/@sinonjs/fake-timers": {
2323
-
"version": "13.0.5",
2324
-
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
2325
-
"integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
2326
-
"dev": true,
2327
-
"license": "BSD-3-Clause",
2328
-
"dependencies": {
2329
-
"@sinonjs/commons": "^3.0.1"
2330
-
}
2331
-
},
2332
-
"node_modules/@skyware/firehose": {
2333
-
"version": "0.5.1",
2334
-
"resolved": "https://registry.npmjs.org/@skyware/firehose/-/firehose-0.5.1.tgz",
2335
-
"integrity": "sha512-7fcTQtXCbD2t5ls/tvMeYuI8dHTiUuZvrMdD1Mq+ZyMPpjcQdv2OsmflTrldt5XY+kOgoaThImi7QEo07B3o2Q==",
2336
-
"license": "MPL-2.0",
2337
-
"dependencies": {
2338
-
"@atcute/car": "^3.0.3",
2339
-
"@atcute/cbor": "^2.2.2",
2340
-
"nanoevents": "^9.1.0"
2341
-
}
2342
-
},
2343
-
"node_modules/@tybys/wasm-util": {
2344
-
"version": "0.9.0",
2345
-
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz",
2346
-
"integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==",
2347
-
"dev": true,
2348
-
"license": "MIT",
2349
-
"optional": true,
2350
-
"dependencies": {
2351
-
"tslib": "^2.4.0"
2352
-
}
2353
-
},
2354
-
"node_modules/@types/babel__core": {
2355
-
"version": "7.20.5",
2356
-
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
2357
-
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
2358
-
"dev": true,
2359
-
"license": "MIT",
2360
-
"dependencies": {
2361
-
"@babel/parser": "^7.20.7",
2362
-
"@babel/types": "^7.20.7",
2363
-
"@types/babel__generator": "*",
2364
-
"@types/babel__template": "*",
2365
-
"@types/babel__traverse": "*"
2366
-
}
2367
-
},
2368
-
"node_modules/@types/babel__generator": {
2369
-
"version": "7.27.0",
2370
-
"resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
2371
-
"integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
2372
-
"dev": true,
2373
-
"license": "MIT",
2374
-
"dependencies": {
2375
-
"@babel/types": "^7.0.0"
2376
-
}
2377
-
},
2378
-
"node_modules/@types/babel__template": {
2379
-
"version": "7.4.4",
2380
-
"resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
2381
-
"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
2382
-
"dev": true,
2383
-
"license": "MIT",
2384
-
"dependencies": {
2385
-
"@babel/parser": "^7.1.0",
2386
-
"@babel/types": "^7.0.0"
2387
-
}
2388
-
},
2389
-
"node_modules/@types/babel__traverse": {
2390
-
"version": "7.20.7",
2391
-
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
2392
-
"integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
2393
-
"dev": true,
2394
-
"license": "MIT",
2395
-
"dependencies": {
2396
-
"@babel/types": "^7.20.7"
2397
-
}
2398
-
},
2399
-
"node_modules/@types/better-sqlite3": {
2400
-
"version": "7.6.13",
2401
-
"resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz",
2402
-
"integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==",
2403
-
"license": "MIT",
2404
-
"dependencies": {
2405
-
"@types/node": "*"
2406
-
}
2407
-
},
2408
-
"node_modules/@types/body-parser": {
2409
-
"version": "1.19.6",
2410
-
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
2411
-
"integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
2412
-
"license": "MIT",
2413
-
"dependencies": {
2414
-
"@types/connect": "*",
2415
-
"@types/node": "*"
2416
-
}
2417
-
},
2418
-
"node_modules/@types/connect": {
2419
-
"version": "3.4.38",
2420
-
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
2421
-
"integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
2422
-
"license": "MIT",
2423
-
"dependencies": {
2424
-
"@types/node": "*"
2425
-
}
2426
-
},
2427
-
"node_modules/@types/cookiejar": {
2428
-
"version": "2.1.5",
2429
-
"resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz",
2430
-
"integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==",
2431
-
"dev": true,
2432
-
"license": "MIT"
2433
-
},
2434
-
"node_modules/@types/cors": {
2435
-
"version": "2.8.19",
2436
-
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
2437
-
"integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
2438
-
"license": "MIT",
2439
-
"dependencies": {
2440
-
"@types/node": "*"
2441
-
}
2442
-
},
2443
-
"node_modules/@types/express": {
2444
-
"version": "5.0.3",
2445
-
"resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz",
2446
-
"integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==",
2447
-
"license": "MIT",
2448
-
"dependencies": {
2449
-
"@types/body-parser": "*",
2450
-
"@types/express-serve-static-core": "^5.0.0",
2451
-
"@types/serve-static": "*"
2452
-
}
2453
-
},
2454
-
"node_modules/@types/express-serve-static-core": {
2455
-
"version": "5.0.6",
2456
-
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz",
2457
-
"integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==",
2458
-
"license": "MIT",
2459
-
"dependencies": {
2460
-
"@types/node": "*",
2461
-
"@types/qs": "*",
2462
-
"@types/range-parser": "*",
2463
-
"@types/send": "*"
2464
-
}
2465
-
},
2466
-
"node_modules/@types/express-session": {
2467
-
"version": "1.18.2",
2468
-
"resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.18.2.tgz",
2469
-
"integrity": "sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==",
2470
-
"license": "MIT",
2471
-
"dependencies": {
2472
-
"@types/express": "*"
2473
-
}
2474
-
},
2475
-
"node_modules/@types/http-errors": {
2476
-
"version": "2.0.5",
2477
-
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
2478
-
"integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
2479
-
"license": "MIT"
2480
-
},
2481
-
"node_modules/@types/istanbul-lib-coverage": {
2482
-
"version": "2.0.6",
2483
-
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
2484
-
"integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
2485
-
"dev": true,
2486
-
"license": "MIT"
2487
-
},
2488
-
"node_modules/@types/istanbul-lib-report": {
2489
-
"version": "3.0.3",
2490
-
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
2491
-
"integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
2492
-
"dev": true,
2493
-
"license": "MIT",
2494
-
"dependencies": {
2495
-
"@types/istanbul-lib-coverage": "*"
2496
-
}
2497
-
},
2498
-
"node_modules/@types/istanbul-reports": {
2499
-
"version": "3.0.4",
2500
-
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
2501
-
"integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
2502
-
"dev": true,
2503
-
"license": "MIT",
2504
-
"dependencies": {
2505
-
"@types/istanbul-lib-report": "*"
2506
-
}
2507
-
},
2508
-
"node_modules/@types/jest": {
2509
-
"version": "30.0.0",
2510
-
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz",
2511
-
"integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==",
2512
-
"dev": true,
2513
-
"license": "MIT",
2514
-
"dependencies": {
2515
-
"expect": "^30.0.0",
2516
-
"pretty-format": "^30.0.0"
2517
-
}
2518
-
},
2519
-
"node_modules/@types/methods": {
2520
-
"version": "1.1.4",
2521
-
"resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz",
2522
-
"integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==",
2523
-
"dev": true,
2524
-
"license": "MIT"
2525
-
},
2526
-
"node_modules/@types/mime": {
2527
-
"version": "1.3.5",
2528
-
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
2529
-
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
2530
-
"license": "MIT"
2531
-
},
2532
-
"node_modules/@types/node": {
2533
-
"version": "24.0.3",
2534
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz",
2535
-
"integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==",
2536
-
"license": "MIT",
2537
-
"dependencies": {
2538
-
"undici-types": "~7.8.0"
2539
-
}
2540
-
},
2541
-
"node_modules/@types/qs": {
2542
-
"version": "6.14.0",
2543
-
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
2544
-
"integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
2545
-
"license": "MIT"
2546
-
},
2547
-
"node_modules/@types/range-parser": {
2548
-
"version": "1.2.7",
2549
-
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
2550
-
"integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
2551
-
"license": "MIT"
2552
-
},
2553
-
"node_modules/@types/send": {
2554
-
"version": "0.17.5",
2555
-
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
2556
-
"integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
2557
-
"license": "MIT",
2558
-
"dependencies": {
2559
-
"@types/mime": "^1",
2560
-
"@types/node": "*"
2561
-
}
2562
-
},
2563
-
"node_modules/@types/serve-static": {
2564
-
"version": "1.15.8",
2565
-
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz",
2566
-
"integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==",
2567
-
"license": "MIT",
2568
-
"dependencies": {
2569
-
"@types/http-errors": "*",
2570
-
"@types/node": "*",
2571
-
"@types/send": "*"
2572
-
}
2573
-
},
2574
-
"node_modules/@types/stack-utils": {
2575
-
"version": "2.0.3",
2576
-
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
2577
-
"integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
2578
-
"dev": true,
2579
-
"license": "MIT"
2580
-
},
2581
-
"node_modules/@types/superagent": {
2582
-
"version": "8.1.9",
2583
-
"resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz",
2584
-
"integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==",
2585
-
"dev": true,
2586
-
"license": "MIT",
2587
-
"dependencies": {
2588
-
"@types/cookiejar": "^2.1.5",
2589
-
"@types/methods": "^1.1.4",
2590
-
"@types/node": "*",
2591
-
"form-data": "^4.0.0"
2592
-
}
2593
-
},
2594
-
"node_modules/@types/supertest": {
2595
-
"version": "6.0.3",
2596
-
"resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz",
2597
-
"integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==",
2598
-
"dev": true,
2599
-
"license": "MIT",
2600
-
"dependencies": {
2601
-
"@types/methods": "^1.1.4",
2602
-
"@types/superagent": "^8.1.0"
2603
-
}
2604
-
},
2605
-
"node_modules/@types/ws": {
2606
-
"version": "8.18.1",
2607
-
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
2608
-
"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
2609
-
"license": "MIT",
2610
-
"dependencies": {
2611
-
"@types/node": "*"
2612
-
}
2613
-
},
2614
-
"node_modules/@types/yargs": {
2615
-
"version": "17.0.33",
2616
-
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
2617
-
"integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
2618
-
"dev": true,
2619
-
"license": "MIT",
2620
-
"dependencies": {
2621
-
"@types/yargs-parser": "*"
2622
-
}
2623
-
},
2624
-
"node_modules/@types/yargs-parser": {
2625
-
"version": "21.0.3",
2626
-
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
2627
-
"integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
2628
-
"dev": true,
2629
-
"license": "MIT"
2630
-
},
2631
-
"node_modules/@ungap/structured-clone": {
2632
-
"version": "1.3.0",
2633
-
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
2634
-
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
2635
-
"dev": true,
2636
-
"license": "ISC"
2637
-
},
2638
-
"node_modules/@unrs/resolver-binding-android-arm-eabi": {
2639
-
"version": "1.9.0",
2640
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz",
2641
-
"integrity": "sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==",
2642
-
"cpu": [
2643
-
"arm"
2644
-
],
2645
-
"dev": true,
2646
-
"license": "MIT",
2647
-
"optional": true,
2648
-
"os": [
2649
-
"android"
2650
-
]
2651
-
},
2652
-
"node_modules/@unrs/resolver-binding-android-arm64": {
2653
-
"version": "1.9.0",
2654
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz",
2655
-
"integrity": "sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==",
2656
-
"cpu": [
2657
-
"arm64"
2658
-
],
2659
-
"dev": true,
2660
-
"license": "MIT",
2661
-
"optional": true,
2662
-
"os": [
2663
-
"android"
2664
-
]
2665
-
},
2666
-
"node_modules/@unrs/resolver-binding-darwin-arm64": {
2667
-
"version": "1.9.0",
2668
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz",
2669
-
"integrity": "sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A==",
2670
-
"cpu": [
2671
-
"arm64"
2672
-
],
2673
-
"dev": true,
2674
-
"license": "MIT",
2675
-
"optional": true,
2676
-
"os": [
2677
-
"darwin"
2678
-
]
2679
-
},
2680
-
"node_modules/@unrs/resolver-binding-darwin-x64": {
2681
-
"version": "1.9.0",
2682
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz",
2683
-
"integrity": "sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==",
2684
-
"cpu": [
2685
-
"x64"
2686
-
],
2687
-
"dev": true,
2688
-
"license": "MIT",
2689
-
"optional": true,
2690
-
"os": [
2691
-
"darwin"
2692
-
]
2693
-
},
2694
-
"node_modules/@unrs/resolver-binding-freebsd-x64": {
2695
-
"version": "1.9.0",
2696
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz",
2697
-
"integrity": "sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==",
2698
-
"cpu": [
2699
-
"x64"
2700
-
],
2701
-
"dev": true,
2702
-
"license": "MIT",
2703
-
"optional": true,
2704
-
"os": [
2705
-
"freebsd"
2706
-
]
2707
-
},
2708
-
"node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
2709
-
"version": "1.9.0",
2710
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz",
2711
-
"integrity": "sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==",
2712
-
"cpu": [
2713
-
"arm"
2714
-
],
2715
-
"dev": true,
2716
-
"license": "MIT",
2717
-
"optional": true,
2718
-
"os": [
2719
-
"linux"
2720
-
]
2721
-
},
2722
-
"node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
2723
-
"version": "1.9.0",
2724
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz",
2725
-
"integrity": "sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==",
2726
-
"cpu": [
2727
-
"arm"
2728
-
],
2729
-
"dev": true,
2730
-
"license": "MIT",
2731
-
"optional": true,
2732
-
"os": [
2733
-
"linux"
2734
-
]
2735
-
},
2736
-
"node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
2737
-
"version": "1.9.0",
2738
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz",
2739
-
"integrity": "sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==",
2740
-
"cpu": [
2741
-
"arm64"
2742
-
],
2743
-
"dev": true,
2744
-
"license": "MIT",
2745
-
"optional": true,
2746
-
"os": [
2747
-
"linux"
2748
-
]
2749
-
},
2750
-
"node_modules/@unrs/resolver-binding-linux-arm64-musl": {
2751
-
"version": "1.9.0",
2752
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz",
2753
-
"integrity": "sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==",
2754
-
"cpu": [
2755
-
"arm64"
2756
-
],
2757
-
"dev": true,
2758
-
"license": "MIT",
2759
-
"optional": true,
2760
-
"os": [
2761
-
"linux"
2762
-
]
2763
-
},
2764
-
"node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
2765
-
"version": "1.9.0",
2766
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz",
2767
-
"integrity": "sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==",
2768
-
"cpu": [
2769
-
"ppc64"
2770
-
],
2771
-
"dev": true,
2772
-
"license": "MIT",
2773
-
"optional": true,
2774
-
"os": [
2775
-
"linux"
2776
-
]
2777
-
},
2778
-
"node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
2779
-
"version": "1.9.0",
2780
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz",
2781
-
"integrity": "sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==",
2782
-
"cpu": [
2783
-
"riscv64"
2784
-
],
2785
-
"dev": true,
2786
-
"license": "MIT",
2787
-
"optional": true,
2788
-
"os": [
2789
-
"linux"
2790
-
]
2791
-
},
2792
-
"node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
2793
-
"version": "1.9.0",
2794
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz",
2795
-
"integrity": "sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==",
2796
-
"cpu": [
2797
-
"riscv64"
2798
-
],
2799
-
"dev": true,
2800
-
"license": "MIT",
2801
-
"optional": true,
2802
-
"os": [
2803
-
"linux"
2804
-
]
2805
-
},
2806
-
"node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
2807
-
"version": "1.9.0",
2808
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz",
2809
-
"integrity": "sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==",
2810
-
"cpu": [
2811
-
"s390x"
2812
-
],
2813
-
"dev": true,
2814
-
"license": "MIT",
2815
-
"optional": true,
2816
-
"os": [
2817
-
"linux"
2818
-
]
2819
-
},
2820
-
"node_modules/@unrs/resolver-binding-linux-x64-gnu": {
2821
-
"version": "1.9.0",
2822
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz",
2823
-
"integrity": "sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==",
2824
-
"cpu": [
2825
-
"x64"
2826
-
],
2827
-
"dev": true,
2828
-
"license": "MIT",
2829
-
"optional": true,
2830
-
"os": [
2831
-
"linux"
2832
-
]
2833
-
},
2834
-
"node_modules/@unrs/resolver-binding-linux-x64-musl": {
2835
-
"version": "1.9.0",
2836
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz",
2837
-
"integrity": "sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==",
2838
-
"cpu": [
2839
-
"x64"
2840
-
],
2841
-
"dev": true,
2842
-
"license": "MIT",
2843
-
"optional": true,
2844
-
"os": [
2845
-
"linux"
2846
-
]
2847
-
},
2848
-
"node_modules/@unrs/resolver-binding-wasm32-wasi": {
2849
-
"version": "1.9.0",
2850
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz",
2851
-
"integrity": "sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==",
2852
-
"cpu": [
2853
-
"wasm32"
2854
-
],
2855
-
"dev": true,
2856
-
"license": "MIT",
2857
-
"optional": true,
2858
-
"dependencies": {
2859
-
"@napi-rs/wasm-runtime": "^0.2.11"
2860
-
},
2861
-
"engines": {
2862
-
"node": ">=14.0.0"
2863
-
}
2864
-
},
2865
-
"node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
2866
-
"version": "1.9.0",
2867
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz",
2868
-
"integrity": "sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==",
2869
-
"cpu": [
2870
-
"arm64"
2871
-
],
2872
-
"dev": true,
2873
-
"license": "MIT",
2874
-
"optional": true,
2875
-
"os": [
2876
-
"win32"
2877
-
]
2878
-
},
2879
-
"node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
2880
-
"version": "1.9.0",
2881
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz",
2882
-
"integrity": "sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==",
2883
-
"cpu": [
2884
-
"ia32"
2885
-
],
2886
-
"dev": true,
2887
-
"license": "MIT",
2888
-
"optional": true,
2889
-
"os": [
2890
-
"win32"
2891
-
]
2892
-
},
2893
-
"node_modules/@unrs/resolver-binding-win32-x64-msvc": {
2894
-
"version": "1.9.0",
2895
-
"resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz",
2896
-
"integrity": "sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==",
2897
-
"cpu": [
2898
-
"x64"
2899
-
],
2900
-
"dev": true,
2901
-
"license": "MIT",
2902
-
"optional": true,
2903
-
"os": [
2904
-
"win32"
2905
-
]
2906
-
},
2907
-
"node_modules/abort-controller": {
2908
-
"version": "3.0.0",
2909
-
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
2910
-
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
2911
-
"license": "MIT",
2912
-
"dependencies": {
2913
-
"event-target-shim": "^5.0.0"
2914
-
},
2915
-
"engines": {
2916
-
"node": ">=6.5"
2917
-
}
2918
-
},
2919
-
"node_modules/accepts": {
2920
-
"version": "2.0.0",
2921
-
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
2922
-
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
2923
-
"license": "MIT",
2924
-
"dependencies": {
2925
-
"mime-types": "^3.0.0",
2926
-
"negotiator": "^1.0.0"
2927
-
},
2928
-
"engines": {
2929
-
"node": ">= 0.6"
2930
-
}
2931
-
},
2932
-
"node_modules/ansi-escapes": {
2933
-
"version": "4.3.2",
2934
-
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
2935
-
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
2936
-
"dev": true,
2937
-
"license": "MIT",
2938
-
"dependencies": {
2939
-
"type-fest": "^0.21.3"
2940
-
},
2941
-
"engines": {
2942
-
"node": ">=8"
2943
-
},
2944
-
"funding": {
2945
-
"url": "https://github.com/sponsors/sindresorhus"
2946
-
}
2947
-
},
2948
-
"node_modules/ansi-regex": {
2949
-
"version": "5.0.1",
2950
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2951
-
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2952
-
"dev": true,
2953
-
"license": "MIT",
2954
-
"engines": {
2955
-
"node": ">=8"
2956
-
}
2957
-
},
2958
-
"node_modules/ansi-styles": {
2959
-
"version": "4.3.0",
2960
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2961
-
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2962
-
"license": "MIT",
2963
-
"dependencies": {
2964
-
"color-convert": "^2.0.1"
2965
-
},
2966
-
"engines": {
2967
-
"node": ">=8"
2968
-
},
2969
-
"funding": {
2970
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
2971
-
}
2972
-
},
2973
-
"node_modules/anymatch": {
2974
-
"version": "3.1.3",
2975
-
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
2976
-
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
2977
-
"dev": true,
2978
-
"license": "ISC",
2979
-
"dependencies": {
2980
-
"normalize-path": "^3.0.0",
2981
-
"picomatch": "^2.0.4"
2982
-
},
2983
-
"engines": {
2984
-
"node": ">= 8"
2985
-
}
2986
-
},
2987
-
"node_modules/argparse": {
2988
-
"version": "1.0.10",
2989
-
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
2990
-
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
2991
-
"dev": true,
2992
-
"license": "MIT",
2993
-
"dependencies": {
2994
-
"sprintf-js": "~1.0.2"
2995
-
}
2996
-
},
2997
-
"node_modules/array-flatten": {
2998
-
"version": "1.1.1",
2999
-
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
3000
-
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
3001
-
"license": "MIT"
3002
-
},
3003
-
"node_modules/asap": {
3004
-
"version": "2.0.6",
3005
-
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
3006
-
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
3007
-
"dev": true,
3008
-
"license": "MIT"
3009
-
},
3010
-
"node_modules/async": {
3011
-
"version": "3.2.6",
3012
-
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
3013
-
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
3014
-
"license": "MIT"
3015
-
},
3016
-
"node_modules/asynckit": {
3017
-
"version": "0.4.0",
3018
-
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
3019
-
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
3020
-
"dev": true,
3021
-
"license": "MIT"
3022
-
},
3023
-
"node_modules/atomic-sleep": {
3024
-
"version": "1.0.0",
3025
-
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
3026
-
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
3027
-
"license": "MIT",
3028
-
"engines": {
3029
-
"node": ">=8.0.0"
3030
-
}
3031
-
},
3032
-
"node_modules/await-lock": {
3033
-
"version": "2.2.2",
3034
-
"resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
3035
-
"integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==",
3036
-
"license": "MIT"
3037
-
},
3038
-
"node_modules/babel-jest": {
3039
-
"version": "30.0.2",
3040
-
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.2.tgz",
3041
-
"integrity": "sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ==",
3042
-
"dev": true,
3043
-
"license": "MIT",
3044
-
"dependencies": {
3045
-
"@jest/transform": "30.0.2",
3046
-
"@types/babel__core": "^7.20.5",
3047
-
"babel-plugin-istanbul": "^7.0.0",
3048
-
"babel-preset-jest": "30.0.1",
3049
-
"chalk": "^4.1.2",
3050
-
"graceful-fs": "^4.2.11",
3051
-
"slash": "^3.0.0"
3052
-
},
3053
-
"engines": {
3054
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
3055
-
},
3056
-
"peerDependencies": {
3057
-
"@babel/core": "^7.11.0"
3058
-
}
3059
-
},
3060
-
"node_modules/babel-plugin-istanbul": {
3061
-
"version": "7.0.0",
3062
-
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz",
3063
-
"integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==",
3064
-
"dev": true,
3065
-
"license": "BSD-3-Clause",
3066
-
"dependencies": {
3067
-
"@babel/helper-plugin-utils": "^7.0.0",
3068
-
"@istanbuljs/load-nyc-config": "^1.0.0",
3069
-
"@istanbuljs/schema": "^0.1.3",
3070
-
"istanbul-lib-instrument": "^6.0.2",
3071
-
"test-exclude": "^6.0.0"
3072
-
},
3073
-
"engines": {
3074
-
"node": ">=12"
3075
-
}
3076
-
},
3077
-
"node_modules/babel-plugin-jest-hoist": {
3078
-
"version": "30.0.1",
3079
-
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz",
3080
-
"integrity": "sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==",
3081
-
"dev": true,
3082
-
"license": "MIT",
3083
-
"dependencies": {
3084
-
"@babel/template": "^7.27.2",
3085
-
"@babel/types": "^7.27.3",
3086
-
"@types/babel__core": "^7.20.5"
3087
-
},
3088
-
"engines": {
3089
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
3090
-
}
3091
-
},
3092
-
"node_modules/babel-preset-current-node-syntax": {
3093
-
"version": "1.1.0",
3094
-
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz",
3095
-
"integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==",
3096
-
"dev": true,
3097
-
"license": "MIT",
3098
-
"dependencies": {
3099
-
"@babel/plugin-syntax-async-generators": "^7.8.4",
3100
-
"@babel/plugin-syntax-bigint": "^7.8.3",
3101
-
"@babel/plugin-syntax-class-properties": "^7.12.13",
3102
-
"@babel/plugin-syntax-class-static-block": "^7.14.5",
3103
-
"@babel/plugin-syntax-import-attributes": "^7.24.7",
3104
-
"@babel/plugin-syntax-import-meta": "^7.10.4",
3105
-
"@babel/plugin-syntax-json-strings": "^7.8.3",
3106
-
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
3107
-
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
3108
-
"@babel/plugin-syntax-numeric-separator": "^7.10.4",
3109
-
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
3110
-
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
3111
-
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
3112
-
"@babel/plugin-syntax-private-property-in-object": "^7.14.5",
3113
-
"@babel/plugin-syntax-top-level-await": "^7.14.5"
3114
-
},
3115
-
"peerDependencies": {
3116
-
"@babel/core": "^7.0.0"
3117
-
}
3118
-
},
3119
-
"node_modules/babel-preset-jest": {
3120
-
"version": "30.0.1",
3121
-
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz",
3122
-
"integrity": "sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==",
3123
-
"dev": true,
3124
-
"license": "MIT",
3125
-
"dependencies": {
3126
-
"babel-plugin-jest-hoist": "30.0.1",
3127
-
"babel-preset-current-node-syntax": "^1.1.0"
3128
-
},
3129
-
"engines": {
3130
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
3131
-
},
3132
-
"peerDependencies": {
3133
-
"@babel/core": "^7.11.0"
3134
-
}
3135
-
},
3136
-
"node_modules/balanced-match": {
3137
-
"version": "1.0.2",
3138
-
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
3139
-
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
3140
-
"license": "MIT"
3141
-
},
3142
-
"node_modules/base64-js": {
3143
-
"version": "1.5.1",
3144
-
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
3145
-
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
3146
-
"funding": [
3147
-
{
3148
-
"type": "github",
3149
-
"url": "https://github.com/sponsors/feross"
3150
-
},
3151
-
{
3152
-
"type": "patreon",
3153
-
"url": "https://www.patreon.com/feross"
3154
-
},
3155
-
{
3156
-
"type": "consulting",
3157
-
"url": "https://feross.org/support"
3158
-
}
3159
-
],
3160
-
"license": "MIT"
3161
-
},
3162
-
"node_modules/better-sqlite3": {
3163
-
"version": "11.10.0",
3164
-
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz",
3165
-
"integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==",
3166
-
"hasInstallScript": true,
3167
-
"license": "MIT",
3168
-
"dependencies": {
3169
-
"bindings": "^1.5.0",
3170
-
"prebuild-install": "^7.1.1"
3171
-
}
3172
-
},
3173
-
"node_modules/bindings": {
3174
-
"version": "1.5.0",
3175
-
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
3176
-
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
3177
-
"license": "MIT",
3178
-
"dependencies": {
3179
-
"file-uri-to-path": "1.0.0"
3180
-
}
3181
-
},
3182
-
"node_modules/bl": {
3183
-
"version": "4.1.0",
3184
-
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
3185
-
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
3186
-
"license": "MIT",
3187
-
"dependencies": {
3188
-
"buffer": "^5.5.0",
3189
-
"inherits": "^2.0.4",
3190
-
"readable-stream": "^3.4.0"
3191
-
}
3192
-
},
3193
-
"node_modules/body-parser": {
3194
-
"version": "2.2.0",
3195
-
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
3196
-
"integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
3197
-
"license": "MIT",
3198
-
"dependencies": {
3199
-
"bytes": "^3.1.2",
3200
-
"content-type": "^1.0.5",
3201
-
"debug": "^4.4.0",
3202
-
"http-errors": "^2.0.0",
3203
-
"iconv-lite": "^0.6.3",
3204
-
"on-finished": "^2.4.1",
3205
-
"qs": "^6.14.0",
3206
-
"raw-body": "^3.0.0",
3207
-
"type-is": "^2.0.0"
3208
-
},
3209
-
"engines": {
3210
-
"node": ">=18"
3211
-
}
3212
-
},
3213
-
"node_modules/brace-expansion": {
3214
-
"version": "1.1.12",
3215
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
3216
-
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
3217
-
"license": "MIT",
3218
-
"dependencies": {
3219
-
"balanced-match": "^1.0.0",
3220
-
"concat-map": "0.0.1"
3221
-
}
3222
-
},
3223
-
"node_modules/braces": {
3224
-
"version": "3.0.3",
3225
-
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
3226
-
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
3227
-
"dev": true,
3228
-
"license": "MIT",
3229
-
"dependencies": {
3230
-
"fill-range": "^7.1.1"
3231
-
},
3232
-
"engines": {
3233
-
"node": ">=8"
3234
-
}
3235
-
},
3236
-
"node_modules/browserslist": {
3237
-
"version": "4.25.0",
3238
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
3239
-
"integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
3240
-
"dev": true,
3241
-
"funding": [
3242
-
{
3243
-
"type": "opencollective",
3244
-
"url": "https://opencollective.com/browserslist"
3245
-
},
3246
-
{
3247
-
"type": "tidelift",
3248
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
3249
-
},
3250
-
{
3251
-
"type": "github",
3252
-
"url": "https://github.com/sponsors/ai"
3253
-
}
3254
-
],
3255
-
"license": "MIT",
3256
-
"dependencies": {
3257
-
"caniuse-lite": "^1.0.30001718",
3258
-
"electron-to-chromium": "^1.5.160",
3259
-
"node-releases": "^2.0.19",
3260
-
"update-browserslist-db": "^1.1.3"
3261
-
},
3262
-
"bin": {
3263
-
"browserslist": "cli.js"
3264
-
},
3265
-
"engines": {
3266
-
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
3267
-
}
3268
-
},
3269
-
"node_modules/bs-logger": {
3270
-
"version": "0.2.6",
3271
-
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
3272
-
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
3273
-
"dev": true,
3274
-
"license": "MIT",
3275
-
"dependencies": {
3276
-
"fast-json-stable-stringify": "2.x"
3277
-
},
3278
-
"engines": {
3279
-
"node": ">= 6"
3280
-
}
3281
-
},
3282
-
"node_modules/bser": {
3283
-
"version": "2.1.1",
3284
-
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
3285
-
"integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
3286
-
"dev": true,
3287
-
"license": "Apache-2.0",
3288
-
"dependencies": {
3289
-
"node-int64": "^0.4.0"
3290
-
}
3291
-
},
3292
-
"node_modules/buffer": {
3293
-
"version": "5.7.1",
3294
-
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
3295
-
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
3296
-
"funding": [
3297
-
{
3298
-
"type": "github",
3299
-
"url": "https://github.com/sponsors/feross"
3300
-
},
3301
-
{
3302
-
"type": "patreon",
3303
-
"url": "https://www.patreon.com/feross"
3304
-
},
3305
-
{
3306
-
"type": "consulting",
3307
-
"url": "https://feross.org/support"
3308
-
}
3309
-
],
3310
-
"license": "MIT",
3311
-
"dependencies": {
3312
-
"base64-js": "^1.3.1",
3313
-
"ieee754": "^1.1.13"
3314
-
}
3315
-
},
3316
-
"node_modules/buffer-from": {
3317
-
"version": "1.1.2",
3318
-
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
3319
-
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
3320
-
"dev": true,
3321
-
"license": "MIT"
3322
-
},
3323
-
"node_modules/bytes": {
3324
-
"version": "3.1.2",
3325
-
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
3326
-
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
3327
-
"license": "MIT",
3328
-
"engines": {
3329
-
"node": ">= 0.8"
3330
-
}
3331
-
},
3332
-
"node_modules/call-bind-apply-helpers": {
3333
-
"version": "1.0.2",
3334
-
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
3335
-
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
3336
-
"license": "MIT",
3337
-
"dependencies": {
3338
-
"es-errors": "^1.3.0",
3339
-
"function-bind": "^1.1.2"
3340
-
},
3341
-
"engines": {
3342
-
"node": ">= 0.4"
3343
-
}
3344
-
},
3345
-
"node_modules/call-bound": {
3346
-
"version": "1.0.4",
3347
-
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
3348
-
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
3349
-
"license": "MIT",
3350
-
"dependencies": {
3351
-
"call-bind-apply-helpers": "^1.0.2",
3352
-
"get-intrinsic": "^1.3.0"
3353
-
},
3354
-
"engines": {
3355
-
"node": ">= 0.4"
3356
-
},
3357
-
"funding": {
3358
-
"url": "https://github.com/sponsors/ljharb"
3359
-
}
3360
-
},
3361
-
"node_modules/callsites": {
3362
-
"version": "3.1.0",
3363
-
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
3364
-
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
3365
-
"dev": true,
3366
-
"license": "MIT",
3367
-
"engines": {
3368
-
"node": ">=6"
3369
-
}
3370
-
},
3371
-
"node_modules/camelcase": {
3372
-
"version": "5.3.1",
3373
-
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
3374
-
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
3375
-
"dev": true,
3376
-
"license": "MIT",
3377
-
"engines": {
3378
-
"node": ">=6"
3379
-
}
3380
-
},
3381
-
"node_modules/caniuse-lite": {
3382
-
"version": "1.0.30001723",
3383
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz",
3384
-
"integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==",
3385
-
"dev": true,
3386
-
"funding": [
3387
-
{
3388
-
"type": "opencollective",
3389
-
"url": "https://opencollective.com/browserslist"
3390
-
},
3391
-
{
3392
-
"type": "tidelift",
3393
-
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
3394
-
},
3395
-
{
3396
-
"type": "github",
3397
-
"url": "https://github.com/sponsors/ai"
3398
-
}
3399
-
],
3400
-
"license": "CC-BY-4.0"
3401
-
},
3402
-
"node_modules/cbor-extract": {
3403
-
"version": "2.2.0",
3404
-
"resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz",
3405
-
"integrity": "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==",
3406
-
"hasInstallScript": true,
3407
-
"license": "MIT",
3408
-
"optional": true,
3409
-
"dependencies": {
3410
-
"node-gyp-build-optional-packages": "5.1.1"
3411
-
},
3412
-
"bin": {
3413
-
"download-cbor-prebuilds": "bin/download-prebuilds.js"
3414
-
},
3415
-
"optionalDependencies": {
3416
-
"@cbor-extract/cbor-extract-darwin-arm64": "2.2.0",
3417
-
"@cbor-extract/cbor-extract-darwin-x64": "2.2.0",
3418
-
"@cbor-extract/cbor-extract-linux-arm": "2.2.0",
3419
-
"@cbor-extract/cbor-extract-linux-arm64": "2.2.0",
3420
-
"@cbor-extract/cbor-extract-linux-x64": "2.2.0",
3421
-
"@cbor-extract/cbor-extract-win32-x64": "2.2.0"
3422
-
}
3423
-
},
3424
-
"node_modules/cbor-x": {
3425
-
"version": "1.6.0",
3426
-
"resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz",
3427
-
"integrity": "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==",
3428
-
"license": "MIT",
3429
-
"optionalDependencies": {
3430
-
"cbor-extract": "^2.2.0"
3431
-
}
3432
-
},
3433
-
"node_modules/cborg": {
3434
-
"version": "4.2.12",
3435
-
"resolved": "https://registry.npmjs.org/cborg/-/cborg-4.2.12.tgz",
3436
-
"integrity": "sha512-z126yLoavS75cdTuiKu61RC3Y3trqtDAgQRa5Q0dpHn1RmqhIedptWXKnk0lQ5yo/GmcV9myvIkzFgZ8GnqSog==",
3437
-
"license": "Apache-2.0",
3438
-
"bin": {
3439
-
"cborg": "lib/bin.js"
3440
-
}
3441
-
},
3442
-
"node_modules/chalk": {
3443
-
"version": "4.1.2",
3444
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
3445
-
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
3446
-
"license": "MIT",
3447
-
"dependencies": {
3448
-
"ansi-styles": "^4.1.0",
3449
-
"supports-color": "^7.1.0"
3450
-
},
3451
-
"engines": {
3452
-
"node": ">=10"
3453
-
},
3454
-
"funding": {
3455
-
"url": "https://github.com/chalk/chalk?sponsor=1"
3456
-
}
3457
-
},
3458
-
"node_modules/char-regex": {
3459
-
"version": "1.0.2",
3460
-
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
3461
-
"integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
3462
-
"dev": true,
3463
-
"license": "MIT",
3464
-
"engines": {
3465
-
"node": ">=10"
3466
-
}
3467
-
},
3468
-
"node_modules/chownr": {
3469
-
"version": "1.1.4",
3470
-
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
3471
-
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
3472
-
"license": "ISC"
3473
-
},
3474
-
"node_modules/ci-info": {
3475
-
"version": "4.2.0",
3476
-
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
3477
-
"integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
3478
-
"dev": true,
3479
-
"funding": [
3480
-
{
3481
-
"type": "github",
3482
-
"url": "https://github.com/sponsors/sibiraj-s"
3483
-
}
3484
-
],
3485
-
"license": "MIT",
3486
-
"engines": {
3487
-
"node": ">=8"
3488
-
}
3489
-
},
3490
-
"node_modules/cjs-module-lexer": {
3491
-
"version": "2.1.0",
3492
-
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz",
3493
-
"integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==",
3494
-
"dev": true,
3495
-
"license": "MIT"
3496
-
},
3497
-
"node_modules/cliui": {
3498
-
"version": "8.0.1",
3499
-
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
3500
-
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
3501
-
"dev": true,
3502
-
"license": "ISC",
3503
-
"dependencies": {
3504
-
"string-width": "^4.2.0",
3505
-
"strip-ansi": "^6.0.1",
3506
-
"wrap-ansi": "^7.0.0"
3507
-
},
3508
-
"engines": {
3509
-
"node": ">=12"
3510
-
}
3511
-
},
3512
-
"node_modules/co": {
3513
-
"version": "4.6.0",
3514
-
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
3515
-
"integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
3516
-
"dev": true,
3517
-
"license": "MIT",
3518
-
"engines": {
3519
-
"iojs": ">= 1.0.0",
3520
-
"node": ">= 0.12.0"
3521
-
}
3522
-
},
3523
-
"node_modules/collect-v8-coverage": {
3524
-
"version": "1.0.2",
3525
-
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
3526
-
"integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
3527
-
"dev": true,
3528
-
"license": "MIT"
3529
-
},
3530
-
"node_modules/color-convert": {
3531
-
"version": "2.0.1",
3532
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
3533
-
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
3534
-
"license": "MIT",
3535
-
"dependencies": {
3536
-
"color-name": "~1.1.4"
3537
-
},
3538
-
"engines": {
3539
-
"node": ">=7.0.0"
3540
-
}
3541
-
},
3542
-
"node_modules/color-name": {
3543
-
"version": "1.1.4",
3544
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
3545
-
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3546
-
"license": "MIT"
3547
-
},
3548
-
"node_modules/combined-stream": {
3549
-
"version": "1.0.8",
3550
-
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
3551
-
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
3552
-
"dev": true,
3553
-
"license": "MIT",
3554
-
"dependencies": {
3555
-
"delayed-stream": "~1.0.0"
3556
-
},
3557
-
"engines": {
3558
-
"node": ">= 0.8"
3559
-
}
3560
-
},
3561
-
"node_modules/component-emitter": {
3562
-
"version": "1.3.1",
3563
-
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
3564
-
"integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
3565
-
"dev": true,
3566
-
"license": "MIT",
3567
-
"funding": {
3568
-
"url": "https://github.com/sponsors/sindresorhus"
3569
-
}
3570
-
},
3571
-
"node_modules/concat-map": {
3572
-
"version": "0.0.1",
3573
-
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
3574
-
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
3575
-
"license": "MIT"
3576
-
},
3577
-
"node_modules/concurrently": {
3578
-
"version": "9.1.2",
3579
-
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz",
3580
-
"integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==",
3581
-
"dev": true,
3582
-
"license": "MIT",
3583
-
"dependencies": {
3584
-
"chalk": "^4.1.2",
3585
-
"lodash": "^4.17.21",
3586
-
"rxjs": "^7.8.1",
3587
-
"shell-quote": "^1.8.1",
3588
-
"supports-color": "^8.1.1",
3589
-
"tree-kill": "^1.2.2",
3590
-
"yargs": "^17.7.2"
3591
-
},
3592
-
"bin": {
3593
-
"conc": "dist/bin/concurrently.js",
3594
-
"concurrently": "dist/bin/concurrently.js"
3595
-
},
3596
-
"engines": {
3597
-
"node": ">=18"
3598
-
},
3599
-
"funding": {
3600
-
"url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
3601
-
}
3602
-
},
3603
-
"node_modules/concurrently/node_modules/supports-color": {
3604
-
"version": "8.1.1",
3605
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
3606
-
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
3607
-
"dev": true,
3608
-
"license": "MIT",
3609
-
"dependencies": {
3610
-
"has-flag": "^4.0.0"
3611
-
},
3612
-
"engines": {
3613
-
"node": ">=10"
3614
-
},
3615
-
"funding": {
3616
-
"url": "https://github.com/chalk/supports-color?sponsor=1"
3617
-
}
3618
-
},
3619
-
"node_modules/content-disposition": {
3620
-
"version": "1.0.0",
3621
-
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
3622
-
"integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
3623
-
"license": "MIT",
3624
-
"dependencies": {
3625
-
"safe-buffer": "5.2.1"
3626
-
},
3627
-
"engines": {
3628
-
"node": ">= 0.6"
3629
-
}
3630
-
},
3631
-
"node_modules/content-type": {
3632
-
"version": "1.0.5",
3633
-
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
3634
-
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
3635
-
"license": "MIT",
3636
-
"engines": {
3637
-
"node": ">= 0.6"
3638
-
}
3639
-
},
3640
-
"node_modules/convert-source-map": {
3641
-
"version": "2.0.0",
3642
-
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
3643
-
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
3644
-
"dev": true,
3645
-
"license": "MIT"
3646
-
},
3647
-
"node_modules/cookie": {
3648
-
"version": "0.7.2",
3649
-
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
3650
-
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
3651
-
"license": "MIT",
3652
-
"engines": {
3653
-
"node": ">= 0.6"
3654
-
}
3655
-
},
3656
-
"node_modules/cookie-signature": {
3657
-
"version": "1.2.2",
3658
-
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
3659
-
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
3660
-
"license": "MIT",
3661
-
"engines": {
3662
-
"node": ">=6.6.0"
3663
-
}
3664
-
},
3665
-
"node_modules/cookiejar": {
3666
-
"version": "2.1.4",
3667
-
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
3668
-
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
3669
-
"dev": true,
3670
-
"license": "MIT"
3671
-
},
3672
-
"node_modules/cors": {
3673
-
"version": "2.8.5",
3674
-
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
3675
-
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
3676
-
"license": "MIT",
3677
-
"dependencies": {
3678
-
"object-assign": "^4",
3679
-
"vary": "^1"
3680
-
},
3681
-
"engines": {
3682
-
"node": ">= 0.10"
3683
-
}
3684
-
},
3685
-
"node_modules/cross-spawn": {
3686
-
"version": "7.0.6",
3687
-
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
3688
-
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
3689
-
"dev": true,
3690
-
"license": "MIT",
3691
-
"dependencies": {
3692
-
"path-key": "^3.1.0",
3693
-
"shebang-command": "^2.0.0",
3694
-
"which": "^2.0.1"
3695
-
},
3696
-
"engines": {
3697
-
"node": ">= 8"
3698
-
}
3699
-
},
3700
-
"node_modules/debug": {
3701
-
"version": "4.4.1",
3702
-
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
3703
-
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
3704
-
"license": "MIT",
3705
-
"dependencies": {
3706
-
"ms": "^2.1.3"
3707
-
},
3708
-
"engines": {
3709
-
"node": ">=6.0"
3710
-
},
3711
-
"peerDependenciesMeta": {
3712
-
"supports-color": {
3713
-
"optional": true
3714
-
}
3715
-
}
3716
-
},
3717
-
"node_modules/decompress-response": {
3718
-
"version": "6.0.0",
3719
-
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
3720
-
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
3721
-
"license": "MIT",
3722
-
"dependencies": {
3723
-
"mimic-response": "^3.1.0"
3724
-
},
3725
-
"engines": {
3726
-
"node": ">=10"
3727
-
},
3728
-
"funding": {
3729
-
"url": "https://github.com/sponsors/sindresorhus"
3730
-
}
3731
-
},
3732
-
"node_modules/dedent": {
3733
-
"version": "1.6.0",
3734
-
"resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz",
3735
-
"integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==",
3736
-
"dev": true,
3737
-
"license": "MIT",
3738
-
"peerDependencies": {
3739
-
"babel-plugin-macros": "^3.1.0"
3740
-
},
3741
-
"peerDependenciesMeta": {
3742
-
"babel-plugin-macros": {
3743
-
"optional": true
3744
-
}
3745
-
}
3746
-
},
3747
-
"node_modules/deep-extend": {
3748
-
"version": "0.6.0",
3749
-
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
3750
-
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
3751
-
"license": "MIT",
3752
-
"engines": {
3753
-
"node": ">=4.0.0"
3754
-
}
3755
-
},
3756
-
"node_modules/deepmerge": {
3757
-
"version": "4.3.1",
3758
-
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
3759
-
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
3760
-
"dev": true,
3761
-
"license": "MIT",
3762
-
"engines": {
3763
-
"node": ">=0.10.0"
3764
-
}
3765
-
},
3766
-
"node_modules/delayed-stream": {
3767
-
"version": "1.0.0",
3768
-
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
3769
-
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
3770
-
"dev": true,
3771
-
"license": "MIT",
3772
-
"engines": {
3773
-
"node": ">=0.4.0"
3774
-
}
3775
-
},
3776
-
"node_modules/depd": {
3777
-
"version": "2.0.0",
3778
-
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
3779
-
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
3780
-
"license": "MIT",
3781
-
"engines": {
3782
-
"node": ">= 0.8"
3783
-
}
3784
-
},
3785
-
"node_modules/destroy": {
3786
-
"version": "1.2.0",
3787
-
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
3788
-
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
3789
-
"license": "MIT",
3790
-
"engines": {
3791
-
"node": ">= 0.8",
3792
-
"npm": "1.2.8000 || >= 1.4.16"
3793
-
}
3794
-
},
3795
-
"node_modules/detect-libc": {
3796
-
"version": "2.0.4",
3797
-
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
3798
-
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
3799
-
"license": "Apache-2.0",
3800
-
"engines": {
3801
-
"node": ">=8"
3802
-
}
3803
-
},
3804
-
"node_modules/detect-newline": {
3805
-
"version": "3.1.0",
3806
-
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
3807
-
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
3808
-
"dev": true,
3809
-
"license": "MIT",
3810
-
"engines": {
3811
-
"node": ">=8"
3812
-
}
3813
-
},
3814
-
"node_modules/dezalgo": {
3815
-
"version": "1.0.4",
3816
-
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
3817
-
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
3818
-
"dev": true,
3819
-
"license": "ISC",
3820
-
"dependencies": {
3821
-
"asap": "^2.0.0",
3822
-
"wrappy": "1"
3823
-
}
3824
-
},
3825
-
"node_modules/dotenv": {
3826
-
"version": "16.5.0",
3827
-
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
3828
-
"integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
3829
-
"license": "BSD-2-Clause",
3830
-
"engines": {
3831
-
"node": ">=12"
3832
-
},
3833
-
"funding": {
3834
-
"url": "https://dotenvx.com"
3835
-
}
3836
-
},
3837
-
"node_modules/dunder-proto": {
3838
-
"version": "1.0.1",
3839
-
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
3840
-
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
3841
-
"license": "MIT",
3842
-
"dependencies": {
3843
-
"call-bind-apply-helpers": "^1.0.1",
3844
-
"es-errors": "^1.3.0",
3845
-
"gopd": "^1.2.0"
3846
-
},
3847
-
"engines": {
3848
-
"node": ">= 0.4"
3849
-
}
3850
-
},
3851
-
"node_modules/eastasianwidth": {
3852
-
"version": "0.2.0",
3853
-
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
3854
-
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
3855
-
"dev": true,
3856
-
"license": "MIT"
3857
-
},
3858
-
"node_modules/ee-first": {
3859
-
"version": "1.1.1",
3860
-
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
3861
-
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
3862
-
"license": "MIT"
3863
-
},
3864
-
"node_modules/ejs": {
3865
-
"version": "3.1.10",
3866
-
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
3867
-
"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
3868
-
"license": "Apache-2.0",
3869
-
"dependencies": {
3870
-
"jake": "^10.8.5"
3871
-
},
3872
-
"bin": {
3873
-
"ejs": "bin/cli.js"
3874
-
},
3875
-
"engines": {
3876
-
"node": ">=0.10.0"
3877
-
}
3878
-
},
3879
-
"node_modules/electron-to-chromium": {
3880
-
"version": "1.5.171",
3881
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz",
3882
-
"integrity": "sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==",
3883
-
"dev": true,
3884
-
"license": "ISC"
3885
-
},
3886
-
"node_modules/emittery": {
3887
-
"version": "0.13.1",
3888
-
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
3889
-
"integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
3890
-
"dev": true,
3891
-
"license": "MIT",
3892
-
"engines": {
3893
-
"node": ">=12"
3894
-
},
3895
-
"funding": {
3896
-
"url": "https://github.com/sindresorhus/emittery?sponsor=1"
3897
-
}
3898
-
},
3899
-
"node_modules/emoji-regex": {
3900
-
"version": "8.0.0",
3901
-
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3902
-
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
3903
-
"dev": true,
3904
-
"license": "MIT"
3905
-
},
3906
-
"node_modules/encodeurl": {
3907
-
"version": "2.0.0",
3908
-
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
3909
-
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
3910
-
"license": "MIT",
3911
-
"engines": {
3912
-
"node": ">= 0.8"
3913
-
}
3914
-
},
3915
-
"node_modules/end-of-stream": {
3916
-
"version": "1.4.5",
3917
-
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
3918
-
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
3919
-
"license": "MIT",
3920
-
"dependencies": {
3921
-
"once": "^1.4.0"
3922
-
}
3923
-
},
3924
-
"node_modules/error-ex": {
3925
-
"version": "1.3.2",
3926
-
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
3927
-
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
3928
-
"dev": true,
3929
-
"license": "MIT",
3930
-
"dependencies": {
3931
-
"is-arrayish": "^0.2.1"
3932
-
}
3933
-
},
3934
-
"node_modules/es-define-property": {
3935
-
"version": "1.0.1",
3936
-
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
3937
-
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
3938
-
"license": "MIT",
3939
-
"engines": {
3940
-
"node": ">= 0.4"
3941
-
}
3942
-
},
3943
-
"node_modules/es-errors": {
3944
-
"version": "1.3.0",
3945
-
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
3946
-
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
3947
-
"license": "MIT",
3948
-
"engines": {
3949
-
"node": ">= 0.4"
3950
-
}
3951
-
},
3952
-
"node_modules/es-object-atoms": {
3953
-
"version": "1.1.1",
3954
-
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
3955
-
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
3956
-
"license": "MIT",
3957
-
"dependencies": {
3958
-
"es-errors": "^1.3.0"
3959
-
},
3960
-
"engines": {
3961
-
"node": ">= 0.4"
3962
-
}
3963
-
},
3964
-
"node_modules/es-set-tostringtag": {
3965
-
"version": "2.1.0",
3966
-
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
3967
-
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
3968
-
"dev": true,
3969
-
"license": "MIT",
3970
-
"dependencies": {
3971
-
"es-errors": "^1.3.0",
3972
-
"get-intrinsic": "^1.2.6",
3973
-
"has-tostringtag": "^1.0.2",
3974
-
"hasown": "^2.0.2"
3975
-
},
3976
-
"engines": {
3977
-
"node": ">= 0.4"
3978
-
}
3979
-
},
3980
-
"node_modules/esbuild": {
3981
-
"version": "0.25.5",
3982
-
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
3983
-
"integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
3984
-
"hasInstallScript": true,
3985
-
"license": "MIT",
3986
-
"bin": {
3987
-
"esbuild": "bin/esbuild"
3988
-
},
3989
-
"engines": {
3990
-
"node": ">=18"
3991
-
},
3992
-
"optionalDependencies": {
3993
-
"@esbuild/aix-ppc64": "0.25.5",
3994
-
"@esbuild/android-arm": "0.25.5",
3995
-
"@esbuild/android-arm64": "0.25.5",
3996
-
"@esbuild/android-x64": "0.25.5",
3997
-
"@esbuild/darwin-arm64": "0.25.5",
3998
-
"@esbuild/darwin-x64": "0.25.5",
3999
-
"@esbuild/freebsd-arm64": "0.25.5",
4000
-
"@esbuild/freebsd-x64": "0.25.5",
4001
-
"@esbuild/linux-arm": "0.25.5",
4002
-
"@esbuild/linux-arm64": "0.25.5",
4003
-
"@esbuild/linux-ia32": "0.25.5",
4004
-
"@esbuild/linux-loong64": "0.25.5",
4005
-
"@esbuild/linux-mips64el": "0.25.5",
4006
-
"@esbuild/linux-ppc64": "0.25.5",
4007
-
"@esbuild/linux-riscv64": "0.25.5",
4008
-
"@esbuild/linux-s390x": "0.25.5",
4009
-
"@esbuild/linux-x64": "0.25.5",
4010
-
"@esbuild/netbsd-arm64": "0.25.5",
4011
-
"@esbuild/netbsd-x64": "0.25.5",
4012
-
"@esbuild/openbsd-arm64": "0.25.5",
4013
-
"@esbuild/openbsd-x64": "0.25.5",
4014
-
"@esbuild/sunos-x64": "0.25.5",
4015
-
"@esbuild/win32-arm64": "0.25.5",
4016
-
"@esbuild/win32-ia32": "0.25.5",
4017
-
"@esbuild/win32-x64": "0.25.5"
4018
-
}
4019
-
},
4020
-
"node_modules/escalade": {
4021
-
"version": "3.2.0",
4022
-
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
4023
-
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
4024
-
"dev": true,
4025
-
"license": "MIT",
4026
-
"engines": {
4027
-
"node": ">=6"
4028
-
}
4029
-
},
4030
-
"node_modules/escape-html": {
4031
-
"version": "1.0.3",
4032
-
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
4033
-
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
4034
-
"license": "MIT"
4035
-
},
4036
-
"node_modules/escape-string-regexp": {
4037
-
"version": "2.0.0",
4038
-
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
4039
-
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
4040
-
"dev": true,
4041
-
"license": "MIT",
4042
-
"engines": {
4043
-
"node": ">=8"
4044
-
}
4045
-
},
4046
-
"node_modules/esprima": {
4047
-
"version": "4.0.1",
4048
-
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
4049
-
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
4050
-
"dev": true,
4051
-
"license": "BSD-2-Clause",
4052
-
"bin": {
4053
-
"esparse": "bin/esparse.js",
4054
-
"esvalidate": "bin/esvalidate.js"
4055
-
},
4056
-
"engines": {
4057
-
"node": ">=4"
4058
-
}
4059
-
},
4060
-
"node_modules/etag": {
4061
-
"version": "1.8.1",
4062
-
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
4063
-
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
4064
-
"license": "MIT",
4065
-
"engines": {
4066
-
"node": ">= 0.6"
4067
-
}
4068
-
},
4069
-
"node_modules/event-target-shim": {
4070
-
"version": "5.0.1",
4071
-
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
4072
-
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
4073
-
"license": "MIT",
4074
-
"engines": {
4075
-
"node": ">=6"
4076
-
}
4077
-
},
4078
-
"node_modules/eventemitter3": {
4079
-
"version": "4.0.7",
4080
-
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
4081
-
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
4082
-
"license": "MIT"
4083
-
},
4084
-
"node_modules/events": {
4085
-
"version": "3.3.0",
4086
-
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
4087
-
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
4088
-
"license": "MIT",
4089
-
"engines": {
4090
-
"node": ">=0.8.x"
4091
-
}
4092
-
},
4093
-
"node_modules/execa": {
4094
-
"version": "5.1.1",
4095
-
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
4096
-
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
4097
-
"dev": true,
4098
-
"license": "MIT",
4099
-
"dependencies": {
4100
-
"cross-spawn": "^7.0.3",
4101
-
"get-stream": "^6.0.0",
4102
-
"human-signals": "^2.1.0",
4103
-
"is-stream": "^2.0.0",
4104
-
"merge-stream": "^2.0.0",
4105
-
"npm-run-path": "^4.0.1",
4106
-
"onetime": "^5.1.2",
4107
-
"signal-exit": "^3.0.3",
4108
-
"strip-final-newline": "^2.0.0"
4109
-
},
4110
-
"engines": {
4111
-
"node": ">=10"
4112
-
},
4113
-
"funding": {
4114
-
"url": "https://github.com/sindresorhus/execa?sponsor=1"
4115
-
}
4116
-
},
4117
-
"node_modules/execa/node_modules/signal-exit": {
4118
-
"version": "3.0.7",
4119
-
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
4120
-
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
4121
-
"dev": true,
4122
-
"license": "ISC"
4123
-
},
4124
-
"node_modules/exit-x": {
4125
-
"version": "0.2.2",
4126
-
"resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz",
4127
-
"integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==",
4128
-
"dev": true,
4129
-
"license": "MIT",
4130
-
"engines": {
4131
-
"node": ">= 0.8.0"
4132
-
}
4133
-
},
4134
-
"node_modules/expand-template": {
4135
-
"version": "2.0.3",
4136
-
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
4137
-
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
4138
-
"license": "(MIT OR WTFPL)",
4139
-
"engines": {
4140
-
"node": ">=6"
4141
-
}
4142
-
},
4143
-
"node_modules/expect": {
4144
-
"version": "30.0.2",
4145
-
"resolved": "https://registry.npmjs.org/expect/-/expect-30.0.2.tgz",
4146
-
"integrity": "sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A==",
4147
-
"dev": true,
4148
-
"license": "MIT",
4149
-
"dependencies": {
4150
-
"@jest/expect-utils": "30.0.2",
4151
-
"@jest/get-type": "30.0.1",
4152
-
"jest-matcher-utils": "30.0.2",
4153
-
"jest-message-util": "30.0.2",
4154
-
"jest-mock": "30.0.2",
4155
-
"jest-util": "30.0.2"
4156
-
},
4157
-
"engines": {
4158
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
4159
-
}
4160
-
},
4161
-
"node_modules/express": {
4162
-
"version": "5.1.0",
4163
-
"resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
4164
-
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
4165
-
"license": "MIT",
4166
-
"dependencies": {
4167
-
"accepts": "^2.0.0",
4168
-
"body-parser": "^2.2.0",
4169
-
"content-disposition": "^1.0.0",
4170
-
"content-type": "^1.0.5",
4171
-
"cookie": "^0.7.1",
4172
-
"cookie-signature": "^1.2.1",
4173
-
"debug": "^4.4.0",
4174
-
"encodeurl": "^2.0.0",
4175
-
"escape-html": "^1.0.3",
4176
-
"etag": "^1.8.1",
4177
-
"finalhandler": "^2.1.0",
4178
-
"fresh": "^2.0.0",
4179
-
"http-errors": "^2.0.0",
4180
-
"merge-descriptors": "^2.0.0",
4181
-
"mime-types": "^3.0.0",
4182
-
"on-finished": "^2.4.1",
4183
-
"once": "^1.4.0",
4184
-
"parseurl": "^1.3.3",
4185
-
"proxy-addr": "^2.0.7",
4186
-
"qs": "^6.14.0",
4187
-
"range-parser": "^1.2.1",
4188
-
"router": "^2.2.0",
4189
-
"send": "^1.1.0",
4190
-
"serve-static": "^2.2.0",
4191
-
"statuses": "^2.0.1",
4192
-
"type-is": "^2.0.1",
4193
-
"vary": "^1.1.2"
4194
-
},
4195
-
"engines": {
4196
-
"node": ">= 18"
4197
-
},
4198
-
"funding": {
4199
-
"type": "opencollective",
4200
-
"url": "https://opencollective.com/express"
4201
-
}
4202
-
},
4203
-
"node_modules/express-ejs-layouts": {
4204
-
"version": "2.5.1",
4205
-
"resolved": "https://registry.npmjs.org/express-ejs-layouts/-/express-ejs-layouts-2.5.1.tgz",
4206
-
"integrity": "sha512-IXROv9n3xKga7FowT06n1Qn927JR8ZWDn5Dc9CJQoiiaaDqbhW5PDmWShzbpAa2wjWT1vJqaIM1S6vJwwX11gA=="
4207
-
},
4208
-
"node_modules/express-session": {
4209
-
"version": "1.18.1",
4210
-
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz",
4211
-
"integrity": "sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==",
4212
-
"license": "MIT",
4213
-
"dependencies": {
4214
-
"cookie": "0.7.2",
4215
-
"cookie-signature": "1.0.7",
4216
-
"debug": "2.6.9",
4217
-
"depd": "~2.0.0",
4218
-
"on-headers": "~1.0.2",
4219
-
"parseurl": "~1.3.3",
4220
-
"safe-buffer": "5.2.1",
4221
-
"uid-safe": "~2.1.5"
4222
-
},
4223
-
"engines": {
4224
-
"node": ">= 0.8.0"
4225
-
}
4226
-
},
4227
-
"node_modules/express-session/node_modules/cookie-signature": {
4228
-
"version": "1.0.7",
4229
-
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
4230
-
"integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
4231
-
"license": "MIT"
4232
-
},
4233
-
"node_modules/express-session/node_modules/debug": {
4234
-
"version": "2.6.9",
4235
-
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4236
-
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4237
-
"license": "MIT",
4238
-
"dependencies": {
4239
-
"ms": "2.0.0"
4240
-
}
4241
-
},
4242
-
"node_modules/express-session/node_modules/ms": {
4243
-
"version": "2.0.0",
4244
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4245
-
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
4246
-
"license": "MIT"
4247
-
},
4248
-
"node_modules/fast-json-stable-stringify": {
4249
-
"version": "2.1.0",
4250
-
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
4251
-
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
4252
-
"dev": true,
4253
-
"license": "MIT"
4254
-
},
4255
-
"node_modules/fast-redact": {
4256
-
"version": "3.5.0",
4257
-
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
4258
-
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
4259
-
"license": "MIT",
4260
-
"engines": {
4261
-
"node": ">=6"
4262
-
}
4263
-
},
4264
-
"node_modules/fast-safe-stringify": {
4265
-
"version": "2.1.1",
4266
-
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
4267
-
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
4268
-
"dev": true,
4269
-
"license": "MIT"
4270
-
},
4271
-
"node_modules/fb-watchman": {
4272
-
"version": "2.0.2",
4273
-
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
4274
-
"integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
4275
-
"dev": true,
4276
-
"license": "Apache-2.0",
4277
-
"dependencies": {
4278
-
"bser": "2.1.1"
4279
-
}
4280
-
},
4281
-
"node_modules/file-uri-to-path": {
4282
-
"version": "1.0.0",
4283
-
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
4284
-
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
4285
-
"license": "MIT"
4286
-
},
4287
-
"node_modules/filelist": {
4288
-
"version": "1.0.4",
4289
-
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
4290
-
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
4291
-
"license": "Apache-2.0",
4292
-
"dependencies": {
4293
-
"minimatch": "^5.0.1"
4294
-
}
4295
-
},
4296
-
"node_modules/filelist/node_modules/brace-expansion": {
4297
-
"version": "2.0.2",
4298
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
4299
-
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
4300
-
"license": "MIT",
4301
-
"dependencies": {
4302
-
"balanced-match": "^1.0.0"
4303
-
}
4304
-
},
4305
-
"node_modules/filelist/node_modules/minimatch": {
4306
-
"version": "5.1.6",
4307
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
4308
-
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
4309
-
"license": "ISC",
4310
-
"dependencies": {
4311
-
"brace-expansion": "^2.0.1"
4312
-
},
4313
-
"engines": {
4314
-
"node": ">=10"
4315
-
}
4316
-
},
4317
-
"node_modules/fill-range": {
4318
-
"version": "7.1.1",
4319
-
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
4320
-
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
4321
-
"dev": true,
4322
-
"license": "MIT",
4323
-
"dependencies": {
4324
-
"to-regex-range": "^5.0.1"
4325
-
},
4326
-
"engines": {
4327
-
"node": ">=8"
4328
-
}
4329
-
},
4330
-
"node_modules/finalhandler": {
4331
-
"version": "2.1.0",
4332
-
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
4333
-
"integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
4334
-
"license": "MIT",
4335
-
"dependencies": {
4336
-
"debug": "^4.4.0",
4337
-
"encodeurl": "^2.0.0",
4338
-
"escape-html": "^1.0.3",
4339
-
"on-finished": "^2.4.1",
4340
-
"parseurl": "^1.3.3",
4341
-
"statuses": "^2.0.1"
4342
-
},
4343
-
"engines": {
4344
-
"node": ">= 0.8"
4345
-
}
4346
-
},
4347
-
"node_modules/find-up": {
4348
-
"version": "4.1.0",
4349
-
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
4350
-
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
4351
-
"dev": true,
4352
-
"license": "MIT",
4353
-
"dependencies": {
4354
-
"locate-path": "^5.0.0",
4355
-
"path-exists": "^4.0.0"
4356
-
},
4357
-
"engines": {
4358
-
"node": ">=8"
4359
-
}
4360
-
},
4361
-
"node_modules/foreground-child": {
4362
-
"version": "3.3.1",
4363
-
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
4364
-
"integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
4365
-
"dev": true,
4366
-
"license": "ISC",
4367
-
"dependencies": {
4368
-
"cross-spawn": "^7.0.6",
4369
-
"signal-exit": "^4.0.1"
4370
-
},
4371
-
"engines": {
4372
-
"node": ">=14"
4373
-
},
4374
-
"funding": {
4375
-
"url": "https://github.com/sponsors/isaacs"
4376
-
}
4377
-
},
4378
-
"node_modules/form-data": {
4379
-
"version": "4.0.3",
4380
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
4381
-
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
4382
-
"dev": true,
4383
-
"license": "MIT",
4384
-
"dependencies": {
4385
-
"asynckit": "^0.4.0",
4386
-
"combined-stream": "^1.0.8",
4387
-
"es-set-tostringtag": "^2.1.0",
4388
-
"hasown": "^2.0.2",
4389
-
"mime-types": "^2.1.12"
4390
-
},
4391
-
"engines": {
4392
-
"node": ">= 6"
4393
-
}
4394
-
},
4395
-
"node_modules/form-data/node_modules/mime-db": {
4396
-
"version": "1.52.0",
4397
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
4398
-
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
4399
-
"dev": true,
4400
-
"license": "MIT",
4401
-
"engines": {
4402
-
"node": ">= 0.6"
4403
-
}
4404
-
},
4405
-
"node_modules/form-data/node_modules/mime-types": {
4406
-
"version": "2.1.35",
4407
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
4408
-
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
4409
-
"dev": true,
4410
-
"license": "MIT",
4411
-
"dependencies": {
4412
-
"mime-db": "1.52.0"
4413
-
},
4414
-
"engines": {
4415
-
"node": ">= 0.6"
4416
-
}
4417
-
},
4418
-
"node_modules/formidable": {
4419
-
"version": "3.5.4",
4420
-
"resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz",
4421
-
"integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==",
4422
-
"dev": true,
4423
-
"license": "MIT",
4424
-
"dependencies": {
4425
-
"@paralleldrive/cuid2": "^2.2.2",
4426
-
"dezalgo": "^1.0.4",
4427
-
"once": "^1.4.0"
4428
-
},
4429
-
"engines": {
4430
-
"node": ">=14.0.0"
4431
-
},
4432
-
"funding": {
4433
-
"url": "https://ko-fi.com/tunnckoCore/commissions"
4434
-
}
4435
-
},
4436
-
"node_modules/forwarded": {
4437
-
"version": "0.2.0",
4438
-
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
4439
-
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
4440
-
"license": "MIT",
4441
-
"engines": {
4442
-
"node": ">= 0.6"
4443
-
}
4444
-
},
4445
-
"node_modules/fresh": {
4446
-
"version": "2.0.0",
4447
-
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
4448
-
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
4449
-
"license": "MIT",
4450
-
"engines": {
4451
-
"node": ">= 0.8"
4452
-
}
4453
-
},
4454
-
"node_modules/fs-constants": {
4455
-
"version": "1.0.0",
4456
-
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
4457
-
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
4458
-
"license": "MIT"
4459
-
},
4460
-
"node_modules/fs.realpath": {
4461
-
"version": "1.0.0",
4462
-
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
4463
-
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
4464
-
"dev": true,
4465
-
"license": "ISC"
4466
-
},
4467
-
"node_modules/fsevents": {
4468
-
"version": "2.3.3",
4469
-
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
4470
-
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
4471
-
"hasInstallScript": true,
4472
-
"license": "MIT",
4473
-
"optional": true,
4474
-
"os": [
4475
-
"darwin"
4476
-
],
4477
-
"engines": {
4478
-
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
4479
-
}
4480
-
},
4481
-
"node_modules/function-bind": {
4482
-
"version": "1.1.2",
4483
-
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
4484
-
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
4485
-
"license": "MIT",
4486
-
"funding": {
4487
-
"url": "https://github.com/sponsors/ljharb"
4488
-
}
4489
-
},
4490
-
"node_modules/gensync": {
4491
-
"version": "1.0.0-beta.2",
4492
-
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
4493
-
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
4494
-
"dev": true,
4495
-
"license": "MIT",
4496
-
"engines": {
4497
-
"node": ">=6.9.0"
4498
-
}
4499
-
},
4500
-
"node_modules/get-caller-file": {
4501
-
"version": "2.0.5",
4502
-
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
4503
-
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
4504
-
"dev": true,
4505
-
"license": "ISC",
4506
-
"engines": {
4507
-
"node": "6.* || 8.* || >= 10.*"
4508
-
}
4509
-
},
4510
-
"node_modules/get-intrinsic": {
4511
-
"version": "1.3.0",
4512
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
4513
-
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
4514
-
"license": "MIT",
4515
-
"dependencies": {
4516
-
"call-bind-apply-helpers": "^1.0.2",
4517
-
"es-define-property": "^1.0.1",
4518
-
"es-errors": "^1.3.0",
4519
-
"es-object-atoms": "^1.1.1",
4520
-
"function-bind": "^1.1.2",
4521
-
"get-proto": "^1.0.1",
4522
-
"gopd": "^1.2.0",
4523
-
"has-symbols": "^1.1.0",
4524
-
"hasown": "^2.0.2",
4525
-
"math-intrinsics": "^1.1.0"
4526
-
},
4527
-
"engines": {
4528
-
"node": ">= 0.4"
4529
-
},
4530
-
"funding": {
4531
-
"url": "https://github.com/sponsors/ljharb"
4532
-
}
4533
-
},
4534
-
"node_modules/get-package-type": {
4535
-
"version": "0.1.0",
4536
-
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
4537
-
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
4538
-
"dev": true,
4539
-
"license": "MIT",
4540
-
"engines": {
4541
-
"node": ">=8.0.0"
4542
-
}
4543
-
},
4544
-
"node_modules/get-proto": {
4545
-
"version": "1.0.1",
4546
-
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
4547
-
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
4548
-
"license": "MIT",
4549
-
"dependencies": {
4550
-
"dunder-proto": "^1.0.1",
4551
-
"es-object-atoms": "^1.0.0"
4552
-
},
4553
-
"engines": {
4554
-
"node": ">= 0.4"
4555
-
}
4556
-
},
4557
-
"node_modules/get-stream": {
4558
-
"version": "6.0.1",
4559
-
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
4560
-
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
4561
-
"dev": true,
4562
-
"license": "MIT",
4563
-
"engines": {
4564
-
"node": ">=10"
4565
-
},
4566
-
"funding": {
4567
-
"url": "https://github.com/sponsors/sindresorhus"
4568
-
}
4569
-
},
4570
-
"node_modules/get-tsconfig": {
4571
-
"version": "4.10.1",
4572
-
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz",
4573
-
"integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
4574
-
"license": "MIT",
4575
-
"dependencies": {
4576
-
"resolve-pkg-maps": "^1.0.0"
4577
-
},
4578
-
"funding": {
4579
-
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
4580
-
}
4581
-
},
4582
-
"node_modules/github-from-package": {
4583
-
"version": "0.0.0",
4584
-
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
4585
-
"integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
4586
-
"license": "MIT"
4587
-
},
4588
-
"node_modules/glob": {
4589
-
"version": "10.4.5",
4590
-
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
4591
-
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
4592
-
"dev": true,
4593
-
"license": "ISC",
4594
-
"dependencies": {
4595
-
"foreground-child": "^3.1.0",
4596
-
"jackspeak": "^3.1.2",
4597
-
"minimatch": "^9.0.4",
4598
-
"minipass": "^7.1.2",
4599
-
"package-json-from-dist": "^1.0.0",
4600
-
"path-scurry": "^1.11.1"
4601
-
},
4602
-
"bin": {
4603
-
"glob": "dist/esm/bin.mjs"
4604
-
},
4605
-
"funding": {
4606
-
"url": "https://github.com/sponsors/isaacs"
4607
-
}
4608
-
},
4609
-
"node_modules/glob/node_modules/brace-expansion": {
4610
-
"version": "2.0.2",
4611
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
4612
-
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
4613
-
"dev": true,
4614
-
"license": "MIT",
4615
-
"dependencies": {
4616
-
"balanced-match": "^1.0.0"
4617
-
}
4618
-
},
4619
-
"node_modules/glob/node_modules/minimatch": {
4620
-
"version": "9.0.5",
4621
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
4622
-
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
4623
-
"dev": true,
4624
-
"license": "ISC",
4625
-
"dependencies": {
4626
-
"brace-expansion": "^2.0.1"
4627
-
},
4628
-
"engines": {
4629
-
"node": ">=16 || 14 >=14.17"
4630
-
},
4631
-
"funding": {
4632
-
"url": "https://github.com/sponsors/isaacs"
4633
-
}
4634
-
},
4635
-
"node_modules/globals": {
4636
-
"version": "11.12.0",
4637
-
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
4638
-
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
4639
-
"dev": true,
4640
-
"license": "MIT",
4641
-
"engines": {
4642
-
"node": ">=4"
4643
-
}
4644
-
},
4645
-
"node_modules/gopd": {
4646
-
"version": "1.2.0",
4647
-
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
4648
-
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
4649
-
"license": "MIT",
4650
-
"engines": {
4651
-
"node": ">= 0.4"
4652
-
},
4653
-
"funding": {
4654
-
"url": "https://github.com/sponsors/ljharb"
4655
-
}
4656
-
},
4657
-
"node_modules/graceful-fs": {
4658
-
"version": "4.2.11",
4659
-
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
4660
-
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
4661
-
"dev": true,
4662
-
"license": "ISC"
4663
-
},
4664
-
"node_modules/graphemer": {
4665
-
"version": "1.4.0",
4666
-
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
4667
-
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
4668
-
"license": "MIT"
4669
-
},
4670
-
"node_modules/has-flag": {
4671
-
"version": "4.0.0",
4672
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
4673
-
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
4674
-
"license": "MIT",
4675
-
"engines": {
4676
-
"node": ">=8"
4677
-
}
4678
-
},
4679
-
"node_modules/has-symbols": {
4680
-
"version": "1.1.0",
4681
-
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
4682
-
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
4683
-
"license": "MIT",
4684
-
"engines": {
4685
-
"node": ">= 0.4"
4686
-
},
4687
-
"funding": {
4688
-
"url": "https://github.com/sponsors/ljharb"
4689
-
}
4690
-
},
4691
-
"node_modules/has-tostringtag": {
4692
-
"version": "1.0.2",
4693
-
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
4694
-
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
4695
-
"dev": true,
4696
-
"license": "MIT",
4697
-
"dependencies": {
4698
-
"has-symbols": "^1.0.3"
4699
-
},
4700
-
"engines": {
4701
-
"node": ">= 0.4"
4702
-
},
4703
-
"funding": {
4704
-
"url": "https://github.com/sponsors/ljharb"
4705
-
}
4706
-
},
4707
-
"node_modules/hasown": {
4708
-
"version": "2.0.2",
4709
-
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
4710
-
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
4711
-
"license": "MIT",
4712
-
"dependencies": {
4713
-
"function-bind": "^1.1.2"
4714
-
},
4715
-
"engines": {
4716
-
"node": ">= 0.4"
4717
-
}
4718
-
},
4719
-
"node_modules/html-escaper": {
4720
-
"version": "2.0.2",
4721
-
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
4722
-
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
4723
-
"dev": true,
4724
-
"license": "MIT"
4725
-
},
4726
-
"node_modules/http-errors": {
4727
-
"version": "2.0.0",
4728
-
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
4729
-
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
4730
-
"license": "MIT",
4731
-
"dependencies": {
4732
-
"depd": "2.0.0",
4733
-
"inherits": "2.0.4",
4734
-
"setprototypeof": "1.2.0",
4735
-
"statuses": "2.0.1",
4736
-
"toidentifier": "1.0.1"
4737
-
},
4738
-
"engines": {
4739
-
"node": ">= 0.8"
4740
-
}
4741
-
},
4742
-
"node_modules/http-errors/node_modules/statuses": {
4743
-
"version": "2.0.1",
4744
-
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
4745
-
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
4746
-
"license": "MIT",
4747
-
"engines": {
4748
-
"node": ">= 0.8"
4749
-
}
4750
-
},
4751
-
"node_modules/human-signals": {
4752
-
"version": "2.1.0",
4753
-
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
4754
-
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
4755
-
"dev": true,
4756
-
"license": "Apache-2.0",
4757
-
"engines": {
4758
-
"node": ">=10.17.0"
4759
-
}
4760
-
},
4761
-
"node_modules/iconv-lite": {
4762
-
"version": "0.6.3",
4763
-
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
4764
-
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
4765
-
"license": "MIT",
4766
-
"dependencies": {
4767
-
"safer-buffer": ">= 2.1.2 < 3.0.0"
4768
-
},
4769
-
"engines": {
4770
-
"node": ">=0.10.0"
4771
-
}
4772
-
},
4773
-
"node_modules/ieee754": {
4774
-
"version": "1.2.1",
4775
-
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
4776
-
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
4777
-
"funding": [
4778
-
{
4779
-
"type": "github",
4780
-
"url": "https://github.com/sponsors/feross"
4781
-
},
4782
-
{
4783
-
"type": "patreon",
4784
-
"url": "https://www.patreon.com/feross"
4785
-
},
4786
-
{
4787
-
"type": "consulting",
4788
-
"url": "https://feross.org/support"
4789
-
}
4790
-
],
4791
-
"license": "BSD-3-Clause"
4792
-
},
4793
-
"node_modules/import-local": {
4794
-
"version": "3.2.0",
4795
-
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
4796
-
"integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
4797
-
"dev": true,
4798
-
"license": "MIT",
4799
-
"dependencies": {
4800
-
"pkg-dir": "^4.2.0",
4801
-
"resolve-cwd": "^3.0.0"
4802
-
},
4803
-
"bin": {
4804
-
"import-local-fixture": "fixtures/cli.js"
4805
-
},
4806
-
"engines": {
4807
-
"node": ">=8"
4808
-
},
4809
-
"funding": {
4810
-
"url": "https://github.com/sponsors/sindresorhus"
4811
-
}
4812
-
},
4813
-
"node_modules/imurmurhash": {
4814
-
"version": "0.1.4",
4815
-
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
4816
-
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
4817
-
"dev": true,
4818
-
"license": "MIT",
4819
-
"engines": {
4820
-
"node": ">=0.8.19"
4821
-
}
4822
-
},
4823
-
"node_modules/inflight": {
4824
-
"version": "1.0.6",
4825
-
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
4826
-
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
4827
-
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
4828
-
"dev": true,
4829
-
"license": "ISC",
4830
-
"dependencies": {
4831
-
"once": "^1.3.0",
4832
-
"wrappy": "1"
4833
-
}
4834
-
},
4835
-
"node_modules/inherits": {
4836
-
"version": "2.0.4",
4837
-
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
4838
-
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
4839
-
"license": "ISC"
4840
-
},
4841
-
"node_modules/ini": {
4842
-
"version": "1.3.8",
4843
-
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
4844
-
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
4845
-
"license": "ISC"
4846
-
},
4847
-
"node_modules/ipaddr.js": {
4848
-
"version": "1.9.1",
4849
-
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
4850
-
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
4851
-
"license": "MIT",
4852
-
"engines": {
4853
-
"node": ">= 0.10"
4854
-
}
4855
-
},
4856
-
"node_modules/is-arrayish": {
4857
-
"version": "0.2.1",
4858
-
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
4859
-
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
4860
-
"dev": true,
4861
-
"license": "MIT"
4862
-
},
4863
-
"node_modules/is-fullwidth-code-point": {
4864
-
"version": "3.0.0",
4865
-
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
4866
-
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
4867
-
"dev": true,
4868
-
"license": "MIT",
4869
-
"engines": {
4870
-
"node": ">=8"
4871
-
}
4872
-
},
4873
-
"node_modules/is-generator-fn": {
4874
-
"version": "2.1.0",
4875
-
"resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
4876
-
"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
4877
-
"dev": true,
4878
-
"license": "MIT",
4879
-
"engines": {
4880
-
"node": ">=6"
4881
-
}
4882
-
},
4883
-
"node_modules/is-number": {
4884
-
"version": "7.0.0",
4885
-
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
4886
-
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
4887
-
"dev": true,
4888
-
"license": "MIT",
4889
-
"engines": {
4890
-
"node": ">=0.12.0"
4891
-
}
4892
-
},
4893
-
"node_modules/is-promise": {
4894
-
"version": "4.0.0",
4895
-
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
4896
-
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
4897
-
"license": "MIT"
4898
-
},
4899
-
"node_modules/is-stream": {
4900
-
"version": "2.0.1",
4901
-
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
4902
-
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
4903
-
"dev": true,
4904
-
"license": "MIT",
4905
-
"engines": {
4906
-
"node": ">=8"
4907
-
},
4908
-
"funding": {
4909
-
"url": "https://github.com/sponsors/sindresorhus"
4910
-
}
4911
-
},
4912
-
"node_modules/isexe": {
4913
-
"version": "2.0.0",
4914
-
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
4915
-
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
4916
-
"dev": true,
4917
-
"license": "ISC"
4918
-
},
4919
-
"node_modules/iso-datestring-validator": {
4920
-
"version": "2.2.2",
4921
-
"resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz",
4922
-
"integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==",
4923
-
"license": "MIT"
4924
-
},
4925
-
"node_modules/istanbul-lib-coverage": {
4926
-
"version": "3.2.2",
4927
-
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
4928
-
"integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
4929
-
"dev": true,
4930
-
"license": "BSD-3-Clause",
4931
-
"engines": {
4932
-
"node": ">=8"
4933
-
}
4934
-
},
4935
-
"node_modules/istanbul-lib-instrument": {
4936
-
"version": "6.0.3",
4937
-
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
4938
-
"integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
4939
-
"dev": true,
4940
-
"license": "BSD-3-Clause",
4941
-
"dependencies": {
4942
-
"@babel/core": "^7.23.9",
4943
-
"@babel/parser": "^7.23.9",
4944
-
"@istanbuljs/schema": "^0.1.3",
4945
-
"istanbul-lib-coverage": "^3.2.0",
4946
-
"semver": "^7.5.4"
4947
-
},
4948
-
"engines": {
4949
-
"node": ">=10"
4950
-
}
4951
-
},
4952
-
"node_modules/istanbul-lib-report": {
4953
-
"version": "3.0.1",
4954
-
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
4955
-
"integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
4956
-
"dev": true,
4957
-
"license": "BSD-3-Clause",
4958
-
"dependencies": {
4959
-
"istanbul-lib-coverage": "^3.0.0",
4960
-
"make-dir": "^4.0.0",
4961
-
"supports-color": "^7.1.0"
4962
-
},
4963
-
"engines": {
4964
-
"node": ">=10"
4965
-
}
4966
-
},
4967
-
"node_modules/istanbul-lib-source-maps": {
4968
-
"version": "5.0.6",
4969
-
"resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
4970
-
"integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
4971
-
"dev": true,
4972
-
"license": "BSD-3-Clause",
4973
-
"dependencies": {
4974
-
"@jridgewell/trace-mapping": "^0.3.23",
4975
-
"debug": "^4.1.1",
4976
-
"istanbul-lib-coverage": "^3.0.0"
4977
-
},
4978
-
"engines": {
4979
-
"node": ">=10"
4980
-
}
4981
-
},
4982
-
"node_modules/istanbul-reports": {
4983
-
"version": "3.1.7",
4984
-
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
4985
-
"integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
4986
-
"dev": true,
4987
-
"license": "BSD-3-Clause",
4988
-
"dependencies": {
4989
-
"html-escaper": "^2.0.0",
4990
-
"istanbul-lib-report": "^3.0.0"
4991
-
},
4992
-
"engines": {
4993
-
"node": ">=8"
4994
-
}
4995
-
},
4996
-
"node_modules/jackspeak": {
4997
-
"version": "3.4.3",
4998
-
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
4999
-
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
5000
-
"dev": true,
5001
-
"license": "BlueOak-1.0.0",
5002
-
"dependencies": {
5003
-
"@isaacs/cliui": "^8.0.2"
5004
-
},
5005
-
"funding": {
5006
-
"url": "https://github.com/sponsors/isaacs"
5007
-
},
5008
-
"optionalDependencies": {
5009
-
"@pkgjs/parseargs": "^0.11.0"
5010
-
}
5011
-
},
5012
-
"node_modules/jake": {
5013
-
"version": "10.9.2",
5014
-
"resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
5015
-
"integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
5016
-
"license": "Apache-2.0",
5017
-
"dependencies": {
5018
-
"async": "^3.2.3",
5019
-
"chalk": "^4.0.2",
5020
-
"filelist": "^1.0.4",
5021
-
"minimatch": "^3.1.2"
5022
-
},
5023
-
"bin": {
5024
-
"jake": "bin/cli.js"
5025
-
},
5026
-
"engines": {
5027
-
"node": ">=10"
5028
-
}
5029
-
},
5030
-
"node_modules/jest": {
5031
-
"version": "30.0.2",
5032
-
"resolved": "https://registry.npmjs.org/jest/-/jest-30.0.2.tgz",
5033
-
"integrity": "sha512-HlSEiHRcmTuGwNyeawLTEzpQUMFn+f741FfoNg7RXG2h0WLJKozVCpcQLT0GW17H6kNCqRwGf+Ii/I1YVNvEGQ==",
5034
-
"dev": true,
5035
-
"license": "MIT",
5036
-
"dependencies": {
5037
-
"@jest/core": "30.0.2",
5038
-
"@jest/types": "30.0.1",
5039
-
"import-local": "^3.2.0",
5040
-
"jest-cli": "30.0.2"
5041
-
},
5042
-
"bin": {
5043
-
"jest": "bin/jest.js"
5044
-
},
5045
-
"engines": {
5046
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5047
-
},
5048
-
"peerDependencies": {
5049
-
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
5050
-
},
5051
-
"peerDependenciesMeta": {
5052
-
"node-notifier": {
5053
-
"optional": true
5054
-
}
5055
-
}
5056
-
},
5057
-
"node_modules/jest-changed-files": {
5058
-
"version": "30.0.2",
5059
-
"resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.2.tgz",
5060
-
"integrity": "sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA==",
5061
-
"dev": true,
5062
-
"license": "MIT",
5063
-
"dependencies": {
5064
-
"execa": "^5.1.1",
5065
-
"jest-util": "30.0.2",
5066
-
"p-limit": "^3.1.0"
5067
-
},
5068
-
"engines": {
5069
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5070
-
}
5071
-
},
5072
-
"node_modules/jest-circus": {
5073
-
"version": "30.0.2",
5074
-
"resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.2.tgz",
5075
-
"integrity": "sha512-NRozwx4DaFHcCUtwdEd/0jBLL1imyMrCbla3vF//wdsB2g6jIicMbjx9VhqE/BYU4dwsOQld+06ODX0oZ9xOLg==",
5076
-
"dev": true,
5077
-
"license": "MIT",
5078
-
"dependencies": {
5079
-
"@jest/environment": "30.0.2",
5080
-
"@jest/expect": "30.0.2",
5081
-
"@jest/test-result": "30.0.2",
5082
-
"@jest/types": "30.0.1",
5083
-
"@types/node": "*",
5084
-
"chalk": "^4.1.2",
5085
-
"co": "^4.6.0",
5086
-
"dedent": "^1.6.0",
5087
-
"is-generator-fn": "^2.1.0",
5088
-
"jest-each": "30.0.2",
5089
-
"jest-matcher-utils": "30.0.2",
5090
-
"jest-message-util": "30.0.2",
5091
-
"jest-runtime": "30.0.2",
5092
-
"jest-snapshot": "30.0.2",
5093
-
"jest-util": "30.0.2",
5094
-
"p-limit": "^3.1.0",
5095
-
"pretty-format": "30.0.2",
5096
-
"pure-rand": "^7.0.0",
5097
-
"slash": "^3.0.0",
5098
-
"stack-utils": "^2.0.6"
5099
-
},
5100
-
"engines": {
5101
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5102
-
}
5103
-
},
5104
-
"node_modules/jest-cli": {
5105
-
"version": "30.0.2",
5106
-
"resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.2.tgz",
5107
-
"integrity": "sha512-yQ6Qz747oUbMYLNAqOlEby+hwXx7WEJtCl0iolBRpJhr2uvkBgiVMrvuKirBc8utwQBnkETFlDUkYifbRpmBrQ==",
5108
-
"dev": true,
5109
-
"license": "MIT",
5110
-
"dependencies": {
5111
-
"@jest/core": "30.0.2",
5112
-
"@jest/test-result": "30.0.2",
5113
-
"@jest/types": "30.0.1",
5114
-
"chalk": "^4.1.2",
5115
-
"exit-x": "^0.2.2",
5116
-
"import-local": "^3.2.0",
5117
-
"jest-config": "30.0.2",
5118
-
"jest-util": "30.0.2",
5119
-
"jest-validate": "30.0.2",
5120
-
"yargs": "^17.7.2"
5121
-
},
5122
-
"bin": {
5123
-
"jest": "bin/jest.js"
5124
-
},
5125
-
"engines": {
5126
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5127
-
},
5128
-
"peerDependencies": {
5129
-
"node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
5130
-
},
5131
-
"peerDependenciesMeta": {
5132
-
"node-notifier": {
5133
-
"optional": true
5134
-
}
5135
-
}
5136
-
},
5137
-
"node_modules/jest-config": {
5138
-
"version": "30.0.2",
5139
-
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.2.tgz",
5140
-
"integrity": "sha512-vo0fVq+uzDcXETFVnCUyr5HaUCM8ES6DEuS9AFpma34BVXMRRNlsqDyiW5RDHaEFoeFlJHoI4Xjh/WSYIAL58g==",
5141
-
"dev": true,
5142
-
"license": "MIT",
5143
-
"dependencies": {
5144
-
"@babel/core": "^7.27.4",
5145
-
"@jest/get-type": "30.0.1",
5146
-
"@jest/pattern": "30.0.1",
5147
-
"@jest/test-sequencer": "30.0.2",
5148
-
"@jest/types": "30.0.1",
5149
-
"babel-jest": "30.0.2",
5150
-
"chalk": "^4.1.2",
5151
-
"ci-info": "^4.2.0",
5152
-
"deepmerge": "^4.3.1",
5153
-
"glob": "^10.3.10",
5154
-
"graceful-fs": "^4.2.11",
5155
-
"jest-circus": "30.0.2",
5156
-
"jest-docblock": "30.0.1",
5157
-
"jest-environment-node": "30.0.2",
5158
-
"jest-regex-util": "30.0.1",
5159
-
"jest-resolve": "30.0.2",
5160
-
"jest-runner": "30.0.2",
5161
-
"jest-util": "30.0.2",
5162
-
"jest-validate": "30.0.2",
5163
-
"micromatch": "^4.0.8",
5164
-
"parse-json": "^5.2.0",
5165
-
"pretty-format": "30.0.2",
5166
-
"slash": "^3.0.0",
5167
-
"strip-json-comments": "^3.1.1"
5168
-
},
5169
-
"engines": {
5170
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5171
-
},
5172
-
"peerDependencies": {
5173
-
"@types/node": "*",
5174
-
"esbuild-register": ">=3.4.0",
5175
-
"ts-node": ">=9.0.0"
5176
-
},
5177
-
"peerDependenciesMeta": {
5178
-
"@types/node": {
5179
-
"optional": true
5180
-
},
5181
-
"esbuild-register": {
5182
-
"optional": true
5183
-
},
5184
-
"ts-node": {
5185
-
"optional": true
5186
-
}
5187
-
}
5188
-
},
5189
-
"node_modules/jest-config/node_modules/strip-json-comments": {
5190
-
"version": "3.1.1",
5191
-
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
5192
-
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
5193
-
"dev": true,
5194
-
"license": "MIT",
5195
-
"engines": {
5196
-
"node": ">=8"
5197
-
},
5198
-
"funding": {
5199
-
"url": "https://github.com/sponsors/sindresorhus"
5200
-
}
5201
-
},
5202
-
"node_modules/jest-diff": {
5203
-
"version": "30.0.2",
5204
-
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.2.tgz",
5205
-
"integrity": "sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ==",
5206
-
"dev": true,
5207
-
"license": "MIT",
5208
-
"dependencies": {
5209
-
"@jest/diff-sequences": "30.0.1",
5210
-
"@jest/get-type": "30.0.1",
5211
-
"chalk": "^4.1.2",
5212
-
"pretty-format": "30.0.2"
5213
-
},
5214
-
"engines": {
5215
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5216
-
}
5217
-
},
5218
-
"node_modules/jest-docblock": {
5219
-
"version": "30.0.1",
5220
-
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz",
5221
-
"integrity": "sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==",
5222
-
"dev": true,
5223
-
"license": "MIT",
5224
-
"dependencies": {
5225
-
"detect-newline": "^3.1.0"
5226
-
},
5227
-
"engines": {
5228
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5229
-
}
5230
-
},
5231
-
"node_modules/jest-each": {
5232
-
"version": "30.0.2",
5233
-
"resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.2.tgz",
5234
-
"integrity": "sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ==",
5235
-
"dev": true,
5236
-
"license": "MIT",
5237
-
"dependencies": {
5238
-
"@jest/get-type": "30.0.1",
5239
-
"@jest/types": "30.0.1",
5240
-
"chalk": "^4.1.2",
5241
-
"jest-util": "30.0.2",
5242
-
"pretty-format": "30.0.2"
5243
-
},
5244
-
"engines": {
5245
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5246
-
}
5247
-
},
5248
-
"node_modules/jest-environment-node": {
5249
-
"version": "30.0.2",
5250
-
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.2.tgz",
5251
-
"integrity": "sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ==",
5252
-
"dev": true,
5253
-
"license": "MIT",
5254
-
"dependencies": {
5255
-
"@jest/environment": "30.0.2",
5256
-
"@jest/fake-timers": "30.0.2",
5257
-
"@jest/types": "30.0.1",
5258
-
"@types/node": "*",
5259
-
"jest-mock": "30.0.2",
5260
-
"jest-util": "30.0.2",
5261
-
"jest-validate": "30.0.2"
5262
-
},
5263
-
"engines": {
5264
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5265
-
}
5266
-
},
5267
-
"node_modules/jest-haste-map": {
5268
-
"version": "30.0.2",
5269
-
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.2.tgz",
5270
-
"integrity": "sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ==",
5271
-
"dev": true,
5272
-
"license": "MIT",
5273
-
"dependencies": {
5274
-
"@jest/types": "30.0.1",
5275
-
"@types/node": "*",
5276
-
"anymatch": "^3.1.3",
5277
-
"fb-watchman": "^2.0.2",
5278
-
"graceful-fs": "^4.2.11",
5279
-
"jest-regex-util": "30.0.1",
5280
-
"jest-util": "30.0.2",
5281
-
"jest-worker": "30.0.2",
5282
-
"micromatch": "^4.0.8",
5283
-
"walker": "^1.0.8"
5284
-
},
5285
-
"engines": {
5286
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5287
-
},
5288
-
"optionalDependencies": {
5289
-
"fsevents": "^2.3.3"
5290
-
}
5291
-
},
5292
-
"node_modules/jest-leak-detector": {
5293
-
"version": "30.0.2",
5294
-
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz",
5295
-
"integrity": "sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ==",
5296
-
"dev": true,
5297
-
"license": "MIT",
5298
-
"dependencies": {
5299
-
"@jest/get-type": "30.0.1",
5300
-
"pretty-format": "30.0.2"
5301
-
},
5302
-
"engines": {
5303
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5304
-
}
5305
-
},
5306
-
"node_modules/jest-matcher-utils": {
5307
-
"version": "30.0.2",
5308
-
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz",
5309
-
"integrity": "sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA==",
5310
-
"dev": true,
5311
-
"license": "MIT",
5312
-
"dependencies": {
5313
-
"@jest/get-type": "30.0.1",
5314
-
"chalk": "^4.1.2",
5315
-
"jest-diff": "30.0.2",
5316
-
"pretty-format": "30.0.2"
5317
-
},
5318
-
"engines": {
5319
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5320
-
}
5321
-
},
5322
-
"node_modules/jest-message-util": {
5323
-
"version": "30.0.2",
5324
-
"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz",
5325
-
"integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==",
5326
-
"dev": true,
5327
-
"license": "MIT",
5328
-
"dependencies": {
5329
-
"@babel/code-frame": "^7.27.1",
5330
-
"@jest/types": "30.0.1",
5331
-
"@types/stack-utils": "^2.0.3",
5332
-
"chalk": "^4.1.2",
5333
-
"graceful-fs": "^4.2.11",
5334
-
"micromatch": "^4.0.8",
5335
-
"pretty-format": "30.0.2",
5336
-
"slash": "^3.0.0",
5337
-
"stack-utils": "^2.0.6"
5338
-
},
5339
-
"engines": {
5340
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5341
-
}
5342
-
},
5343
-
"node_modules/jest-mock": {
5344
-
"version": "30.0.2",
5345
-
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz",
5346
-
"integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==",
5347
-
"dev": true,
5348
-
"license": "MIT",
5349
-
"dependencies": {
5350
-
"@jest/types": "30.0.1",
5351
-
"@types/node": "*",
5352
-
"jest-util": "30.0.2"
5353
-
},
5354
-
"engines": {
5355
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5356
-
}
5357
-
},
5358
-
"node_modules/jest-pnp-resolver": {
5359
-
"version": "1.2.3",
5360
-
"resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
5361
-
"integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
5362
-
"dev": true,
5363
-
"license": "MIT",
5364
-
"engines": {
5365
-
"node": ">=6"
5366
-
},
5367
-
"peerDependencies": {
5368
-
"jest-resolve": "*"
5369
-
},
5370
-
"peerDependenciesMeta": {
5371
-
"jest-resolve": {
5372
-
"optional": true
5373
-
}
5374
-
}
5375
-
},
5376
-
"node_modules/jest-regex-util": {
5377
-
"version": "30.0.1",
5378
-
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
5379
-
"integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
5380
-
"dev": true,
5381
-
"license": "MIT",
5382
-
"engines": {
5383
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5384
-
}
5385
-
},
5386
-
"node_modules/jest-resolve": {
5387
-
"version": "30.0.2",
5388
-
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.2.tgz",
5389
-
"integrity": "sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw==",
5390
-
"dev": true,
5391
-
"license": "MIT",
5392
-
"dependencies": {
5393
-
"chalk": "^4.1.2",
5394
-
"graceful-fs": "^4.2.11",
5395
-
"jest-haste-map": "30.0.2",
5396
-
"jest-pnp-resolver": "^1.2.3",
5397
-
"jest-util": "30.0.2",
5398
-
"jest-validate": "30.0.2",
5399
-
"slash": "^3.0.0",
5400
-
"unrs-resolver": "^1.7.11"
5401
-
},
5402
-
"engines": {
5403
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5404
-
}
5405
-
},
5406
-
"node_modules/jest-resolve-dependencies": {
5407
-
"version": "30.0.2",
5408
-
"resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.2.tgz",
5409
-
"integrity": "sha512-Lp1iIXpsF5fGM4vyP8xHiIy2H5L5yO67/nXoYJzH4kz+fQmO+ZMKxzYLyWxYy4EeCLeNQ6a9OozL+uHZV2iuEA==",
5410
-
"dev": true,
5411
-
"license": "MIT",
5412
-
"dependencies": {
5413
-
"jest-regex-util": "30.0.1",
5414
-
"jest-snapshot": "30.0.2"
5415
-
},
5416
-
"engines": {
5417
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5418
-
}
5419
-
},
5420
-
"node_modules/jest-runner": {
5421
-
"version": "30.0.2",
5422
-
"resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.2.tgz",
5423
-
"integrity": "sha512-6H+CIFiDLVt1Ix6jLzASXz3IoIiDukpEIxL9FHtDQ2BD/k5eFtDF5e5N9uItzRE3V1kp7VoSRyrGBytXKra4xA==",
5424
-
"dev": true,
5425
-
"license": "MIT",
5426
-
"dependencies": {
5427
-
"@jest/console": "30.0.2",
5428
-
"@jest/environment": "30.0.2",
5429
-
"@jest/test-result": "30.0.2",
5430
-
"@jest/transform": "30.0.2",
5431
-
"@jest/types": "30.0.1",
5432
-
"@types/node": "*",
5433
-
"chalk": "^4.1.2",
5434
-
"emittery": "^0.13.1",
5435
-
"exit-x": "^0.2.2",
5436
-
"graceful-fs": "^4.2.11",
5437
-
"jest-docblock": "30.0.1",
5438
-
"jest-environment-node": "30.0.2",
5439
-
"jest-haste-map": "30.0.2",
5440
-
"jest-leak-detector": "30.0.2",
5441
-
"jest-message-util": "30.0.2",
5442
-
"jest-resolve": "30.0.2",
5443
-
"jest-runtime": "30.0.2",
5444
-
"jest-util": "30.0.2",
5445
-
"jest-watcher": "30.0.2",
5446
-
"jest-worker": "30.0.2",
5447
-
"p-limit": "^3.1.0",
5448
-
"source-map-support": "0.5.13"
5449
-
},
5450
-
"engines": {
5451
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5452
-
}
5453
-
},
5454
-
"node_modules/jest-runtime": {
5455
-
"version": "30.0.2",
5456
-
"resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.2.tgz",
5457
-
"integrity": "sha512-H1a51/soNOeAjoggu6PZKTH7DFt8JEGN4mesTSwyqD2jU9PXD04Bp6DKbt2YVtQvh2JcvH2vjbkEerCZ3lRn7A==",
5458
-
"dev": true,
5459
-
"license": "MIT",
5460
-
"dependencies": {
5461
-
"@jest/environment": "30.0.2",
5462
-
"@jest/fake-timers": "30.0.2",
5463
-
"@jest/globals": "30.0.2",
5464
-
"@jest/source-map": "30.0.1",
5465
-
"@jest/test-result": "30.0.2",
5466
-
"@jest/transform": "30.0.2",
5467
-
"@jest/types": "30.0.1",
5468
-
"@types/node": "*",
5469
-
"chalk": "^4.1.2",
5470
-
"cjs-module-lexer": "^2.1.0",
5471
-
"collect-v8-coverage": "^1.0.2",
5472
-
"glob": "^10.3.10",
5473
-
"graceful-fs": "^4.2.11",
5474
-
"jest-haste-map": "30.0.2",
5475
-
"jest-message-util": "30.0.2",
5476
-
"jest-mock": "30.0.2",
5477
-
"jest-regex-util": "30.0.1",
5478
-
"jest-resolve": "30.0.2",
5479
-
"jest-snapshot": "30.0.2",
5480
-
"jest-util": "30.0.2",
5481
-
"slash": "^3.0.0",
5482
-
"strip-bom": "^4.0.0"
5483
-
},
5484
-
"engines": {
5485
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5486
-
}
5487
-
},
5488
-
"node_modules/jest-snapshot": {
5489
-
"version": "30.0.2",
5490
-
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.2.tgz",
5491
-
"integrity": "sha512-KeoHikoKGln3OlN7NS7raJ244nIVr2K46fBTNdfuxqYv2/g4TVyWDSO4fmk08YBJQMjs3HNfG1rlLfL/KA+nUw==",
5492
-
"dev": true,
5493
-
"license": "MIT",
5494
-
"dependencies": {
5495
-
"@babel/core": "^7.27.4",
5496
-
"@babel/generator": "^7.27.5",
5497
-
"@babel/plugin-syntax-jsx": "^7.27.1",
5498
-
"@babel/plugin-syntax-typescript": "^7.27.1",
5499
-
"@babel/types": "^7.27.3",
5500
-
"@jest/expect-utils": "30.0.2",
5501
-
"@jest/get-type": "30.0.1",
5502
-
"@jest/snapshot-utils": "30.0.1",
5503
-
"@jest/transform": "30.0.2",
5504
-
"@jest/types": "30.0.1",
5505
-
"babel-preset-current-node-syntax": "^1.1.0",
5506
-
"chalk": "^4.1.2",
5507
-
"expect": "30.0.2",
5508
-
"graceful-fs": "^4.2.11",
5509
-
"jest-diff": "30.0.2",
5510
-
"jest-matcher-utils": "30.0.2",
5511
-
"jest-message-util": "30.0.2",
5512
-
"jest-util": "30.0.2",
5513
-
"pretty-format": "30.0.2",
5514
-
"semver": "^7.7.2",
5515
-
"synckit": "^0.11.8"
5516
-
},
5517
-
"engines": {
5518
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5519
-
}
5520
-
},
5521
-
"node_modules/jest-util": {
5522
-
"version": "30.0.2",
5523
-
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz",
5524
-
"integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==",
5525
-
"dev": true,
5526
-
"license": "MIT",
5527
-
"dependencies": {
5528
-
"@jest/types": "30.0.1",
5529
-
"@types/node": "*",
5530
-
"chalk": "^4.1.2",
5531
-
"ci-info": "^4.2.0",
5532
-
"graceful-fs": "^4.2.11",
5533
-
"picomatch": "^4.0.2"
5534
-
},
5535
-
"engines": {
5536
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5537
-
}
5538
-
},
5539
-
"node_modules/jest-util/node_modules/picomatch": {
5540
-
"version": "4.0.2",
5541
-
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
5542
-
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
5543
-
"dev": true,
5544
-
"license": "MIT",
5545
-
"engines": {
5546
-
"node": ">=12"
5547
-
},
5548
-
"funding": {
5549
-
"url": "https://github.com/sponsors/jonschlinkert"
5550
-
}
5551
-
},
5552
-
"node_modules/jest-validate": {
5553
-
"version": "30.0.2",
5554
-
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.2.tgz",
5555
-
"integrity": "sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ==",
5556
-
"dev": true,
5557
-
"license": "MIT",
5558
-
"dependencies": {
5559
-
"@jest/get-type": "30.0.1",
5560
-
"@jest/types": "30.0.1",
5561
-
"camelcase": "^6.3.0",
5562
-
"chalk": "^4.1.2",
5563
-
"leven": "^3.1.0",
5564
-
"pretty-format": "30.0.2"
5565
-
},
5566
-
"engines": {
5567
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5568
-
}
5569
-
},
5570
-
"node_modules/jest-validate/node_modules/camelcase": {
5571
-
"version": "6.3.0",
5572
-
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
5573
-
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
5574
-
"dev": true,
5575
-
"license": "MIT",
5576
-
"engines": {
5577
-
"node": ">=10"
5578
-
},
5579
-
"funding": {
5580
-
"url": "https://github.com/sponsors/sindresorhus"
5581
-
}
5582
-
},
5583
-
"node_modules/jest-watcher": {
5584
-
"version": "30.0.2",
5585
-
"resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.2.tgz",
5586
-
"integrity": "sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg==",
5587
-
"dev": true,
5588
-
"license": "MIT",
5589
-
"dependencies": {
5590
-
"@jest/test-result": "30.0.2",
5591
-
"@jest/types": "30.0.1",
5592
-
"@types/node": "*",
5593
-
"ansi-escapes": "^4.3.2",
5594
-
"chalk": "^4.1.2",
5595
-
"emittery": "^0.13.1",
5596
-
"jest-util": "30.0.2",
5597
-
"string-length": "^4.0.2"
5598
-
},
5599
-
"engines": {
5600
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5601
-
}
5602
-
},
5603
-
"node_modules/jest-worker": {
5604
-
"version": "30.0.2",
5605
-
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.2.tgz",
5606
-
"integrity": "sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg==",
5607
-
"dev": true,
5608
-
"license": "MIT",
5609
-
"dependencies": {
5610
-
"@types/node": "*",
5611
-
"@ungap/structured-clone": "^1.3.0",
5612
-
"jest-util": "30.0.2",
5613
-
"merge-stream": "^2.0.0",
5614
-
"supports-color": "^8.1.1"
5615
-
},
5616
-
"engines": {
5617
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5618
-
}
5619
-
},
5620
-
"node_modules/jest-worker/node_modules/supports-color": {
5621
-
"version": "8.1.1",
5622
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
5623
-
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
5624
-
"dev": true,
5625
-
"license": "MIT",
5626
-
"dependencies": {
5627
-
"has-flag": "^4.0.0"
5628
-
},
5629
-
"engines": {
5630
-
"node": ">=10"
5631
-
},
5632
-
"funding": {
5633
-
"url": "https://github.com/chalk/supports-color?sponsor=1"
5634
-
}
5635
-
},
5636
-
"node_modules/js-tokens": {
5637
-
"version": "4.0.0",
5638
-
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
5639
-
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
5640
-
"dev": true,
5641
-
"license": "MIT"
5642
-
},
5643
-
"node_modules/js-yaml": {
5644
-
"version": "3.14.1",
5645
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
5646
-
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
5647
-
"dev": true,
5648
-
"license": "MIT",
5649
-
"dependencies": {
5650
-
"argparse": "^1.0.7",
5651
-
"esprima": "^4.0.0"
5652
-
},
5653
-
"bin": {
5654
-
"js-yaml": "bin/js-yaml.js"
5655
-
}
5656
-
},
5657
-
"node_modules/jsesc": {
5658
-
"version": "3.1.0",
5659
-
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
5660
-
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
5661
-
"dev": true,
5662
-
"license": "MIT",
5663
-
"bin": {
5664
-
"jsesc": "bin/jsesc"
5665
-
},
5666
-
"engines": {
5667
-
"node": ">=6"
5668
-
}
5669
-
},
5670
-
"node_modules/json-parse-even-better-errors": {
5671
-
"version": "2.3.1",
5672
-
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
5673
-
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
5674
-
"dev": true,
5675
-
"license": "MIT"
5676
-
},
5677
-
"node_modules/json5": {
5678
-
"version": "2.2.3",
5679
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
5680
-
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
5681
-
"dev": true,
5682
-
"license": "MIT",
5683
-
"bin": {
5684
-
"json5": "lib/cli.js"
5685
-
},
5686
-
"engines": {
5687
-
"node": ">=6"
5688
-
}
5689
-
},
5690
-
"node_modules/leven": {
5691
-
"version": "3.1.0",
5692
-
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
5693
-
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
5694
-
"dev": true,
5695
-
"license": "MIT",
5696
-
"engines": {
5697
-
"node": ">=6"
5698
-
}
5699
-
},
5700
-
"node_modules/lines-and-columns": {
5701
-
"version": "1.2.4",
5702
-
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
5703
-
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
5704
-
"dev": true,
5705
-
"license": "MIT"
5706
-
},
5707
-
"node_modules/locate-path": {
5708
-
"version": "5.0.0",
5709
-
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
5710
-
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
5711
-
"dev": true,
5712
-
"license": "MIT",
5713
-
"dependencies": {
5714
-
"p-locate": "^4.1.0"
5715
-
},
5716
-
"engines": {
5717
-
"node": ">=8"
5718
-
}
5719
-
},
5720
-
"node_modules/lodash": {
5721
-
"version": "4.17.21",
5722
-
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
5723
-
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
5724
-
"dev": true,
5725
-
"license": "MIT"
5726
-
},
5727
-
"node_modules/lodash.memoize": {
5728
-
"version": "4.1.2",
5729
-
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
5730
-
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
5731
-
"dev": true,
5732
-
"license": "MIT"
5733
-
},
5734
-
"node_modules/lru-cache": {
5735
-
"version": "5.1.1",
5736
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
5737
-
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
5738
-
"dev": true,
5739
-
"license": "ISC",
5740
-
"dependencies": {
5741
-
"yallist": "^3.0.2"
5742
-
}
5743
-
},
5744
-
"node_modules/make-dir": {
5745
-
"version": "4.0.0",
5746
-
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
5747
-
"integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
5748
-
"dev": true,
5749
-
"license": "MIT",
5750
-
"dependencies": {
5751
-
"semver": "^7.5.3"
5752
-
},
5753
-
"engines": {
5754
-
"node": ">=10"
5755
-
},
5756
-
"funding": {
5757
-
"url": "https://github.com/sponsors/sindresorhus"
5758
-
}
5759
-
},
5760
-
"node_modules/make-error": {
5761
-
"version": "1.3.6",
5762
-
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
5763
-
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
5764
-
"dev": true,
5765
-
"license": "ISC"
5766
-
},
5767
-
"node_modules/makeerror": {
5768
-
"version": "1.0.12",
5769
-
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
5770
-
"integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
5771
-
"dev": true,
5772
-
"license": "BSD-3-Clause",
5773
-
"dependencies": {
5774
-
"tmpl": "1.0.5"
5775
-
}
5776
-
},
5777
-
"node_modules/math-intrinsics": {
5778
-
"version": "1.1.0",
5779
-
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
5780
-
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
5781
-
"license": "MIT",
5782
-
"engines": {
5783
-
"node": ">= 0.4"
5784
-
}
5785
-
},
5786
-
"node_modules/media-typer": {
5787
-
"version": "1.1.0",
5788
-
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
5789
-
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
5790
-
"license": "MIT",
5791
-
"engines": {
5792
-
"node": ">= 0.8"
5793
-
}
5794
-
},
5795
-
"node_modules/merge-descriptors": {
5796
-
"version": "2.0.0",
5797
-
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
5798
-
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
5799
-
"license": "MIT",
5800
-
"engines": {
5801
-
"node": ">=18"
5802
-
},
5803
-
"funding": {
5804
-
"url": "https://github.com/sponsors/sindresorhus"
5805
-
}
5806
-
},
5807
-
"node_modules/merge-stream": {
5808
-
"version": "2.0.0",
5809
-
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
5810
-
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
5811
-
"dev": true,
5812
-
"license": "MIT"
5813
-
},
5814
-
"node_modules/methods": {
5815
-
"version": "1.1.2",
5816
-
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
5817
-
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
5818
-
"license": "MIT",
5819
-
"engines": {
5820
-
"node": ">= 0.6"
5821
-
}
5822
-
},
5823
-
"node_modules/micromatch": {
5824
-
"version": "4.0.8",
5825
-
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
5826
-
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
5827
-
"dev": true,
5828
-
"license": "MIT",
5829
-
"dependencies": {
5830
-
"braces": "^3.0.3",
5831
-
"picomatch": "^2.3.1"
5832
-
},
5833
-
"engines": {
5834
-
"node": ">=8.6"
5835
-
}
5836
-
},
5837
-
"node_modules/mime": {
5838
-
"version": "1.6.0",
5839
-
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
5840
-
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
5841
-
"license": "MIT",
5842
-
"bin": {
5843
-
"mime": "cli.js"
5844
-
},
5845
-
"engines": {
5846
-
"node": ">=4"
5847
-
}
5848
-
},
5849
-
"node_modules/mime-db": {
5850
-
"version": "1.54.0",
5851
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
5852
-
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
5853
-
"license": "MIT",
5854
-
"engines": {
5855
-
"node": ">= 0.6"
5856
-
}
5857
-
},
5858
-
"node_modules/mime-types": {
5859
-
"version": "3.0.1",
5860
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
5861
-
"integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
5862
-
"license": "MIT",
5863
-
"dependencies": {
5864
-
"mime-db": "^1.54.0"
5865
-
},
5866
-
"engines": {
5867
-
"node": ">= 0.6"
5868
-
}
5869
-
},
5870
-
"node_modules/mimic-fn": {
5871
-
"version": "2.1.0",
5872
-
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
5873
-
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
5874
-
"dev": true,
5875
-
"license": "MIT",
5876
-
"engines": {
5877
-
"node": ">=6"
5878
-
}
5879
-
},
5880
-
"node_modules/mimic-response": {
5881
-
"version": "3.1.0",
5882
-
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
5883
-
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
5884
-
"license": "MIT",
5885
-
"engines": {
5886
-
"node": ">=10"
5887
-
},
5888
-
"funding": {
5889
-
"url": "https://github.com/sponsors/sindresorhus"
5890
-
}
5891
-
},
5892
-
"node_modules/minimatch": {
5893
-
"version": "3.1.2",
5894
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
5895
-
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
5896
-
"license": "ISC",
5897
-
"dependencies": {
5898
-
"brace-expansion": "^1.1.7"
5899
-
},
5900
-
"engines": {
5901
-
"node": "*"
5902
-
}
5903
-
},
5904
-
"node_modules/minimist": {
5905
-
"version": "1.2.8",
5906
-
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
5907
-
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
5908
-
"license": "MIT",
5909
-
"funding": {
5910
-
"url": "https://github.com/sponsors/ljharb"
5911
-
}
5912
-
},
5913
-
"node_modules/minipass": {
5914
-
"version": "7.1.2",
5915
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
5916
-
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
5917
-
"dev": true,
5918
-
"license": "ISC",
5919
-
"engines": {
5920
-
"node": ">=16 || 14 >=14.17"
5921
-
}
5922
-
},
5923
-
"node_modules/mkdirp-classic": {
5924
-
"version": "0.5.3",
5925
-
"resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
5926
-
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
5927
-
"license": "MIT"
5928
-
},
5929
-
"node_modules/ms": {
5930
-
"version": "2.1.3",
5931
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
5932
-
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
5933
-
"license": "MIT"
5934
-
},
5935
-
"node_modules/multiformats": {
5936
-
"version": "13.3.7",
5937
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.3.7.tgz",
5938
-
"integrity": "sha512-meL9DERHj+fFVWoOX9fXqfcYcSpUfSYJPcFvDPKrxitICbwAoWR+Ut4j5NO9zAT917HUHLQmqzQbAsGNHlDcxQ==",
5939
-
"license": "Apache-2.0 OR MIT"
5940
-
},
5941
-
"node_modules/nanoevents": {
5942
-
"version": "9.1.0",
5943
-
"resolved": "https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz",
5944
-
"integrity": "sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==",
5945
-
"license": "MIT",
5946
-
"engines": {
5947
-
"node": "^18.0.0 || >=20.0.0"
5948
-
}
5949
-
},
5950
-
"node_modules/napi-build-utils": {
5951
-
"version": "2.0.0",
5952
-
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
5953
-
"integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
5954
-
"license": "MIT"
5955
-
},
5956
-
"node_modules/napi-postinstall": {
5957
-
"version": "0.2.4",
5958
-
"resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz",
5959
-
"integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==",
5960
-
"dev": true,
5961
-
"license": "MIT",
5962
-
"bin": {
5963
-
"napi-postinstall": "lib/cli.js"
5964
-
},
5965
-
"engines": {
5966
-
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
5967
-
},
5968
-
"funding": {
5969
-
"url": "https://opencollective.com/napi-postinstall"
5970
-
}
5971
-
},
5972
-
"node_modules/natural-compare": {
5973
-
"version": "1.4.0",
5974
-
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
5975
-
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
5976
-
"dev": true,
5977
-
"license": "MIT"
5978
-
},
5979
-
"node_modules/negotiator": {
5980
-
"version": "1.0.0",
5981
-
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
5982
-
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
5983
-
"license": "MIT",
5984
-
"engines": {
5985
-
"node": ">= 0.6"
5986
-
}
5987
-
},
5988
-
"node_modules/node-abi": {
5989
-
"version": "3.75.0",
5990
-
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz",
5991
-
"integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==",
5992
-
"license": "MIT",
5993
-
"dependencies": {
5994
-
"semver": "^7.3.5"
5995
-
},
5996
-
"engines": {
5997
-
"node": ">=10"
5998
-
}
5999
-
},
6000
-
"node_modules/node-gyp-build-optional-packages": {
6001
-
"version": "5.1.1",
6002
-
"resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz",
6003
-
"integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==",
6004
-
"license": "MIT",
6005
-
"optional": true,
6006
-
"dependencies": {
6007
-
"detect-libc": "^2.0.1"
6008
-
},
6009
-
"bin": {
6010
-
"node-gyp-build-optional-packages": "bin.js",
6011
-
"node-gyp-build-optional-packages-optional": "optional.js",
6012
-
"node-gyp-build-optional-packages-test": "build-test.js"
6013
-
}
6014
-
},
6015
-
"node_modules/node-int64": {
6016
-
"version": "0.4.0",
6017
-
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
6018
-
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
6019
-
"dev": true,
6020
-
"license": "MIT"
6021
-
},
6022
-
"node_modules/node-releases": {
6023
-
"version": "2.0.19",
6024
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
6025
-
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
6026
-
"dev": true,
6027
-
"license": "MIT"
6028
-
},
6029
-
"node_modules/normalize-path": {
6030
-
"version": "3.0.0",
6031
-
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
6032
-
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
6033
-
"dev": true,
6034
-
"license": "MIT",
6035
-
"engines": {
6036
-
"node": ">=0.10.0"
6037
-
}
6038
-
},
6039
-
"node_modules/npm-run-path": {
6040
-
"version": "4.0.1",
6041
-
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
6042
-
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
6043
-
"dev": true,
6044
-
"license": "MIT",
6045
-
"dependencies": {
6046
-
"path-key": "^3.0.0"
6047
-
},
6048
-
"engines": {
6049
-
"node": ">=8"
6050
-
}
6051
-
},
6052
-
"node_modules/object-assign": {
6053
-
"version": "4.1.1",
6054
-
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
6055
-
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
6056
-
"license": "MIT",
6057
-
"engines": {
6058
-
"node": ">=0.10.0"
6059
-
}
6060
-
},
6061
-
"node_modules/object-inspect": {
6062
-
"version": "1.13.4",
6063
-
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
6064
-
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
6065
-
"license": "MIT",
6066
-
"engines": {
6067
-
"node": ">= 0.4"
6068
-
},
6069
-
"funding": {
6070
-
"url": "https://github.com/sponsors/ljharb"
6071
-
}
6072
-
},
6073
-
"node_modules/on-exit-leak-free": {
6074
-
"version": "2.1.2",
6075
-
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
6076
-
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
6077
-
"license": "MIT",
6078
-
"engines": {
6079
-
"node": ">=14.0.0"
6080
-
}
6081
-
},
6082
-
"node_modules/on-finished": {
6083
-
"version": "2.4.1",
6084
-
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
6085
-
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
6086
-
"license": "MIT",
6087
-
"dependencies": {
6088
-
"ee-first": "1.1.1"
6089
-
},
6090
-
"engines": {
6091
-
"node": ">= 0.8"
6092
-
}
6093
-
},
6094
-
"node_modules/on-headers": {
6095
-
"version": "1.0.2",
6096
-
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
6097
-
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
6098
-
"license": "MIT",
6099
-
"engines": {
6100
-
"node": ">= 0.8"
6101
-
}
6102
-
},
6103
-
"node_modules/once": {
6104
-
"version": "1.4.0",
6105
-
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
6106
-
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
6107
-
"license": "ISC",
6108
-
"dependencies": {
6109
-
"wrappy": "1"
6110
-
}
6111
-
},
6112
-
"node_modules/onetime": {
6113
-
"version": "5.1.2",
6114
-
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
6115
-
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
6116
-
"dev": true,
6117
-
"license": "MIT",
6118
-
"dependencies": {
6119
-
"mimic-fn": "^2.1.0"
6120
-
},
6121
-
"engines": {
6122
-
"node": ">=6"
6123
-
},
6124
-
"funding": {
6125
-
"url": "https://github.com/sponsors/sindresorhus"
6126
-
}
6127
-
},
6128
-
"node_modules/p-finally": {
6129
-
"version": "1.0.0",
6130
-
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
6131
-
"integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
6132
-
"license": "MIT",
6133
-
"engines": {
6134
-
"node": ">=4"
6135
-
}
6136
-
},
6137
-
"node_modules/p-limit": {
6138
-
"version": "3.1.0",
6139
-
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
6140
-
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
6141
-
"dev": true,
6142
-
"license": "MIT",
6143
-
"dependencies": {
6144
-
"yocto-queue": "^0.1.0"
6145
-
},
6146
-
"engines": {
6147
-
"node": ">=10"
6148
-
},
6149
-
"funding": {
6150
-
"url": "https://github.com/sponsors/sindresorhus"
6151
-
}
6152
-
},
6153
-
"node_modules/p-limit/node_modules/yocto-queue": {
6154
-
"version": "0.1.0",
6155
-
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
6156
-
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
6157
-
"dev": true,
6158
-
"license": "MIT",
6159
-
"engines": {
6160
-
"node": ">=10"
6161
-
},
6162
-
"funding": {
6163
-
"url": "https://github.com/sponsors/sindresorhus"
6164
-
}
6165
-
},
6166
-
"node_modules/p-locate": {
6167
-
"version": "4.1.0",
6168
-
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
6169
-
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
6170
-
"dev": true,
6171
-
"license": "MIT",
6172
-
"dependencies": {
6173
-
"p-limit": "^2.2.0"
6174
-
},
6175
-
"engines": {
6176
-
"node": ">=8"
6177
-
}
6178
-
},
6179
-
"node_modules/p-locate/node_modules/p-limit": {
6180
-
"version": "2.3.0",
6181
-
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
6182
-
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
6183
-
"dev": true,
6184
-
"license": "MIT",
6185
-
"dependencies": {
6186
-
"p-try": "^2.0.0"
6187
-
},
6188
-
"engines": {
6189
-
"node": ">=6"
6190
-
},
6191
-
"funding": {
6192
-
"url": "https://github.com/sponsors/sindresorhus"
6193
-
}
6194
-
},
6195
-
"node_modules/p-queue": {
6196
-
"version": "6.6.2",
6197
-
"resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
6198
-
"integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
6199
-
"license": "MIT",
6200
-
"dependencies": {
6201
-
"eventemitter3": "^4.0.4",
6202
-
"p-timeout": "^3.2.0"
6203
-
},
6204
-
"engines": {
6205
-
"node": ">=8"
6206
-
},
6207
-
"funding": {
6208
-
"url": "https://github.com/sponsors/sindresorhus"
6209
-
}
6210
-
},
6211
-
"node_modules/p-timeout": {
6212
-
"version": "3.2.0",
6213
-
"resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
6214
-
"integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
6215
-
"license": "MIT",
6216
-
"dependencies": {
6217
-
"p-finally": "^1.0.0"
6218
-
},
6219
-
"engines": {
6220
-
"node": ">=8"
6221
-
}
6222
-
},
6223
-
"node_modules/p-try": {
6224
-
"version": "2.2.0",
6225
-
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
6226
-
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
6227
-
"dev": true,
6228
-
"license": "MIT",
6229
-
"engines": {
6230
-
"node": ">=6"
6231
-
}
6232
-
},
6233
-
"node_modules/package-json-from-dist": {
6234
-
"version": "1.0.1",
6235
-
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
6236
-
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
6237
-
"dev": true,
6238
-
"license": "BlueOak-1.0.0"
6239
-
},
6240
-
"node_modules/parse-json": {
6241
-
"version": "5.2.0",
6242
-
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
6243
-
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
6244
-
"dev": true,
6245
-
"license": "MIT",
6246
-
"dependencies": {
6247
-
"@babel/code-frame": "^7.0.0",
6248
-
"error-ex": "^1.3.1",
6249
-
"json-parse-even-better-errors": "^2.3.0",
6250
-
"lines-and-columns": "^1.1.6"
6251
-
},
6252
-
"engines": {
6253
-
"node": ">=8"
6254
-
},
6255
-
"funding": {
6256
-
"url": "https://github.com/sponsors/sindresorhus"
6257
-
}
6258
-
},
6259
-
"node_modules/parseurl": {
6260
-
"version": "1.3.3",
6261
-
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
6262
-
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
6263
-
"license": "MIT",
6264
-
"engines": {
6265
-
"node": ">= 0.8"
6266
-
}
6267
-
},
6268
-
"node_modules/path-exists": {
6269
-
"version": "4.0.0",
6270
-
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
6271
-
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
6272
-
"dev": true,
6273
-
"license": "MIT",
6274
-
"engines": {
6275
-
"node": ">=8"
6276
-
}
6277
-
},
6278
-
"node_modules/path-is-absolute": {
6279
-
"version": "1.0.1",
6280
-
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
6281
-
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
6282
-
"dev": true,
6283
-
"license": "MIT",
6284
-
"engines": {
6285
-
"node": ">=0.10.0"
6286
-
}
6287
-
},
6288
-
"node_modules/path-key": {
6289
-
"version": "3.1.1",
6290
-
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
6291
-
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
6292
-
"dev": true,
6293
-
"license": "MIT",
6294
-
"engines": {
6295
-
"node": ">=8"
6296
-
}
6297
-
},
6298
-
"node_modules/path-scurry": {
6299
-
"version": "1.11.1",
6300
-
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
6301
-
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
6302
-
"dev": true,
6303
-
"license": "BlueOak-1.0.0",
6304
-
"dependencies": {
6305
-
"lru-cache": "^10.2.0",
6306
-
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
6307
-
},
6308
-
"engines": {
6309
-
"node": ">=16 || 14 >=14.18"
6310
-
},
6311
-
"funding": {
6312
-
"url": "https://github.com/sponsors/isaacs"
6313
-
}
6314
-
},
6315
-
"node_modules/path-scurry/node_modules/lru-cache": {
6316
-
"version": "10.4.3",
6317
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
6318
-
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
6319
-
"dev": true,
6320
-
"license": "ISC"
6321
-
},
6322
-
"node_modules/path-to-regexp": {
6323
-
"version": "8.2.0",
6324
-
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
6325
-
"integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
6326
-
"license": "MIT",
6327
-
"engines": {
6328
-
"node": ">=16"
6329
-
}
6330
-
},
6331
-
"node_modules/picocolors": {
6332
-
"version": "1.1.1",
6333
-
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
6334
-
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
6335
-
"dev": true,
6336
-
"license": "ISC"
6337
-
},
6338
-
"node_modules/picomatch": {
6339
-
"version": "2.3.1",
6340
-
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
6341
-
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
6342
-
"dev": true,
6343
-
"license": "MIT",
6344
-
"engines": {
6345
-
"node": ">=8.6"
6346
-
},
6347
-
"funding": {
6348
-
"url": "https://github.com/sponsors/jonschlinkert"
6349
-
}
6350
-
},
6351
-
"node_modules/pino": {
6352
-
"version": "8.21.0",
6353
-
"resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz",
6354
-
"integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==",
6355
-
"license": "MIT",
6356
-
"dependencies": {
6357
-
"atomic-sleep": "^1.0.0",
6358
-
"fast-redact": "^3.1.1",
6359
-
"on-exit-leak-free": "^2.1.0",
6360
-
"pino-abstract-transport": "^1.2.0",
6361
-
"pino-std-serializers": "^6.0.0",
6362
-
"process-warning": "^3.0.0",
6363
-
"quick-format-unescaped": "^4.0.3",
6364
-
"real-require": "^0.2.0",
6365
-
"safe-stable-stringify": "^2.3.1",
6366
-
"sonic-boom": "^3.7.0",
6367
-
"thread-stream": "^2.6.0"
6368
-
},
6369
-
"bin": {
6370
-
"pino": "bin.js"
6371
-
}
6372
-
},
6373
-
"node_modules/pino-abstract-transport": {
6374
-
"version": "1.2.0",
6375
-
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz",
6376
-
"integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==",
6377
-
"license": "MIT",
6378
-
"dependencies": {
6379
-
"readable-stream": "^4.0.0",
6380
-
"split2": "^4.0.0"
6381
-
}
6382
-
},
6383
-
"node_modules/pino-abstract-transport/node_modules/buffer": {
6384
-
"version": "6.0.3",
6385
-
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
6386
-
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
6387
-
"funding": [
6388
-
{
6389
-
"type": "github",
6390
-
"url": "https://github.com/sponsors/feross"
6391
-
},
6392
-
{
6393
-
"type": "patreon",
6394
-
"url": "https://www.patreon.com/feross"
6395
-
},
6396
-
{
6397
-
"type": "consulting",
6398
-
"url": "https://feross.org/support"
6399
-
}
6400
-
],
6401
-
"license": "MIT",
6402
-
"dependencies": {
6403
-
"base64-js": "^1.3.1",
6404
-
"ieee754": "^1.2.1"
6405
-
}
6406
-
},
6407
-
"node_modules/pino-abstract-transport/node_modules/readable-stream": {
6408
-
"version": "4.7.0",
6409
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
6410
-
"integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
6411
-
"license": "MIT",
6412
-
"dependencies": {
6413
-
"abort-controller": "^3.0.0",
6414
-
"buffer": "^6.0.3",
6415
-
"events": "^3.3.0",
6416
-
"process": "^0.11.10",
6417
-
"string_decoder": "^1.3.0"
6418
-
},
6419
-
"engines": {
6420
-
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
6421
-
}
6422
-
},
6423
-
"node_modules/pino-std-serializers": {
6424
-
"version": "6.2.2",
6425
-
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
6426
-
"integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==",
6427
-
"license": "MIT"
6428
-
},
6429
-
"node_modules/pirates": {
6430
-
"version": "4.0.7",
6431
-
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
6432
-
"integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
6433
-
"dev": true,
6434
-
"license": "MIT",
6435
-
"engines": {
6436
-
"node": ">= 6"
6437
-
}
6438
-
},
6439
-
"node_modules/pkg-dir": {
6440
-
"version": "4.2.0",
6441
-
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
6442
-
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
6443
-
"dev": true,
6444
-
"license": "MIT",
6445
-
"dependencies": {
6446
-
"find-up": "^4.0.0"
6447
-
},
6448
-
"engines": {
6449
-
"node": ">=8"
6450
-
}
6451
-
},
6452
-
"node_modules/prebuild-install": {
6453
-
"version": "7.1.3",
6454
-
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
6455
-
"integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
6456
-
"license": "MIT",
6457
-
"dependencies": {
6458
-
"detect-libc": "^2.0.0",
6459
-
"expand-template": "^2.0.3",
6460
-
"github-from-package": "0.0.0",
6461
-
"minimist": "^1.2.3",
6462
-
"mkdirp-classic": "^0.5.3",
6463
-
"napi-build-utils": "^2.0.0",
6464
-
"node-abi": "^3.3.0",
6465
-
"pump": "^3.0.0",
6466
-
"rc": "^1.2.7",
6467
-
"simple-get": "^4.0.0",
6468
-
"tar-fs": "^2.0.0",
6469
-
"tunnel-agent": "^0.6.0"
6470
-
},
6471
-
"bin": {
6472
-
"prebuild-install": "bin.js"
6473
-
},
6474
-
"engines": {
6475
-
"node": ">=10"
6476
-
}
6477
-
},
6478
-
"node_modules/pretty-format": {
6479
-
"version": "30.0.2",
6480
-
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz",
6481
-
"integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==",
6482
-
"dev": true,
6483
-
"license": "MIT",
6484
-
"dependencies": {
6485
-
"@jest/schemas": "30.0.1",
6486
-
"ansi-styles": "^5.2.0",
6487
-
"react-is": "^18.3.1"
6488
-
},
6489
-
"engines": {
6490
-
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
6491
-
}
6492
-
},
6493
-
"node_modules/pretty-format/node_modules/ansi-styles": {
6494
-
"version": "5.2.0",
6495
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
6496
-
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
6497
-
"dev": true,
6498
-
"license": "MIT",
6499
-
"engines": {
6500
-
"node": ">=10"
6501
-
},
6502
-
"funding": {
6503
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
6504
-
}
6505
-
},
6506
-
"node_modules/process": {
6507
-
"version": "0.11.10",
6508
-
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
6509
-
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
6510
-
"license": "MIT",
6511
-
"engines": {
6512
-
"node": ">= 0.6.0"
6513
-
}
6514
-
},
6515
-
"node_modules/process-warning": {
6516
-
"version": "3.0.0",
6517
-
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
6518
-
"integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
6519
-
"license": "MIT"
6520
-
},
6521
-
"node_modules/proxy-addr": {
6522
-
"version": "2.0.7",
6523
-
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
6524
-
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
6525
-
"license": "MIT",
6526
-
"dependencies": {
6527
-
"forwarded": "0.2.0",
6528
-
"ipaddr.js": "1.9.1"
6529
-
},
6530
-
"engines": {
6531
-
"node": ">= 0.10"
6532
-
}
6533
-
},
6534
-
"node_modules/pump": {
6535
-
"version": "3.0.3",
6536
-
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
6537
-
"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
6538
-
"license": "MIT",
6539
-
"dependencies": {
6540
-
"end-of-stream": "^1.1.0",
6541
-
"once": "^1.3.1"
6542
-
}
6543
-
},
6544
-
"node_modules/pure-rand": {
6545
-
"version": "7.0.1",
6546
-
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz",
6547
-
"integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==",
6548
-
"dev": true,
6549
-
"funding": [
6550
-
{
6551
-
"type": "individual",
6552
-
"url": "https://github.com/sponsors/dubzzz"
6553
-
},
6554
-
{
6555
-
"type": "opencollective",
6556
-
"url": "https://opencollective.com/fast-check"
6557
-
}
6558
-
],
6559
-
"license": "MIT"
6560
-
},
6561
-
"node_modules/qs": {
6562
-
"version": "6.14.0",
6563
-
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
6564
-
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
6565
-
"license": "BSD-3-Clause",
6566
-
"dependencies": {
6567
-
"side-channel": "^1.1.0"
6568
-
},
6569
-
"engines": {
6570
-
"node": ">=0.6"
6571
-
},
6572
-
"funding": {
6573
-
"url": "https://github.com/sponsors/ljharb"
6574
-
}
6575
-
},
6576
-
"node_modules/quick-format-unescaped": {
6577
-
"version": "4.0.4",
6578
-
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
6579
-
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
6580
-
"license": "MIT"
6581
-
},
6582
-
"node_modules/random-bytes": {
6583
-
"version": "1.0.0",
6584
-
"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
6585
-
"integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
6586
-
"license": "MIT",
6587
-
"engines": {
6588
-
"node": ">= 0.8"
6589
-
}
6590
-
},
6591
-
"node_modules/range-parser": {
6592
-
"version": "1.2.1",
6593
-
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
6594
-
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
6595
-
"license": "MIT",
6596
-
"engines": {
6597
-
"node": ">= 0.6"
6598
-
}
6599
-
},
6600
-
"node_modules/rate-limiter-flexible": {
6601
-
"version": "2.4.2",
6602
-
"resolved": "https://registry.npmjs.org/rate-limiter-flexible/-/rate-limiter-flexible-2.4.2.tgz",
6603
-
"integrity": "sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==",
6604
-
"license": "ISC"
6605
-
},
6606
-
"node_modules/raw-body": {
6607
-
"version": "3.0.0",
6608
-
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
6609
-
"integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
6610
-
"license": "MIT",
6611
-
"dependencies": {
6612
-
"bytes": "3.1.2",
6613
-
"http-errors": "2.0.0",
6614
-
"iconv-lite": "0.6.3",
6615
-
"unpipe": "1.0.0"
6616
-
},
6617
-
"engines": {
6618
-
"node": ">= 0.8"
6619
-
}
6620
-
},
6621
-
"node_modules/rc": {
6622
-
"version": "1.2.8",
6623
-
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
6624
-
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
6625
-
"license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
6626
-
"dependencies": {
6627
-
"deep-extend": "^0.6.0",
6628
-
"ini": "~1.3.0",
6629
-
"minimist": "^1.2.0",
6630
-
"strip-json-comments": "~2.0.1"
6631
-
},
6632
-
"bin": {
6633
-
"rc": "cli.js"
6634
-
}
6635
-
},
6636
-
"node_modules/react-is": {
6637
-
"version": "18.3.1",
6638
-
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
6639
-
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
6640
-
"dev": true,
6641
-
"license": "MIT"
6642
-
},
6643
-
"node_modules/readable-stream": {
6644
-
"version": "3.6.2",
6645
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
6646
-
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
6647
-
"license": "MIT",
6648
-
"dependencies": {
6649
-
"inherits": "^2.0.3",
6650
-
"string_decoder": "^1.1.1",
6651
-
"util-deprecate": "^1.0.1"
6652
-
},
6653
-
"engines": {
6654
-
"node": ">= 6"
6655
-
}
6656
-
},
6657
-
"node_modules/real-require": {
6658
-
"version": "0.2.0",
6659
-
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
6660
-
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
6661
-
"license": "MIT",
6662
-
"engines": {
6663
-
"node": ">= 12.13.0"
6664
-
}
6665
-
},
6666
-
"node_modules/require-directory": {
6667
-
"version": "2.1.1",
6668
-
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
6669
-
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
6670
-
"dev": true,
6671
-
"license": "MIT",
6672
-
"engines": {
6673
-
"node": ">=0.10.0"
6674
-
}
6675
-
},
6676
-
"node_modules/resolve-cwd": {
6677
-
"version": "3.0.0",
6678
-
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
6679
-
"integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
6680
-
"dev": true,
6681
-
"license": "MIT",
6682
-
"dependencies": {
6683
-
"resolve-from": "^5.0.0"
6684
-
},
6685
-
"engines": {
6686
-
"node": ">=8"
6687
-
}
6688
-
},
6689
-
"node_modules/resolve-from": {
6690
-
"version": "5.0.0",
6691
-
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
6692
-
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
6693
-
"dev": true,
6694
-
"license": "MIT",
6695
-
"engines": {
6696
-
"node": ">=8"
6697
-
}
6698
-
},
6699
-
"node_modules/resolve-pkg-maps": {
6700
-
"version": "1.0.0",
6701
-
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
6702
-
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
6703
-
"license": "MIT",
6704
-
"funding": {
6705
-
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
6706
-
}
6707
-
},
6708
-
"node_modules/router": {
6709
-
"version": "2.2.0",
6710
-
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
6711
-
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
6712
-
"license": "MIT",
6713
-
"dependencies": {
6714
-
"debug": "^4.4.0",
6715
-
"depd": "^2.0.0",
6716
-
"is-promise": "^4.0.0",
6717
-
"parseurl": "^1.3.3",
6718
-
"path-to-regexp": "^8.0.0"
6719
-
},
6720
-
"engines": {
6721
-
"node": ">= 18"
6722
-
}
6723
-
},
6724
-
"node_modules/rxjs": {
6725
-
"version": "7.8.2",
6726
-
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
6727
-
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
6728
-
"dev": true,
6729
-
"license": "Apache-2.0",
6730
-
"dependencies": {
6731
-
"tslib": "^2.1.0"
6732
-
}
6733
-
},
6734
-
"node_modules/safe-buffer": {
6735
-
"version": "5.2.1",
6736
-
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
6737
-
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
6738
-
"funding": [
6739
-
{
6740
-
"type": "github",
6741
-
"url": "https://github.com/sponsors/feross"
6742
-
},
6743
-
{
6744
-
"type": "patreon",
6745
-
"url": "https://www.patreon.com/feross"
6746
-
},
6747
-
{
6748
-
"type": "consulting",
6749
-
"url": "https://feross.org/support"
6750
-
}
6751
-
],
6752
-
"license": "MIT"
6753
-
},
6754
-
"node_modules/safe-stable-stringify": {
6755
-
"version": "2.5.0",
6756
-
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
6757
-
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
6758
-
"license": "MIT",
6759
-
"engines": {
6760
-
"node": ">=10"
6761
-
}
6762
-
},
6763
-
"node_modules/safer-buffer": {
6764
-
"version": "2.1.2",
6765
-
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
6766
-
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
6767
-
"license": "MIT"
6768
-
},
6769
-
"node_modules/semver": {
6770
-
"version": "7.7.2",
6771
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
6772
-
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
6773
-
"license": "ISC",
6774
-
"bin": {
6775
-
"semver": "bin/semver.js"
6776
-
},
6777
-
"engines": {
6778
-
"node": ">=10"
6779
-
}
6780
-
},
6781
-
"node_modules/send": {
6782
-
"version": "1.2.0",
6783
-
"resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
6784
-
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
6785
-
"license": "MIT",
6786
-
"dependencies": {
6787
-
"debug": "^4.3.5",
6788
-
"encodeurl": "^2.0.0",
6789
-
"escape-html": "^1.0.3",
6790
-
"etag": "^1.8.1",
6791
-
"fresh": "^2.0.0",
6792
-
"http-errors": "^2.0.0",
6793
-
"mime-types": "^3.0.1",
6794
-
"ms": "^2.1.3",
6795
-
"on-finished": "^2.4.1",
6796
-
"range-parser": "^1.2.1",
6797
-
"statuses": "^2.0.1"
6798
-
},
6799
-
"engines": {
6800
-
"node": ">= 18"
6801
-
}
6802
-
},
6803
-
"node_modules/serve-static": {
6804
-
"version": "2.2.0",
6805
-
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
6806
-
"integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
6807
-
"license": "MIT",
6808
-
"dependencies": {
6809
-
"encodeurl": "^2.0.0",
6810
-
"escape-html": "^1.0.3",
6811
-
"parseurl": "^1.3.3",
6812
-
"send": "^1.2.0"
6813
-
},
6814
-
"engines": {
6815
-
"node": ">= 18"
6816
-
}
6817
-
},
6818
-
"node_modules/setprototypeof": {
6819
-
"version": "1.2.0",
6820
-
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
6821
-
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
6822
-
"license": "ISC"
6823
-
},
6824
-
"node_modules/shebang-command": {
6825
-
"version": "2.0.0",
6826
-
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
6827
-
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
6828
-
"dev": true,
6829
-
"license": "MIT",
6830
-
"dependencies": {
6831
-
"shebang-regex": "^3.0.0"
6832
-
},
6833
-
"engines": {
6834
-
"node": ">=8"
6835
-
}
6836
-
},
6837
-
"node_modules/shebang-regex": {
6838
-
"version": "3.0.0",
6839
-
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
6840
-
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
6841
-
"dev": true,
6842
-
"license": "MIT",
6843
-
"engines": {
6844
-
"node": ">=8"
6845
-
}
6846
-
},
6847
-
"node_modules/shell-quote": {
6848
-
"version": "1.8.3",
6849
-
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
6850
-
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
6851
-
"dev": true,
6852
-
"license": "MIT",
6853
-
"engines": {
6854
-
"node": ">= 0.4"
6855
-
},
6856
-
"funding": {
6857
-
"url": "https://github.com/sponsors/ljharb"
6858
-
}
6859
-
},
6860
-
"node_modules/side-channel": {
6861
-
"version": "1.1.0",
6862
-
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
6863
-
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
6864
-
"license": "MIT",
6865
-
"dependencies": {
6866
-
"es-errors": "^1.3.0",
6867
-
"object-inspect": "^1.13.3",
6868
-
"side-channel-list": "^1.0.0",
6869
-
"side-channel-map": "^1.0.1",
6870
-
"side-channel-weakmap": "^1.0.2"
6871
-
},
6872
-
"engines": {
6873
-
"node": ">= 0.4"
6874
-
},
6875
-
"funding": {
6876
-
"url": "https://github.com/sponsors/ljharb"
6877
-
}
6878
-
},
6879
-
"node_modules/side-channel-list": {
6880
-
"version": "1.0.0",
6881
-
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
6882
-
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
6883
-
"license": "MIT",
6884
-
"dependencies": {
6885
-
"es-errors": "^1.3.0",
6886
-
"object-inspect": "^1.13.3"
6887
-
},
6888
-
"engines": {
6889
-
"node": ">= 0.4"
6890
-
},
6891
-
"funding": {
6892
-
"url": "https://github.com/sponsors/ljharb"
6893
-
}
6894
-
},
6895
-
"node_modules/side-channel-map": {
6896
-
"version": "1.0.1",
6897
-
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
6898
-
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
6899
-
"license": "MIT",
6900
-
"dependencies": {
6901
-
"call-bound": "^1.0.2",
6902
-
"es-errors": "^1.3.0",
6903
-
"get-intrinsic": "^1.2.5",
6904
-
"object-inspect": "^1.13.3"
6905
-
},
6906
-
"engines": {
6907
-
"node": ">= 0.4"
6908
-
},
6909
-
"funding": {
6910
-
"url": "https://github.com/sponsors/ljharb"
6911
-
}
6912
-
},
6913
-
"node_modules/side-channel-weakmap": {
6914
-
"version": "1.0.2",
6915
-
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
6916
-
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
6917
-
"license": "MIT",
6918
-
"dependencies": {
6919
-
"call-bound": "^1.0.2",
6920
-
"es-errors": "^1.3.0",
6921
-
"get-intrinsic": "^1.2.5",
6922
-
"object-inspect": "^1.13.3",
6923
-
"side-channel-map": "^1.0.1"
6924
-
},
6925
-
"engines": {
6926
-
"node": ">= 0.4"
6927
-
},
6928
-
"funding": {
6929
-
"url": "https://github.com/sponsors/ljharb"
6930
-
}
6931
-
},
6932
-
"node_modules/signal-exit": {
6933
-
"version": "4.1.0",
6934
-
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
6935
-
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
6936
-
"dev": true,
6937
-
"license": "ISC",
6938
-
"engines": {
6939
-
"node": ">=14"
6940
-
},
6941
-
"funding": {
6942
-
"url": "https://github.com/sponsors/isaacs"
6943
-
}
6944
-
},
6945
-
"node_modules/simple-concat": {
6946
-
"version": "1.0.1",
6947
-
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
6948
-
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
6949
-
"funding": [
6950
-
{
6951
-
"type": "github",
6952
-
"url": "https://github.com/sponsors/feross"
6953
-
},
6954
-
{
6955
-
"type": "patreon",
6956
-
"url": "https://www.patreon.com/feross"
6957
-
},
6958
-
{
6959
-
"type": "consulting",
6960
-
"url": "https://feross.org/support"
6961
-
}
6962
-
],
6963
-
"license": "MIT"
6964
-
},
6965
-
"node_modules/simple-get": {
6966
-
"version": "4.0.1",
6967
-
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
6968
-
"integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
6969
-
"funding": [
6970
-
{
6971
-
"type": "github",
6972
-
"url": "https://github.com/sponsors/feross"
6973
-
},
6974
-
{
6975
-
"type": "patreon",
6976
-
"url": "https://www.patreon.com/feross"
6977
-
},
6978
-
{
6979
-
"type": "consulting",
6980
-
"url": "https://feross.org/support"
6981
-
}
6982
-
],
6983
-
"license": "MIT",
6984
-
"dependencies": {
6985
-
"decompress-response": "^6.0.0",
6986
-
"once": "^1.3.1",
6987
-
"simple-concat": "^1.0.0"
6988
-
}
6989
-
},
6990
-
"node_modules/slash": {
6991
-
"version": "3.0.0",
6992
-
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
6993
-
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
6994
-
"dev": true,
6995
-
"license": "MIT",
6996
-
"engines": {
6997
-
"node": ">=8"
6998
-
}
6999
-
},
7000
-
"node_modules/sonic-boom": {
7001
-
"version": "3.8.1",
7002
-
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz",
7003
-
"integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==",
7004
-
"license": "MIT",
7005
-
"dependencies": {
7006
-
"atomic-sleep": "^1.0.0"
7007
-
}
7008
-
},
7009
-
"node_modules/source-map": {
7010
-
"version": "0.6.1",
7011
-
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
7012
-
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
7013
-
"dev": true,
7014
-
"license": "BSD-3-Clause",
7015
-
"engines": {
7016
-
"node": ">=0.10.0"
7017
-
}
7018
-
},
7019
-
"node_modules/source-map-support": {
7020
-
"version": "0.5.13",
7021
-
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
7022
-
"integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
7023
-
"dev": true,
7024
-
"license": "MIT",
7025
-
"dependencies": {
7026
-
"buffer-from": "^1.0.0",
7027
-
"source-map": "^0.6.0"
7028
-
}
7029
-
},
7030
-
"node_modules/split2": {
7031
-
"version": "4.2.0",
7032
-
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
7033
-
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
7034
-
"license": "ISC",
7035
-
"engines": {
7036
-
"node": ">= 10.x"
7037
-
}
7038
-
},
7039
-
"node_modules/sprintf-js": {
7040
-
"version": "1.0.3",
7041
-
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
7042
-
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
7043
-
"dev": true,
7044
-
"license": "BSD-3-Clause"
7045
-
},
7046
-
"node_modules/stack-utils": {
7047
-
"version": "2.0.6",
7048
-
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
7049
-
"integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
7050
-
"dev": true,
7051
-
"license": "MIT",
7052
-
"dependencies": {
7053
-
"escape-string-regexp": "^2.0.0"
7054
-
},
7055
-
"engines": {
7056
-
"node": ">=10"
7057
-
}
7058
-
},
7059
-
"node_modules/statuses": {
7060
-
"version": "2.0.2",
7061
-
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
7062
-
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
7063
-
"license": "MIT",
7064
-
"engines": {
7065
-
"node": ">= 0.8"
7066
-
}
7067
-
},
7068
-
"node_modules/string_decoder": {
7069
-
"version": "1.3.0",
7070
-
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
7071
-
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
7072
-
"license": "MIT",
7073
-
"dependencies": {
7074
-
"safe-buffer": "~5.2.0"
7075
-
}
7076
-
},
7077
-
"node_modules/string-length": {
7078
-
"version": "4.0.2",
7079
-
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
7080
-
"integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
7081
-
"dev": true,
7082
-
"license": "MIT",
7083
-
"dependencies": {
7084
-
"char-regex": "^1.0.2",
7085
-
"strip-ansi": "^6.0.0"
7086
-
},
7087
-
"engines": {
7088
-
"node": ">=10"
7089
-
}
7090
-
},
7091
-
"node_modules/string-width": {
7092
-
"version": "4.2.3",
7093
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
7094
-
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
7095
-
"dev": true,
7096
-
"license": "MIT",
7097
-
"dependencies": {
7098
-
"emoji-regex": "^8.0.0",
7099
-
"is-fullwidth-code-point": "^3.0.0",
7100
-
"strip-ansi": "^6.0.1"
7101
-
},
7102
-
"engines": {
7103
-
"node": ">=8"
7104
-
}
7105
-
},
7106
-
"node_modules/string-width-cjs": {
7107
-
"name": "string-width",
7108
-
"version": "4.2.3",
7109
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
7110
-
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
7111
-
"dev": true,
7112
-
"license": "MIT",
7113
-
"dependencies": {
7114
-
"emoji-regex": "^8.0.0",
7115
-
"is-fullwidth-code-point": "^3.0.0",
7116
-
"strip-ansi": "^6.0.1"
7117
-
},
7118
-
"engines": {
7119
-
"node": ">=8"
7120
-
}
7121
-
},
7122
-
"node_modules/strip-ansi": {
7123
-
"version": "6.0.1",
7124
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
7125
-
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
7126
-
"dev": true,
7127
-
"license": "MIT",
7128
-
"dependencies": {
7129
-
"ansi-regex": "^5.0.1"
7130
-
},
7131
-
"engines": {
7132
-
"node": ">=8"
7133
-
}
7134
-
},
7135
-
"node_modules/strip-ansi-cjs": {
7136
-
"name": "strip-ansi",
7137
-
"version": "6.0.1",
7138
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
7139
-
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
7140
-
"dev": true,
7141
-
"license": "MIT",
7142
-
"dependencies": {
7143
-
"ansi-regex": "^5.0.1"
7144
-
},
7145
-
"engines": {
7146
-
"node": ">=8"
7147
-
}
7148
-
},
7149
-
"node_modules/strip-bom": {
7150
-
"version": "4.0.0",
7151
-
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
7152
-
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
7153
-
"dev": true,
7154
-
"license": "MIT",
7155
-
"engines": {
7156
-
"node": ">=8"
7157
-
}
7158
-
},
7159
-
"node_modules/strip-final-newline": {
7160
-
"version": "2.0.0",
7161
-
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
7162
-
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
7163
-
"dev": true,
7164
-
"license": "MIT",
7165
-
"engines": {
7166
-
"node": ">=6"
7167
-
}
7168
-
},
7169
-
"node_modules/strip-json-comments": {
7170
-
"version": "2.0.1",
7171
-
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
7172
-
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
7173
-
"license": "MIT",
7174
-
"engines": {
7175
-
"node": ">=0.10.0"
7176
-
}
7177
-
},
7178
-
"node_modules/superagent": {
7179
-
"version": "10.2.1",
7180
-
"resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.1.tgz",
7181
-
"integrity": "sha512-O+PCv11lgTNJUzy49teNAWLjBZfc+A1enOwTpLlH6/rsvKcTwcdTT8m9azGkVqM7HBl5jpyZ7KTPhHweokBcdg==",
7182
-
"dev": true,
7183
-
"license": "MIT",
7184
-
"dependencies": {
7185
-
"component-emitter": "^1.3.0",
7186
-
"cookiejar": "^2.1.4",
7187
-
"debug": "^4.3.4",
7188
-
"fast-safe-stringify": "^2.1.1",
7189
-
"form-data": "^4.0.0",
7190
-
"formidable": "^3.5.4",
7191
-
"methods": "^1.1.2",
7192
-
"mime": "2.6.0",
7193
-
"qs": "^6.11.0"
7194
-
},
7195
-
"engines": {
7196
-
"node": ">=14.18.0"
7197
-
}
7198
-
},
7199
-
"node_modules/superagent/node_modules/mime": {
7200
-
"version": "2.6.0",
7201
-
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
7202
-
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
7203
-
"dev": true,
7204
-
"license": "MIT",
7205
-
"bin": {
7206
-
"mime": "cli.js"
7207
-
},
7208
-
"engines": {
7209
-
"node": ">=4.0.0"
7210
-
}
7211
-
},
7212
-
"node_modules/supertest": {
7213
-
"version": "7.1.1",
7214
-
"resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.1.tgz",
7215
-
"integrity": "sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==",
7216
-
"dev": true,
7217
-
"license": "MIT",
7218
-
"dependencies": {
7219
-
"methods": "^1.1.2",
7220
-
"superagent": "^10.2.1"
7221
-
},
7222
-
"engines": {
7223
-
"node": ">=14.18.0"
7224
-
}
7225
-
},
7226
-
"node_modules/supports-color": {
7227
-
"version": "7.2.0",
7228
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
7229
-
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
7230
-
"license": "MIT",
7231
-
"dependencies": {
7232
-
"has-flag": "^4.0.0"
7233
-
},
7234
-
"engines": {
7235
-
"node": ">=8"
7236
-
}
7237
-
},
7238
-
"node_modules/synckit": {
7239
-
"version": "0.11.8",
7240
-
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz",
7241
-
"integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==",
7242
-
"dev": true,
7243
-
"license": "MIT",
7244
-
"dependencies": {
7245
-
"@pkgr/core": "^0.2.4"
7246
-
},
7247
-
"engines": {
7248
-
"node": "^14.18.0 || >=16.0.0"
7249
-
},
7250
-
"funding": {
7251
-
"url": "https://opencollective.com/synckit"
7252
-
}
7253
-
},
7254
-
"node_modules/tar-fs": {
7255
-
"version": "2.1.3",
7256
-
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
7257
-
"integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
7258
-
"license": "MIT",
7259
-
"dependencies": {
7260
-
"chownr": "^1.1.1",
7261
-
"mkdirp-classic": "^0.5.2",
7262
-
"pump": "^3.0.0",
7263
-
"tar-stream": "^2.1.4"
7264
-
}
7265
-
},
7266
-
"node_modules/tar-stream": {
7267
-
"version": "2.2.0",
7268
-
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
7269
-
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
7270
-
"license": "MIT",
7271
-
"dependencies": {
7272
-
"bl": "^4.0.3",
7273
-
"end-of-stream": "^1.4.1",
7274
-
"fs-constants": "^1.0.0",
7275
-
"inherits": "^2.0.3",
7276
-
"readable-stream": "^3.1.1"
7277
-
},
7278
-
"engines": {
7279
-
"node": ">=6"
7280
-
}
7281
-
},
7282
-
"node_modules/test-exclude": {
7283
-
"version": "6.0.0",
7284
-
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
7285
-
"integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
7286
-
"dev": true,
7287
-
"license": "ISC",
7288
-
"dependencies": {
7289
-
"@istanbuljs/schema": "^0.1.2",
7290
-
"glob": "^7.1.4",
7291
-
"minimatch": "^3.0.4"
7292
-
},
7293
-
"engines": {
7294
-
"node": ">=8"
7295
-
}
7296
-
},
7297
-
"node_modules/test-exclude/node_modules/glob": {
7298
-
"version": "7.2.3",
7299
-
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
7300
-
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
7301
-
"deprecated": "Glob versions prior to v9 are no longer supported",
7302
-
"dev": true,
7303
-
"license": "ISC",
7304
-
"dependencies": {
7305
-
"fs.realpath": "^1.0.0",
7306
-
"inflight": "^1.0.4",
7307
-
"inherits": "2",
7308
-
"minimatch": "^3.1.1",
7309
-
"once": "^1.3.0",
7310
-
"path-is-absolute": "^1.0.0"
7311
-
},
7312
-
"engines": {
7313
-
"node": "*"
7314
-
},
7315
-
"funding": {
7316
-
"url": "https://github.com/sponsors/isaacs"
7317
-
}
7318
-
},
7319
-
"node_modules/thread-stream": {
7320
-
"version": "2.7.0",
7321
-
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz",
7322
-
"integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==",
7323
-
"license": "MIT",
7324
-
"dependencies": {
7325
-
"real-require": "^0.2.0"
7326
-
}
7327
-
},
7328
-
"node_modules/tlds": {
7329
-
"version": "1.259.0",
7330
-
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.259.0.tgz",
7331
-
"integrity": "sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==",
7332
-
"license": "MIT",
7333
-
"bin": {
7334
-
"tlds": "bin.js"
7335
-
}
7336
-
},
7337
-
"node_modules/tmpl": {
7338
-
"version": "1.0.5",
7339
-
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
7340
-
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
7341
-
"dev": true,
7342
-
"license": "BSD-3-Clause"
7343
-
},
7344
-
"node_modules/to-regex-range": {
7345
-
"version": "5.0.1",
7346
-
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
7347
-
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
7348
-
"dev": true,
7349
-
"license": "MIT",
7350
-
"dependencies": {
7351
-
"is-number": "^7.0.0"
7352
-
},
7353
-
"engines": {
7354
-
"node": ">=8.0"
7355
-
}
7356
-
},
7357
-
"node_modules/toidentifier": {
7358
-
"version": "1.0.1",
7359
-
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
7360
-
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
7361
-
"license": "MIT",
7362
-
"engines": {
7363
-
"node": ">=0.6"
7364
-
}
7365
-
},
7366
-
"node_modules/tree-kill": {
7367
-
"version": "1.2.2",
7368
-
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
7369
-
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
7370
-
"dev": true,
7371
-
"license": "MIT",
7372
-
"bin": {
7373
-
"tree-kill": "cli.js"
7374
-
}
7375
-
},
7376
-
"node_modules/ts-jest": {
7377
-
"version": "29.4.0",
7378
-
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz",
7379
-
"integrity": "sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==",
7380
-
"dev": true,
7381
-
"license": "MIT",
7382
-
"dependencies": {
7383
-
"bs-logger": "^0.2.6",
7384
-
"ejs": "^3.1.10",
7385
-
"fast-json-stable-stringify": "^2.1.0",
7386
-
"json5": "^2.2.3",
7387
-
"lodash.memoize": "^4.1.2",
7388
-
"make-error": "^1.3.6",
7389
-
"semver": "^7.7.2",
7390
-
"type-fest": "^4.41.0",
7391
-
"yargs-parser": "^21.1.1"
7392
-
},
7393
-
"bin": {
7394
-
"ts-jest": "cli.js"
7395
-
},
7396
-
"engines": {
7397
-
"node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"
7398
-
},
7399
-
"peerDependencies": {
7400
-
"@babel/core": ">=7.0.0-beta.0 <8",
7401
-
"@jest/transform": "^29.0.0 || ^30.0.0",
7402
-
"@jest/types": "^29.0.0 || ^30.0.0",
7403
-
"babel-jest": "^29.0.0 || ^30.0.0",
7404
-
"jest": "^29.0.0 || ^30.0.0",
7405
-
"jest-util": "^29.0.0 || ^30.0.0",
7406
-
"typescript": ">=4.3 <6"
7407
-
},
7408
-
"peerDependenciesMeta": {
7409
-
"@babel/core": {
7410
-
"optional": true
7411
-
},
7412
-
"@jest/transform": {
7413
-
"optional": true
7414
-
},
7415
-
"@jest/types": {
7416
-
"optional": true
7417
-
},
7418
-
"babel-jest": {
7419
-
"optional": true
7420
-
},
7421
-
"esbuild": {
7422
-
"optional": true
7423
-
},
7424
-
"jest-util": {
7425
-
"optional": true
7426
-
}
7427
-
}
7428
-
},
7429
-
"node_modules/ts-jest/node_modules/type-fest": {
7430
-
"version": "4.41.0",
7431
-
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
7432
-
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
7433
-
"dev": true,
7434
-
"license": "(MIT OR CC0-1.0)",
7435
-
"engines": {
7436
-
"node": ">=16"
7437
-
},
7438
-
"funding": {
7439
-
"url": "https://github.com/sponsors/sindresorhus"
7440
-
}
7441
-
},
7442
-
"node_modules/tslib": {
7443
-
"version": "2.8.1",
7444
-
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
7445
-
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
7446
-
"dev": true,
7447
-
"license": "0BSD"
7448
-
},
7449
-
"node_modules/tsx": {
7450
-
"version": "4.20.3",
7451
-
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz",
7452
-
"integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==",
7453
-
"license": "MIT",
7454
-
"dependencies": {
7455
-
"esbuild": "~0.25.0",
7456
-
"get-tsconfig": "^4.7.5"
7457
-
},
7458
-
"bin": {
7459
-
"tsx": "dist/cli.mjs"
7460
-
},
7461
-
"engines": {
7462
-
"node": ">=18.0.0"
7463
-
},
7464
-
"optionalDependencies": {
7465
-
"fsevents": "~2.3.3"
7466
-
}
7467
-
},
7468
-
"node_modules/tunnel-agent": {
7469
-
"version": "0.6.0",
7470
-
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
7471
-
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
7472
-
"license": "Apache-2.0",
7473
-
"dependencies": {
7474
-
"safe-buffer": "^5.0.1"
7475
-
},
7476
-
"engines": {
7477
-
"node": "*"
7478
-
}
7479
-
},
7480
-
"node_modules/type-detect": {
7481
-
"version": "4.0.8",
7482
-
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
7483
-
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
7484
-
"dev": true,
7485
-
"license": "MIT",
7486
-
"engines": {
7487
-
"node": ">=4"
7488
-
}
7489
-
},
7490
-
"node_modules/type-fest": {
7491
-
"version": "0.21.3",
7492
-
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
7493
-
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
7494
-
"dev": true,
7495
-
"license": "(MIT OR CC0-1.0)",
7496
-
"engines": {
7497
-
"node": ">=10"
7498
-
},
7499
-
"funding": {
7500
-
"url": "https://github.com/sponsors/sindresorhus"
7501
-
}
7502
-
},
7503
-
"node_modules/type-is": {
7504
-
"version": "2.0.1",
7505
-
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
7506
-
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
7507
-
"license": "MIT",
7508
-
"dependencies": {
7509
-
"content-type": "^1.0.5",
7510
-
"media-typer": "^1.1.0",
7511
-
"mime-types": "^3.0.0"
7512
-
},
7513
-
"engines": {
7514
-
"node": ">= 0.6"
7515
-
}
7516
-
},
7517
-
"node_modules/typescript": {
7518
-
"version": "5.8.3",
7519
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
7520
-
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
7521
-
"license": "Apache-2.0",
7522
-
"bin": {
7523
-
"tsc": "bin/tsc",
7524
-
"tsserver": "bin/tsserver"
7525
-
},
7526
-
"engines": {
7527
-
"node": ">=14.17"
7528
-
}
7529
-
},
7530
-
"node_modules/uid-safe": {
7531
-
"version": "2.1.5",
7532
-
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
7533
-
"integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
7534
-
"license": "MIT",
7535
-
"dependencies": {
7536
-
"random-bytes": "~1.0.0"
7537
-
},
7538
-
"engines": {
7539
-
"node": ">= 0.8"
7540
-
}
7541
-
},
7542
-
"node_modules/uint8arrays": {
7543
-
"version": "3.0.0",
7544
-
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz",
7545
-
"integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==",
7546
-
"license": "MIT",
7547
-
"dependencies": {
7548
-
"multiformats": "^9.4.2"
7549
-
}
7550
-
},
7551
-
"node_modules/uint8arrays/node_modules/multiformats": {
7552
-
"version": "9.9.0",
7553
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
7554
-
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
7555
-
"license": "(Apache-2.0 AND MIT)"
7556
-
},
7557
-
"node_modules/undici-types": {
7558
-
"version": "7.8.0",
7559
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
7560
-
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
7561
-
"license": "MIT"
7562
-
},
7563
-
"node_modules/unpipe": {
7564
-
"version": "1.0.0",
7565
-
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
7566
-
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
7567
-
"license": "MIT",
7568
-
"engines": {
7569
-
"node": ">= 0.8"
7570
-
}
7571
-
},
7572
-
"node_modules/unrs-resolver": {
7573
-
"version": "1.9.0",
7574
-
"resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.0.tgz",
7575
-
"integrity": "sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg==",
7576
-
"dev": true,
7577
-
"hasInstallScript": true,
7578
-
"license": "MIT",
7579
-
"dependencies": {
7580
-
"napi-postinstall": "^0.2.2"
7581
-
},
7582
-
"funding": {
7583
-
"url": "https://opencollective.com/unrs-resolver"
7584
-
},
7585
-
"optionalDependencies": {
7586
-
"@unrs/resolver-binding-android-arm-eabi": "1.9.0",
7587
-
"@unrs/resolver-binding-android-arm64": "1.9.0",
7588
-
"@unrs/resolver-binding-darwin-arm64": "1.9.0",
7589
-
"@unrs/resolver-binding-darwin-x64": "1.9.0",
7590
-
"@unrs/resolver-binding-freebsd-x64": "1.9.0",
7591
-
"@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.0",
7592
-
"@unrs/resolver-binding-linux-arm-musleabihf": "1.9.0",
7593
-
"@unrs/resolver-binding-linux-arm64-gnu": "1.9.0",
7594
-
"@unrs/resolver-binding-linux-arm64-musl": "1.9.0",
7595
-
"@unrs/resolver-binding-linux-ppc64-gnu": "1.9.0",
7596
-
"@unrs/resolver-binding-linux-riscv64-gnu": "1.9.0",
7597
-
"@unrs/resolver-binding-linux-riscv64-musl": "1.9.0",
7598
-
"@unrs/resolver-binding-linux-s390x-gnu": "1.9.0",
7599
-
"@unrs/resolver-binding-linux-x64-gnu": "1.9.0",
7600
-
"@unrs/resolver-binding-linux-x64-musl": "1.9.0",
7601
-
"@unrs/resolver-binding-wasm32-wasi": "1.9.0",
7602
-
"@unrs/resolver-binding-win32-arm64-msvc": "1.9.0",
7603
-
"@unrs/resolver-binding-win32-ia32-msvc": "1.9.0",
7604
-
"@unrs/resolver-binding-win32-x64-msvc": "1.9.0"
7605
-
}
7606
-
},
7607
-
"node_modules/update-browserslist-db": {
7608
-
"version": "1.1.3",
7609
-
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
7610
-
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
7611
-
"dev": true,
7612
-
"funding": [
7613
-
{
7614
-
"type": "opencollective",
7615
-
"url": "https://opencollective.com/browserslist"
7616
-
},
7617
-
{
7618
-
"type": "tidelift",
7619
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
7620
-
},
7621
-
{
7622
-
"type": "github",
7623
-
"url": "https://github.com/sponsors/ai"
7624
-
}
7625
-
],
7626
-
"license": "MIT",
7627
-
"dependencies": {
7628
-
"escalade": "^3.2.0",
7629
-
"picocolors": "^1.1.1"
7630
-
},
7631
-
"bin": {
7632
-
"update-browserslist-db": "cli.js"
7633
-
},
7634
-
"peerDependencies": {
7635
-
"browserslist": ">= 4.21.0"
7636
-
}
7637
-
},
7638
-
"node_modules/util-deprecate": {
7639
-
"version": "1.0.2",
7640
-
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7641
-
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
7642
-
"license": "MIT"
7643
-
},
7644
-
"node_modules/utils-merge": {
7645
-
"version": "1.0.1",
7646
-
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
7647
-
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
7648
-
"license": "MIT",
7649
-
"engines": {
7650
-
"node": ">= 0.4.0"
7651
-
}
7652
-
},
7653
-
"node_modules/v8-to-istanbul": {
7654
-
"version": "9.3.0",
7655
-
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
7656
-
"integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
7657
-
"dev": true,
7658
-
"license": "ISC",
7659
-
"dependencies": {
7660
-
"@jridgewell/trace-mapping": "^0.3.12",
7661
-
"@types/istanbul-lib-coverage": "^2.0.1",
7662
-
"convert-source-map": "^2.0.0"
7663
-
},
7664
-
"engines": {
7665
-
"node": ">=10.12.0"
7666
-
}
7667
-
},
7668
-
"node_modules/varint": {
7669
-
"version": "6.0.0",
7670
-
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
7671
-
"integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
7672
-
"license": "MIT"
7673
-
},
7674
-
"node_modules/vary": {
7675
-
"version": "1.1.2",
7676
-
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
7677
-
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
7678
-
"license": "MIT",
7679
-
"engines": {
7680
-
"node": ">= 0.8"
7681
-
}
7682
-
},
7683
-
"node_modules/walker": {
7684
-
"version": "1.0.8",
7685
-
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
7686
-
"integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
7687
-
"dev": true,
7688
-
"license": "Apache-2.0",
7689
-
"dependencies": {
7690
-
"makeerror": "1.0.12"
7691
-
}
7692
-
},
7693
-
"node_modules/which": {
7694
-
"version": "2.0.2",
7695
-
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
7696
-
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
7697
-
"dev": true,
7698
-
"license": "ISC",
7699
-
"dependencies": {
7700
-
"isexe": "^2.0.0"
7701
-
},
7702
-
"bin": {
7703
-
"node-which": "bin/node-which"
7704
-
},
7705
-
"engines": {
7706
-
"node": ">= 8"
7707
-
}
7708
-
},
7709
-
"node_modules/wrap-ansi": {
7710
-
"version": "7.0.0",
7711
-
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
7712
-
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
7713
-
"dev": true,
7714
-
"license": "MIT",
7715
-
"dependencies": {
7716
-
"ansi-styles": "^4.0.0",
7717
-
"string-width": "^4.1.0",
7718
-
"strip-ansi": "^6.0.0"
7719
-
},
7720
-
"engines": {
7721
-
"node": ">=10"
7722
-
},
7723
-
"funding": {
7724
-
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7725
-
}
7726
-
},
7727
-
"node_modules/wrap-ansi-cjs": {
7728
-
"name": "wrap-ansi",
7729
-
"version": "7.0.0",
7730
-
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
7731
-
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
7732
-
"dev": true,
7733
-
"license": "MIT",
7734
-
"dependencies": {
7735
-
"ansi-styles": "^4.0.0",
7736
-
"string-width": "^4.1.0",
7737
-
"strip-ansi": "^6.0.0"
7738
-
},
7739
-
"engines": {
7740
-
"node": ">=10"
7741
-
},
7742
-
"funding": {
7743
-
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7744
-
}
7745
-
},
7746
-
"node_modules/wrappy": {
7747
-
"version": "1.0.2",
7748
-
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
7749
-
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
7750
-
"license": "ISC"
7751
-
},
7752
-
"node_modules/write-file-atomic": {
7753
-
"version": "5.0.1",
7754
-
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
7755
-
"integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
7756
-
"dev": true,
7757
-
"license": "ISC",
7758
-
"dependencies": {
7759
-
"imurmurhash": "^0.1.4",
7760
-
"signal-exit": "^4.0.1"
7761
-
},
7762
-
"engines": {
7763
-
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
7764
-
}
7765
-
},
7766
-
"node_modules/ws": {
7767
-
"version": "8.18.2",
7768
-
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
7769
-
"integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
7770
-
"license": "MIT",
7771
-
"engines": {
7772
-
"node": ">=10.0.0"
7773
-
},
7774
-
"peerDependencies": {
7775
-
"bufferutil": "^4.0.1",
7776
-
"utf-8-validate": ">=5.0.2"
7777
-
},
7778
-
"peerDependenciesMeta": {
7779
-
"bufferutil": {
7780
-
"optional": true
7781
-
},
7782
-
"utf-8-validate": {
7783
-
"optional": true
7784
-
}
7785
-
}
7786
-
},
7787
-
"node_modules/y18n": {
7788
-
"version": "5.0.8",
7789
-
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
7790
-
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
7791
-
"dev": true,
7792
-
"license": "ISC",
7793
-
"engines": {
7794
-
"node": ">=10"
7795
-
}
7796
-
},
7797
-
"node_modules/yallist": {
7798
-
"version": "3.1.1",
7799
-
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
7800
-
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
7801
-
"dev": true,
7802
-
"license": "ISC"
7803
-
},
7804
-
"node_modules/yargs": {
7805
-
"version": "17.7.2",
7806
-
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
7807
-
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
7808
-
"dev": true,
7809
-
"license": "MIT",
7810
-
"dependencies": {
7811
-
"cliui": "^8.0.1",
7812
-
"escalade": "^3.1.1",
7813
-
"get-caller-file": "^2.0.5",
7814
-
"require-directory": "^2.1.1",
7815
-
"string-width": "^4.2.3",
7816
-
"y18n": "^5.0.5",
7817
-
"yargs-parser": "^21.1.1"
7818
-
},
7819
-
"engines": {
7820
-
"node": ">=12"
7821
-
}
7822
-
},
7823
-
"node_modules/yargs-parser": {
7824
-
"version": "21.1.1",
7825
-
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
7826
-
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
7827
-
"dev": true,
7828
-
"license": "ISC",
7829
-
"engines": {
7830
-
"node": ">=12"
7831
-
}
7832
-
},
7833
-
"node_modules/yocto-queue": {
7834
-
"version": "1.2.1",
7835
-
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
7836
-
"integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
7837
-
"license": "MIT",
7838
-
"engines": {
7839
-
"node": ">=12.20"
7840
-
},
7841
-
"funding": {
7842
-
"url": "https://github.com/sponsors/sindresorhus"
7843
-
}
7844
-
},
7845
-
"node_modules/zod": {
7846
-
"version": "3.25.67",
7847
-
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz",
7848
-
"integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==",
7849
-
"license": "MIT",
7850
-
"funding": {
7851
-
"url": "https://github.com/sponsors/colinhacks"
7852
-
}
7853
-
}
7854
-
}
7855
-
}
-56
package.json
-56
package.json
···
1
-
{
2
-
"name": "blonk",
3
-
"version": "1.0.0",
4
-
"main": "index.js",
5
-
"scripts": {
6
-
"dev": "concurrently \"npm run server\" \"npm run client\"",
7
-
"server": "tsx watch src/server.ts",
8
-
"client": "cd client && npm run dev",
9
-
"seed-vibes": "tsx src/seed-vibes.ts",
10
-
"build": "tsc",
11
-
"start": "node dist/index.js",
12
-
"test": "jest",
13
-
"test:watch": "jest --watch",
14
-
"test:coverage": "jest --coverage",
15
-
"test:unit": "jest tests/unit",
16
-
"test:integration": "jest tests/integration"
17
-
},
18
-
"keywords": [],
19
-
"author": "",
20
-
"license": "ISC",
21
-
"description": "",
22
-
"dependencies": {
23
-
"@atproto/api": "^0.15.16",
24
-
"@atproto/lexicon": "^0.4.11",
25
-
"@atproto/repo": "^0.8.2",
26
-
"@atproto/sync": "^0.1.26",
27
-
"@ipld/car": "^5.4.2",
28
-
"@skyware/firehose": "^0.5.1",
29
-
"@types/better-sqlite3": "^7.6.13",
30
-
"@types/cors": "^2.8.19",
31
-
"@types/express": "^5.0.3",
32
-
"@types/express-session": "^1.18.2",
33
-
"@types/node": "^24.0.3",
34
-
"@types/ws": "^8.18.1",
35
-
"better-sqlite3": "^11.10.0",
36
-
"cbor-x": "^1.6.0",
37
-
"cors": "^2.8.5",
38
-
"dotenv": "^16.5.0",
39
-
"ejs": "^3.1.10",
40
-
"express": "^5.1.0",
41
-
"express-ejs-layouts": "^2.5.1",
42
-
"express-session": "^1.18.1",
43
-
"multiformats": "^13.3.7",
44
-
"tsx": "^4.20.3",
45
-
"typescript": "^5.8.3",
46
-
"ws": "^8.18.2"
47
-
},
48
-
"devDependencies": {
49
-
"@types/jest": "^30.0.0",
50
-
"@types/supertest": "^6.0.3",
51
-
"concurrently": "^9.1.2",
52
-
"jest": "^30.0.2",
53
-
"supertest": "^7.1.1",
54
-
"ts-jest": "^29.4.0"
55
-
}
56
-
}
-74
src/agent.js
-74
src/agent.js
···
1
-
"use strict";
2
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
-
if (k2 === undefined) k2 = k;
4
-
var desc = Object.getOwnPropertyDescriptor(m, k);
5
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
-
desc = { enumerable: true, get: function() { return m[k]; } };
7
-
}
8
-
Object.defineProperty(o, k2, desc);
9
-
}) : (function(o, m, k, k2) {
10
-
if (k2 === undefined) k2 = k;
11
-
o[k2] = m[k];
12
-
}));
13
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
15
-
}) : function(o, v) {
16
-
o["default"] = v;
17
-
});
18
-
var __importStar = (this && this.__importStar) || (function () {
19
-
var ownKeys = function(o) {
20
-
ownKeys = Object.getOwnPropertyNames || function (o) {
21
-
var ar = [];
22
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
-
return ar;
24
-
};
25
-
return ownKeys(o);
26
-
};
27
-
return function (mod) {
28
-
if (mod && mod.__esModule) return mod;
29
-
var result = {};
30
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
-
__setModuleDefault(result, mod);
32
-
return result;
33
-
};
34
-
})();
35
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
-
return new (P || (P = Promise))(function (resolve, reject) {
38
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
42
-
});
43
-
};
44
-
Object.defineProperty(exports, "__esModule", { value: true });
45
-
exports.BlonkAgent = void 0;
46
-
const api_1 = require("@atproto/api");
47
-
const dotenv = __importStar(require("dotenv"));
48
-
dotenv.config();
49
-
class BlonkAgent {
50
-
constructor() {
51
-
this.agent = new api_1.BskyAgent({
52
-
service: process.env.ATP_SERVICE || 'https://bsky.social',
53
-
});
54
-
}
55
-
login() {
56
-
return __awaiter(this, void 0, void 0, function* () {
57
-
const identifier = process.env.ATP_IDENTIFIER;
58
-
const password = process.env.ATP_PASSWORD;
59
-
if (!identifier || !password) {
60
-
throw new Error('Missing ATP_IDENTIFIER or ATP_PASSWORD in environment variables');
61
-
}
62
-
yield this.agent.login({
63
-
identifier,
64
-
password,
65
-
});
66
-
console.log('Successfully authenticated with AT Protocol');
67
-
return this.agent;
68
-
});
69
-
}
70
-
getAgent() {
71
-
return this.agent;
72
-
}
73
-
}
74
-
exports.BlonkAgent = BlonkAgent;
-35
src/agent.ts
-35
src/agent.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import * as dotenv from 'dotenv';
3
-
4
-
dotenv.config();
5
-
6
-
export class BlonkAgent {
7
-
private agent: BskyAgent;
8
-
9
-
constructor() {
10
-
this.agent = new BskyAgent({
11
-
service: process.env.ATP_SERVICE || 'https://bsky.social',
12
-
});
13
-
}
14
-
15
-
async login() {
16
-
const identifier = process.env.ATP_IDENTIFIER;
17
-
const password = process.env.ATP_PASSWORD;
18
-
19
-
if (!identifier || !password) {
20
-
throw new Error('Missing ATP_IDENTIFIER or ATP_PASSWORD in environment variables');
21
-
}
22
-
23
-
await this.agent.login({
24
-
identifier,
25
-
password,
26
-
});
27
-
28
-
console.log('Successfully authenticated with AT Protocol');
29
-
return this.agent;
30
-
}
31
-
32
-
getAgent() {
33
-
return this.agent;
34
-
}
35
-
}
-62
src/blips.js
-62
src/blips.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.BlipManager = void 0;
13
-
const schemas_1 = require("./schemas");
14
-
class BlipManager {
15
-
constructor(agent) {
16
-
this.agent = agent;
17
-
}
18
-
createBlip(title, body, url, tags, vibe) {
19
-
return __awaiter(this, void 0, void 0, function* () {
20
-
var _a;
21
-
const blip = {
22
-
title,
23
-
body,
24
-
url,
25
-
tags,
26
-
vibe,
27
-
createdAt: new Date().toISOString(),
28
-
fluffs: 0,
29
-
};
30
-
const response = yield this.agent.com.atproto.repo.createRecord({
31
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
32
-
collection: schemas_1.BLIP_NSID,
33
-
record: blip,
34
-
});
35
-
console.log(`Created blip: ${title}`);
36
-
return response.data.uri;
37
-
});
38
-
}
39
-
getBlips() {
40
-
return __awaiter(this, arguments, void 0, function* (limit = 50) {
41
-
var _a;
42
-
const response = yield this.agent.com.atproto.repo.listRecords({
43
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
44
-
collection: schemas_1.BLIP_NSID,
45
-
limit,
46
-
});
47
-
return response.data.records.map(record => (Object.assign({ uri: record.uri, cid: record.cid }, record.value)));
48
-
});
49
-
}
50
-
getBlip(uri) {
51
-
return __awaiter(this, void 0, void 0, function* () {
52
-
const [repo, collection, rkey] = uri.replace('at://', '').split('/');
53
-
const response = yield this.agent.com.atproto.repo.getRecord({
54
-
repo,
55
-
collection,
56
-
rkey,
57
-
});
58
-
return Object.assign({ uri, cid: response.data.cid }, response.data.value);
59
-
});
60
-
}
61
-
}
62
-
exports.BlipManager = BlipManager;
-63
src/blips.ts
-63
src/blips.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { BlonkBlip, BLIP_NSID } from './schemas';
3
-
4
-
export class BlipManager {
5
-
constructor(private agent: BskyAgent) {}
6
-
7
-
async createBlip(
8
-
title: string,
9
-
body?: string,
10
-
url?: string,
11
-
tags?: string[],
12
-
vibe?: { uri: string; cid: string; name?: string }
13
-
): Promise<string> {
14
-
const blip: BlonkBlip = {
15
-
title,
16
-
body,
17
-
url,
18
-
tags,
19
-
vibe,
20
-
createdAt: new Date().toISOString(),
21
-
grooves: 0,
22
-
};
23
-
24
-
const response = await this.agent.com.atproto.repo.createRecord({
25
-
repo: this.agent.session?.did!,
26
-
collection: BLIP_NSID,
27
-
record: blip,
28
-
});
29
-
30
-
console.log(`Created blip: ${title}`);
31
-
return response.data.uri;
32
-
}
33
-
34
-
async getBlips(limit: number = 50) {
35
-
const response = await this.agent.com.atproto.repo.listRecords({
36
-
repo: this.agent.session?.did!,
37
-
collection: BLIP_NSID,
38
-
limit,
39
-
});
40
-
41
-
return response.data.records.map(record => ({
42
-
uri: record.uri,
43
-
cid: record.cid,
44
-
...record.value as BlonkBlip,
45
-
}));
46
-
}
47
-
48
-
async getBlip(uri: string) {
49
-
const [repo, collection, rkey] = uri.replace('at://', '').split('/');
50
-
51
-
const response = await this.agent.com.atproto.repo.getRecord({
52
-
repo,
53
-
collection,
54
-
rkey,
55
-
});
56
-
57
-
return {
58
-
uri,
59
-
cid: response.data.cid,
60
-
...response.data.value as BlonkBlip,
61
-
};
62
-
}
63
-
}
-75
src/bluesky-monitor.js
-75
src/bluesky-monitor.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.BlueskyFirehoseMonitor = void 0;
13
-
const sync_1 = require("@atproto/sync");
14
-
const vibe_monitor_1 = require("./vibe-monitor");
15
-
class BlueskyFirehoseMonitor {
16
-
constructor(agent) {
17
-
this.subscription = null;
18
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
19
-
}
20
-
start() {
21
-
return __awaiter(this, void 0, void 0, function* () {
22
-
console.log('🔥 Starting Bluesky Firehose monitoring for #vibe-* hashtags...');
23
-
this.subscription = new sync_1.Subscription({
24
-
service: 'wss://bsky.social',
25
-
method: 'com.atproto.sync.subscribeRepos',
26
-
getState: () => ({}),
27
-
validate: (value) => value,
28
-
});
29
-
this.subscription.on('message', (msg) => {
30
-
if (msg.commit) {
31
-
this.processCommit(msg.commit);
32
-
}
33
-
});
34
-
this.subscription.on('error', (error) => {
35
-
console.error('Bluesky Firehose error:', error);
36
-
});
37
-
yield this.subscription.start();
38
-
console.log('📡 Connected to Bluesky Firehose');
39
-
});
40
-
}
41
-
processCommit(commit) {
42
-
return __awaiter(this, void 0, void 0, function* () {
43
-
var _a;
44
-
try {
45
-
// Check each operation in the commit
46
-
for (const op of commit.ops || []) {
47
-
if (op.action === 'create' && ((_a = op.path) === null || _a === void 0 ? void 0 : _a.includes('app.bsky.feed.post'))) {
48
-
// This is a new post
49
-
const record = op.record;
50
-
if (record && record.text) {
51
-
const text = record.text;
52
-
// Check for #vibe-* hashtags
53
-
if (text.includes('#vibe-')) {
54
-
const authorDid = commit.repo;
55
-
console.log(`🎯 Detected #vibe-* in Bluesky post from ${authorDid}: "${text.substring(0, 100)}..."`);
56
-
// Process the vibe mention
57
-
yield this.vibeMonitor.checkPost(text, authorDid, `at://${authorDid}/${op.path}`);
58
-
}
59
-
}
60
-
}
61
-
}
62
-
}
63
-
catch (error) {
64
-
// Ignore errors for individual commits
65
-
}
66
-
});
67
-
}
68
-
stop() {
69
-
if (this.subscription) {
70
-
this.subscription.stop();
71
-
this.subscription = null;
72
-
}
73
-
}
74
-
}
75
-
exports.BlueskyFirehoseMonitor = BlueskyFirehoseMonitor;
-71
src/bluesky-monitor.ts
-71
src/bluesky-monitor.ts
···
1
-
import { Subscription } from '@atproto/sync';
2
-
import { VibeMonitor } from './vibe-monitor';
3
-
import { BskyAgent } from '@atproto/api';
4
-
import { ids, lexicons } from '@atproto/api';
5
-
6
-
export class BlueskyFirehoseMonitor {
7
-
private subscription: Subscription | null = null;
8
-
private vibeMonitor: VibeMonitor;
9
-
10
-
constructor(agent: BskyAgent) {
11
-
this.vibeMonitor = new VibeMonitor(agent);
12
-
}
13
-
14
-
async start() {
15
-
console.log('🔥 Starting Bluesky Firehose monitoring for #vibe-* hashtags...');
16
-
17
-
this.subscription = new Subscription({
18
-
service: 'wss://bsky.social',
19
-
method: 'com.atproto.sync.subscribeRepos',
20
-
getState: () => ({}),
21
-
validate: (value) => value,
22
-
});
23
-
24
-
this.subscription.on('message', (msg: any) => {
25
-
if (msg.commit) {
26
-
this.processCommit(msg.commit);
27
-
}
28
-
});
29
-
30
-
this.subscription.on('error', (error) => {
31
-
console.error('Bluesky Firehose error:', error);
32
-
});
33
-
34
-
await this.subscription.start();
35
-
console.log('📡 Connected to Bluesky Firehose');
36
-
}
37
-
38
-
private async processCommit(commit: any) {
39
-
try {
40
-
// Check each operation in the commit
41
-
for (const op of commit.ops || []) {
42
-
if (op.action === 'create' && op.path?.includes('app.bsky.feed.post')) {
43
-
// This is a new post
44
-
const record = op.record;
45
-
46
-
if (record && record.text) {
47
-
const text = record.text;
48
-
49
-
// Check for #vibe-* hashtags
50
-
if (text.includes('#vibe-')) {
51
-
const authorDid = commit.repo;
52
-
console.log(`🎯 Detected #vibe-* in Bluesky post from ${authorDid}: "${text.substring(0, 100)}..."`);
53
-
54
-
// Process the vibe mention
55
-
await this.vibeMonitor.checkPost(text, authorDid, `at://${authorDid}/${op.path}`);
56
-
}
57
-
}
58
-
}
59
-
}
60
-
} catch (error) {
61
-
// Ignore errors for individual commits
62
-
}
63
-
}
64
-
65
-
stop() {
66
-
if (this.subscription) {
67
-
this.subscription.stop();
68
-
this.subscription = null;
69
-
}
70
-
}
71
-
}
-285
src/database.js
-285
src/database.js
···
1
-
"use strict";
2
-
var __importDefault = (this && this.__importDefault) || function (mod) {
3
-
return (mod && mod.__esModule) ? mod : { "default": mod };
4
-
};
5
-
Object.defineProperty(exports, "__esModule", { value: true });
6
-
exports.vibeMentionDb = exports.vibeDb = exports.blipDb = void 0;
7
-
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
-
const path_1 = __importDefault(require("path"));
9
-
const db = new better_sqlite3_1.default(path_1.default.join(__dirname, '../blonk.db'));
10
-
// Drop old fluffs index if it exists
11
-
db.exec(`DROP INDEX IF EXISTS idx_blips_fluffs;`);
12
-
// Initialize database schema
13
-
db.exec(`
14
-
CREATE TABLE IF NOT EXISTS blips (
15
-
uri TEXT PRIMARY KEY,
16
-
cid TEXT NOT NULL,
17
-
author_did TEXT NOT NULL,
18
-
author_handle TEXT,
19
-
author_display_name TEXT,
20
-
title TEXT NOT NULL,
21
-
body TEXT,
22
-
url TEXT,
23
-
tags TEXT,
24
-
vibe_uri TEXT,
25
-
vibe_name TEXT,
26
-
grooves INTEGER DEFAULT 0,
27
-
created_at TEXT NOT NULL,
28
-
indexed_at TEXT DEFAULT CURRENT_TIMESTAMP
29
-
);
30
-
31
-
CREATE INDEX IF NOT EXISTS idx_blips_created_at ON blips(created_at DESC);
32
-
CREATE INDEX IF NOT EXISTS idx_blips_author ON blips(author_did);
33
-
CREATE INDEX IF NOT EXISTS idx_blips_grooves ON blips(grooves DESC);
34
-
CREATE INDEX IF NOT EXISTS idx_blips_vibe ON blips(vibe_uri);
35
-
36
-
CREATE TABLE IF NOT EXISTS vibes (
37
-
uri TEXT PRIMARY KEY,
38
-
cid TEXT NOT NULL,
39
-
creator_did TEXT NOT NULL,
40
-
name TEXT NOT NULL,
41
-
mood TEXT NOT NULL,
42
-
emoji TEXT,
43
-
color TEXT,
44
-
member_count INTEGER DEFAULT 0,
45
-
created_at TEXT NOT NULL,
46
-
indexed_at TEXT DEFAULT CURRENT_TIMESTAMP
47
-
);
48
-
49
-
CREATE INDEX IF NOT EXISTS idx_vibes_name ON vibes(name);
50
-
CREATE INDEX IF NOT EXISTS idx_vibes_member_count ON vibes(member_count DESC);
51
-
52
-
CREATE TABLE IF NOT EXISTS vibe_members (
53
-
vibe_uri TEXT NOT NULL,
54
-
member_did TEXT NOT NULL,
55
-
joined_at TEXT NOT NULL,
56
-
PRIMARY KEY (vibe_uri, member_did)
57
-
);
58
-
59
-
CREATE TABLE IF NOT EXISTS vibe_mentions (
60
-
vibe_name TEXT NOT NULL,
61
-
mentioned_by_did TEXT NOT NULL,
62
-
mentioned_at TEXT NOT NULL,
63
-
post_uri TEXT,
64
-
PRIMARY KEY (vibe_name, mentioned_by_did, mentioned_at)
65
-
);
66
-
67
-
CREATE INDEX IF NOT EXISTS idx_vibe_mentions_name ON vibe_mentions(vibe_name);
68
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_vibes_unique_name ON vibes(LOWER(name));
69
-
70
-
CREATE TABLE IF NOT EXISTS grooves (
71
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
72
-
blip_uri TEXT NOT NULL,
73
-
user_did TEXT NOT NULL,
74
-
groove_type TEXT NOT NULL CHECK (groove_type IN ('looks_good', 'shit_rips')),
75
-
created_at TEXT NOT NULL,
76
-
UNIQUE(blip_uri, user_did)
77
-
);
78
-
79
-
CREATE INDEX IF NOT EXISTS idx_grooves_blip ON grooves(blip_uri);
80
-
CREATE INDEX IF NOT EXISTS idx_grooves_user ON grooves(user_did);
81
-
`);
82
-
exports.blipDb = {
83
-
insertBlip: (blip) => {
84
-
const stmt = db.prepare(`
85
-
INSERT OR REPLACE INTO blips
86
-
(uri, cid, author_did, author_handle, author_display_name, title, body, url, tags, vibe_uri, vibe_name, grooves, created_at)
87
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
88
-
`);
89
-
stmt.run(blip.uri, blip.cid, blip.authorDid, blip.authorHandle, blip.authorDisplayName, blip.title, blip.body, blip.url, JSON.stringify(blip.tags || []), blip.vibeUri, blip.vibeName, blip.grooves, blip.createdAt);
90
-
},
91
-
getBlips: (limit = 50, offset = 0) => {
92
-
const stmt = db.prepare(`
93
-
SELECT * FROM blips
94
-
ORDER BY created_at DESC
95
-
LIMIT ? OFFSET ?
96
-
`);
97
-
const rows = stmt.all(limit, offset);
98
-
return rows.map(row => ({
99
-
uri: row.uri,
100
-
cid: row.cid,
101
-
authorDid: row.author_did,
102
-
authorHandle: row.author_handle,
103
-
authorDisplayName: row.author_display_name,
104
-
title: row.title,
105
-
body: row.body,
106
-
url: row.url,
107
-
tags: JSON.parse(row.tags || '[]'),
108
-
vibeUri: row.vibe_uri,
109
-
vibeName: row.vibe_name,
110
-
grooves: row.grooves,
111
-
createdAt: row.created_at,
112
-
indexedAt: row.indexed_at,
113
-
}));
114
-
},
115
-
getBlipsByTag: (tag, limit = 50) => {
116
-
const stmt = db.prepare(`
117
-
SELECT * FROM blips
118
-
WHERE tags LIKE ?
119
-
ORDER BY created_at DESC
120
-
LIMIT ?
121
-
`);
122
-
const rows = stmt.all(`%"${tag}"%`, limit);
123
-
return rows.map(row => ({
124
-
uri: row.uri,
125
-
cid: row.cid,
126
-
authorDid: row.author_did,
127
-
authorHandle: row.author_handle,
128
-
authorDisplayName: row.author_display_name,
129
-
title: row.title,
130
-
body: row.body,
131
-
url: row.url,
132
-
tags: JSON.parse(row.tags || '[]'),
133
-
vibeUri: row.vibe_uri,
134
-
vibeName: row.vibe_name,
135
-
grooves: row.grooves,
136
-
createdAt: row.created_at,
137
-
indexedAt: row.indexed_at,
138
-
}));
139
-
},
140
-
getBlipsByVibe: (vibeUri, limit = 50) => {
141
-
const stmt = db.prepare(`
142
-
SELECT * FROM blips
143
-
WHERE vibe_uri = ?
144
-
ORDER BY created_at DESC
145
-
LIMIT ?
146
-
`);
147
-
const rows = stmt.all(vibeUri, limit);
148
-
return rows.map(row => ({
149
-
uri: row.uri,
150
-
cid: row.cid,
151
-
authorDid: row.author_did,
152
-
authorHandle: row.author_handle,
153
-
authorDisplayName: row.author_display_name,
154
-
title: row.title,
155
-
body: row.body,
156
-
url: row.url,
157
-
tags: JSON.parse(row.tags || '[]'),
158
-
vibeUri: row.vibe_uri,
159
-
vibeName: row.vibe_name,
160
-
grooves: row.grooves,
161
-
createdAt: row.created_at,
162
-
indexedAt: row.indexed_at,
163
-
}));
164
-
},
165
-
};
166
-
exports.vibeDb = {
167
-
insertVibe: (vibe) => {
168
-
const stmt = db.prepare(`
169
-
INSERT OR REPLACE INTO vibes
170
-
(uri, cid, creator_did, name, mood, emoji, color, member_count, created_at)
171
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
172
-
`);
173
-
stmt.run(vibe.uri, vibe.cid, vibe.creatorDid, vibe.name, vibe.mood, vibe.emoji, vibe.color, vibe.memberCount, vibe.createdAt);
174
-
},
175
-
getVibes: (limit = 50) => {
176
-
const stmt = db.prepare(`
177
-
SELECT * FROM vibes
178
-
ORDER BY member_count DESC, created_at DESC
179
-
LIMIT ?
180
-
`);
181
-
const rows = stmt.all(limit);
182
-
return rows.map(row => ({
183
-
uri: row.uri,
184
-
cid: row.cid,
185
-
creatorDid: row.creator_did,
186
-
name: row.name,
187
-
mood: row.mood,
188
-
emoji: row.emoji,
189
-
color: row.color,
190
-
memberCount: row.member_count,
191
-
createdAt: row.created_at,
192
-
indexedAt: row.indexed_at,
193
-
}));
194
-
},
195
-
addMember: (vibeUri, memberDid) => {
196
-
const stmt = db.prepare(`
197
-
INSERT OR IGNORE INTO vibe_members
198
-
(vibe_uri, member_did, joined_at)
199
-
VALUES (?, ?, ?)
200
-
`);
201
-
stmt.run(vibeUri, memberDid, new Date().toISOString());
202
-
// Update member count
203
-
const updateStmt = db.prepare(`
204
-
UPDATE vibes
205
-
SET member_count = (SELECT COUNT(*) FROM vibe_members WHERE vibe_uri = ?)
206
-
WHERE uri = ?
207
-
`);
208
-
updateStmt.run(vibeUri, vibeUri);
209
-
},
210
-
};
211
-
exports.vibeMentionDb = {
212
-
trackMention: (vibeName, mentionedByDid, postUri) => {
213
-
const stmt = db.prepare(`
214
-
INSERT OR IGNORE INTO vibe_mentions
215
-
(vibe_name, mentioned_by_did, mentioned_at, post_uri)
216
-
VALUES (?, ?, ?, ?)
217
-
`);
218
-
stmt.run(vibeName, mentionedByDid, new Date().toISOString(), postUri);
219
-
},
220
-
getMentionCount: (vibeName) => {
221
-
const stmt = db.prepare(`
222
-
SELECT COUNT(DISTINCT mentioned_by_did) as count
223
-
FROM vibe_mentions
224
-
WHERE vibe_name = ?
225
-
`);
226
-
const result = stmt.get(vibeName);
227
-
return (result === null || result === void 0 ? void 0 : result.count) || 0;
228
-
},
229
-
getTotalMentionCount: (vibeName) => {
230
-
const stmt = db.prepare(`
231
-
SELECT COUNT(*) as count
232
-
FROM vibe_mentions
233
-
WHERE vibe_name = ?
234
-
`);
235
-
const result = stmt.get(vibeName);
236
-
return (result === null || result === void 0 ? void 0 : result.count) || 0;
237
-
},
238
-
getEmergingVibes: () => {
239
-
const stmt = db.prepare(`
240
-
SELECT
241
-
vm.vibe_name,
242
-
COUNT(DISTINCT vm.mentioned_by_did) as mention_count,
243
-
COUNT(*) as total_mention_count,
244
-
MIN(vm.mentioned_at) as first_mentioned,
245
-
MAX(vm.mentioned_at) as last_mentioned
246
-
FROM vibe_mentions vm
247
-
LEFT JOIN vibes v ON LOWER(vm.vibe_name) = LOWER(v.name)
248
-
WHERE v.uri IS NULL
249
-
GROUP BY vm.vibe_name
250
-
ORDER BY mention_count DESC, last_mentioned DESC
251
-
`);
252
-
return stmt.all().map(row => ({
253
-
vibeName: row.vibe_name,
254
-
mentionCount: row.mention_count,
255
-
totalMentionCount: row.total_mention_count,
256
-
firstMentioned: row.first_mentioned,
257
-
lastMentioned: row.last_mentioned,
258
-
progress: Math.max((row.mention_count / 5) * 100, // 5 unique mentions
259
-
(row.total_mention_count / 10) * 100 // OR 10 total mentions
260
-
),
261
-
}));
262
-
},
263
-
getVibeByName: (name) => {
264
-
const stmt = db.prepare(`
265
-
SELECT * FROM vibes
266
-
WHERE LOWER(name) = LOWER(?)
267
-
`);
268
-
const row = stmt.get(name);
269
-
if (!row)
270
-
return null;
271
-
return {
272
-
uri: row.uri,
273
-
cid: row.cid,
274
-
creatorDid: row.creator_did,
275
-
name: row.name,
276
-
mood: row.mood,
277
-
emoji: row.emoji,
278
-
color: row.color,
279
-
memberCount: row.member_count,
280
-
createdAt: row.created_at,
281
-
indexedAt: row.indexed_at,
282
-
};
283
-
},
284
-
};
285
-
exports.default = db;
-364
src/database.ts
-364
src/database.ts
···
1
-
import Database from 'better-sqlite3';
2
-
import path from 'path';
3
-
4
-
const db = new Database(path.join(__dirname, '../blonk.db'));
5
-
6
-
// Drop old fluffs index if it exists
7
-
db.exec(`DROP INDEX IF EXISTS idx_blips_fluffs;`);
8
-
9
-
// Initialize database schema
10
-
db.exec(`
11
-
CREATE TABLE IF NOT EXISTS blips (
12
-
uri TEXT PRIMARY KEY,
13
-
cid TEXT NOT NULL,
14
-
author_did TEXT NOT NULL,
15
-
author_handle TEXT,
16
-
author_display_name TEXT,
17
-
title TEXT NOT NULL,
18
-
body TEXT,
19
-
url TEXT,
20
-
tags TEXT,
21
-
vibe_uri TEXT,
22
-
vibe_name TEXT,
23
-
grooves INTEGER DEFAULT 0,
24
-
created_at TEXT NOT NULL,
25
-
indexed_at TEXT DEFAULT CURRENT_TIMESTAMP
26
-
);
27
-
28
-
CREATE INDEX IF NOT EXISTS idx_blips_created_at ON blips(created_at DESC);
29
-
CREATE INDEX IF NOT EXISTS idx_blips_author ON blips(author_did);
30
-
CREATE INDEX IF NOT EXISTS idx_blips_grooves ON blips(grooves DESC);
31
-
CREATE INDEX IF NOT EXISTS idx_blips_vibe ON blips(vibe_uri);
32
-
33
-
CREATE TABLE IF NOT EXISTS vibes (
34
-
uri TEXT PRIMARY KEY,
35
-
cid TEXT NOT NULL,
36
-
creator_did TEXT NOT NULL,
37
-
name TEXT NOT NULL,
38
-
mood TEXT NOT NULL,
39
-
emoji TEXT,
40
-
color TEXT,
41
-
member_count INTEGER DEFAULT 0,
42
-
created_at TEXT NOT NULL,
43
-
indexed_at TEXT DEFAULT CURRENT_TIMESTAMP
44
-
);
45
-
46
-
CREATE INDEX IF NOT EXISTS idx_vibes_name ON vibes(name);
47
-
CREATE INDEX IF NOT EXISTS idx_vibes_member_count ON vibes(member_count DESC);
48
-
49
-
CREATE TABLE IF NOT EXISTS vibe_members (
50
-
vibe_uri TEXT NOT NULL,
51
-
member_did TEXT NOT NULL,
52
-
joined_at TEXT NOT NULL,
53
-
PRIMARY KEY (vibe_uri, member_did)
54
-
);
55
-
56
-
CREATE TABLE IF NOT EXISTS vibe_mentions (
57
-
vibe_name TEXT NOT NULL,
58
-
mentioned_by_did TEXT NOT NULL,
59
-
mentioned_at TEXT NOT NULL,
60
-
post_uri TEXT NOT NULL,
61
-
PRIMARY KEY (vibe_name, post_uri)
62
-
);
63
-
64
-
CREATE INDEX IF NOT EXISTS idx_vibe_mentions_name ON vibe_mentions(vibe_name);
65
-
CREATE INDEX IF NOT EXISTS idx_vibe_mentions_author ON vibe_mentions(mentioned_by_did);
66
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_vibes_unique_name ON vibes(LOWER(name));
67
-
68
-
CREATE TABLE IF NOT EXISTS grooves (
69
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
70
-
blip_uri TEXT NOT NULL,
71
-
user_did TEXT NOT NULL,
72
-
groove_type TEXT NOT NULL CHECK (groove_type IN ('looks_good', 'shit_rips')),
73
-
created_at TEXT NOT NULL,
74
-
UNIQUE(blip_uri, user_did)
75
-
);
76
-
77
-
CREATE INDEX IF NOT EXISTS idx_grooves_blip ON grooves(blip_uri);
78
-
CREATE INDEX IF NOT EXISTS idx_grooves_user ON grooves(user_did);
79
-
`);
80
-
81
-
export interface StoredBlip {
82
-
uri: string;
83
-
cid: string;
84
-
authorDid: string;
85
-
authorHandle?: string;
86
-
authorDisplayName?: string;
87
-
title: string;
88
-
body?: string;
89
-
url?: string;
90
-
tags: string[];
91
-
vibeUri?: string;
92
-
vibeName?: string;
93
-
grooves: number;
94
-
createdAt: string;
95
-
indexedAt: string;
96
-
}
97
-
98
-
export interface StoredVibe {
99
-
uri: string;
100
-
cid: string;
101
-
creatorDid: string;
102
-
name: string;
103
-
mood: string;
104
-
emoji?: string;
105
-
color?: string;
106
-
memberCount: number;
107
-
createdAt: string;
108
-
indexedAt: string;
109
-
}
110
-
111
-
export const blipDb = {
112
-
insertBlip: (blip: Omit<StoredBlip, 'indexedAt'>) => {
113
-
const stmt = db.prepare(`
114
-
INSERT OR REPLACE INTO blips
115
-
(uri, cid, author_did, author_handle, author_display_name, title, body, url, tags, vibe_uri, vibe_name, grooves, created_at)
116
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
117
-
`);
118
-
119
-
stmt.run(
120
-
blip.uri,
121
-
blip.cid,
122
-
blip.authorDid,
123
-
blip.authorHandle,
124
-
blip.authorDisplayName,
125
-
blip.title,
126
-
blip.body,
127
-
blip.url,
128
-
JSON.stringify(blip.tags || []),
129
-
blip.vibeUri,
130
-
blip.vibeName,
131
-
blip.grooves,
132
-
blip.createdAt
133
-
);
134
-
},
135
-
136
-
getBlips: (limit = 50, offset = 0): StoredBlip[] => {
137
-
const stmt = db.prepare(`
138
-
SELECT * FROM blips
139
-
ORDER BY created_at DESC
140
-
LIMIT ? OFFSET ?
141
-
`);
142
-
143
-
const rows = stmt.all(limit, offset);
144
-
return rows.map(row => ({
145
-
uri: row.uri,
146
-
cid: row.cid,
147
-
authorDid: row.author_did,
148
-
authorHandle: row.author_handle,
149
-
authorDisplayName: row.author_display_name,
150
-
title: row.title,
151
-
body: row.body,
152
-
url: row.url,
153
-
tags: JSON.parse(row.tags || '[]'),
154
-
vibeUri: row.vibe_uri,
155
-
vibeName: row.vibe_name,
156
-
grooves: row.grooves,
157
-
createdAt: row.created_at,
158
-
indexedAt: row.indexed_at,
159
-
}));
160
-
},
161
-
162
-
getBlipsByTag: (tag: string, limit = 50): StoredBlip[] => {
163
-
const stmt = db.prepare(`
164
-
SELECT * FROM blips
165
-
WHERE tags LIKE ?
166
-
ORDER BY created_at DESC
167
-
LIMIT ?
168
-
`);
169
-
170
-
const rows = stmt.all(`%"${tag}"%`, limit);
171
-
return rows.map(row => ({
172
-
uri: row.uri,
173
-
cid: row.cid,
174
-
authorDid: row.author_did,
175
-
authorHandle: row.author_handle,
176
-
authorDisplayName: row.author_display_name,
177
-
title: row.title,
178
-
body: row.body,
179
-
url: row.url,
180
-
tags: JSON.parse(row.tags || '[]'),
181
-
vibeUri: row.vibe_uri,
182
-
vibeName: row.vibe_name,
183
-
grooves: row.grooves,
184
-
createdAt: row.created_at,
185
-
indexedAt: row.indexed_at,
186
-
}));
187
-
},
188
-
189
-
getBlipsByVibe: (vibeUri: string, limit = 50): StoredBlip[] => {
190
-
const stmt = db.prepare(`
191
-
SELECT * FROM blips
192
-
WHERE vibe_uri = ?
193
-
ORDER BY created_at DESC
194
-
LIMIT ?
195
-
`);
196
-
197
-
const rows = stmt.all(vibeUri, limit);
198
-
return rows.map(row => ({
199
-
uri: row.uri,
200
-
cid: row.cid,
201
-
authorDid: row.author_did,
202
-
authorHandle: row.author_handle,
203
-
authorDisplayName: row.author_display_name,
204
-
title: row.title,
205
-
body: row.body,
206
-
url: row.url,
207
-
tags: JSON.parse(row.tags || '[]'),
208
-
vibeUri: row.vibe_uri,
209
-
vibeName: row.vibe_name,
210
-
grooves: row.grooves,
211
-
createdAt: row.created_at,
212
-
indexedAt: row.indexed_at,
213
-
}));
214
-
},
215
-
};
216
-
217
-
export const vibeDb = {
218
-
insertVibe: (vibe: Omit<StoredVibe, 'indexedAt'>) => {
219
-
const stmt = db.prepare(`
220
-
INSERT OR REPLACE INTO vibes
221
-
(uri, cid, creator_did, name, mood, emoji, color, member_count, created_at)
222
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
223
-
`);
224
-
225
-
stmt.run(
226
-
vibe.uri,
227
-
vibe.cid,
228
-
vibe.creatorDid,
229
-
vibe.name,
230
-
vibe.mood,
231
-
vibe.emoji,
232
-
vibe.color,
233
-
vibe.memberCount,
234
-
vibe.createdAt
235
-
);
236
-
},
237
-
238
-
getVibes: (limit = 50): StoredVibe[] => {
239
-
const stmt = db.prepare(`
240
-
SELECT * FROM vibes
241
-
ORDER BY member_count DESC, created_at DESC
242
-
LIMIT ?
243
-
`);
244
-
245
-
const rows = stmt.all(limit);
246
-
return rows.map(row => ({
247
-
uri: row.uri,
248
-
cid: row.cid,
249
-
creatorDid: row.creator_did,
250
-
name: row.name,
251
-
mood: row.mood,
252
-
emoji: row.emoji,
253
-
color: row.color,
254
-
memberCount: row.member_count,
255
-
createdAt: row.created_at,
256
-
indexedAt: row.indexed_at,
257
-
}));
258
-
},
259
-
260
-
addMember: (vibeUri: string, memberDid: string) => {
261
-
const stmt = db.prepare(`
262
-
INSERT OR IGNORE INTO vibe_members
263
-
(vibe_uri, member_did, joined_at)
264
-
VALUES (?, ?, ?)
265
-
`);
266
-
267
-
stmt.run(vibeUri, memberDid, new Date().toISOString());
268
-
269
-
// Update member count
270
-
const updateStmt = db.prepare(`
271
-
UPDATE vibes
272
-
SET member_count = (SELECT COUNT(*) FROM vibe_members WHERE vibe_uri = ?)
273
-
WHERE uri = ?
274
-
`);
275
-
updateStmt.run(vibeUri, vibeUri);
276
-
},
277
-
};
278
-
279
-
export const vibeMentionDb = {
280
-
trackMention: (vibeName: string, mentionedByDid: string, postUri: string) => {
281
-
const stmt = db.prepare(`
282
-
INSERT OR IGNORE INTO vibe_mentions
283
-
(vibe_name, mentioned_by_did, mentioned_at, post_uri)
284
-
VALUES (?, ?, ?, ?)
285
-
`);
286
-
287
-
stmt.run(vibeName, mentionedByDid, new Date().toISOString(), postUri);
288
-
},
289
-
290
-
getMentionCount: (vibeName: string): number => {
291
-
const stmt = db.prepare(`
292
-
SELECT COUNT(DISTINCT mentioned_by_did) as count
293
-
FROM vibe_mentions
294
-
WHERE vibe_name = ?
295
-
`);
296
-
297
-
const result = stmt.get(vibeName) as { count: number };
298
-
return result?.count || 0;
299
-
},
300
-
301
-
getTotalMentionCount: (vibeName: string): number => {
302
-
const stmt = db.prepare(`
303
-
SELECT COUNT(*) as count
304
-
FROM vibe_mentions
305
-
WHERE vibe_name = ?
306
-
`);
307
-
308
-
const result = stmt.get(vibeName) as { count: number };
309
-
return result?.count || 0;
310
-
},
311
-
312
-
getEmergingVibes: () => {
313
-
const stmt = db.prepare(`
314
-
SELECT
315
-
vm.vibe_name,
316
-
COUNT(DISTINCT vm.mentioned_by_did) as mention_count,
317
-
COUNT(*) as total_mention_count,
318
-
MIN(vm.mentioned_at) as first_mentioned,
319
-
MAX(vm.mentioned_at) as last_mentioned
320
-
FROM vibe_mentions vm
321
-
LEFT JOIN vibes v ON LOWER(vm.vibe_name) = LOWER(v.name)
322
-
WHERE v.uri IS NULL
323
-
GROUP BY vm.vibe_name
324
-
ORDER BY mention_count DESC, last_mentioned DESC
325
-
`);
326
-
327
-
return stmt.all().map(row => ({
328
-
vibeName: row.vibe_name,
329
-
mentionCount: row.mention_count,
330
-
totalMentionCount: row.total_mention_count,
331
-
firstMentioned: row.first_mentioned,
332
-
lastMentioned: row.last_mentioned,
333
-
progress: Math.max(
334
-
(row.mention_count / 5) * 100, // 5 unique mentions
335
-
(row.total_mention_count / 10) * 100 // OR 10 total mentions
336
-
),
337
-
}));
338
-
},
339
-
340
-
getVibeByName: (name: string): StoredVibe | null => {
341
-
const stmt = db.prepare(`
342
-
SELECT * FROM vibes
343
-
WHERE LOWER(name) = LOWER(?)
344
-
`);
345
-
346
-
const row = stmt.get(name);
347
-
if (!row) return null;
348
-
349
-
return {
350
-
uri: row.uri,
351
-
cid: row.cid,
352
-
creatorDid: row.creator_did,
353
-
name: row.name,
354
-
mood: row.mood,
355
-
emoji: row.emoji,
356
-
color: row.color,
357
-
memberCount: row.member_count,
358
-
createdAt: row.created_at,
359
-
indexedAt: row.indexed_at,
360
-
};
361
-
},
362
-
};
363
-
364
-
export default db;
-84
src/debug-firehose.js
-84
src/debug-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.DebugFirehose = void 0;
13
-
const ws_1 = require("ws");
14
-
class DebugFirehose {
15
-
constructor() {
16
-
this.ws = null;
17
-
}
18
-
start() {
19
-
return __awaiter(this, void 0, void 0, function* () {
20
-
console.log('🔍 DEBUG: Starting firehose connection test...');
21
-
const urls = [
22
-
'wss://bsky.social/xrpc/com.atproto.sync.subscribeRepos',
23
-
'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos',
24
-
];
25
-
for (const url of urls) {
26
-
console.log(`\n🔗 Trying: ${url}`);
27
-
yield this.testConnection(url);
28
-
}
29
-
});
30
-
}
31
-
testConnection(url) {
32
-
return __awaiter(this, void 0, void 0, function* () {
33
-
return new Promise((resolve) => {
34
-
const ws = new ws_1.WebSocket(url);
35
-
let messageCount = 0;
36
-
const timeout = setTimeout(() => {
37
-
console.log('⏱️ Timeout after 10 seconds');
38
-
ws.close();
39
-
resolve();
40
-
}, 10000);
41
-
ws.on('open', () => {
42
-
console.log('✅ Connected successfully!');
43
-
});
44
-
ws.on('message', (data) => {
45
-
messageCount++;
46
-
console.log(`📦 Message #${messageCount}: ${data.length} bytes`);
47
-
// Log first few bytes to see message type
48
-
const preview = data.slice(0, 100);
49
-
console.log(` Preview: ${preview.toString('hex').substring(0, 50)}...`);
50
-
if (messageCount >= 5) {
51
-
console.log('✅ Successfully receiving messages');
52
-
clearTimeout(timeout);
53
-
ws.close();
54
-
resolve();
55
-
}
56
-
});
57
-
ws.on('error', (error) => {
58
-
console.log(`❌ Error: ${error.message}`);
59
-
console.log(` Code: ${error.code}`);
60
-
if (error.stack) {
61
-
console.log(` Stack: ${error.stack.split('\n')[0]}`);
62
-
}
63
-
clearTimeout(timeout);
64
-
resolve();
65
-
});
66
-
ws.on('close', (code, reason) => {
67
-
console.log(`🔌 Closed: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
68
-
clearTimeout(timeout);
69
-
resolve();
70
-
});
71
-
});
72
-
});
73
-
}
74
-
stop() {
75
-
if (this.ws) {
76
-
this.ws.close();
77
-
this.ws = null;
78
-
}
79
-
}
80
-
}
81
-
exports.DebugFirehose = DebugFirehose;
82
-
// Run the test
83
-
const debugFirehose = new DebugFirehose();
84
-
debugFirehose.start();
-78
src/debug-firehose.ts
-78
src/debug-firehose.ts
···
1
-
import { WebSocket } from 'ws';
2
-
3
-
export class DebugFirehose {
4
-
private ws: WebSocket | null = null;
5
-
6
-
async start() {
7
-
console.log('🔍 DEBUG: Starting firehose connection test...');
8
-
9
-
const urls = [
10
-
'wss://bsky.social/xrpc/com.atproto.sync.subscribeRepos',
11
-
'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos',
12
-
];
13
-
14
-
for (const url of urls) {
15
-
console.log(`\n🔗 Trying: ${url}`);
16
-
await this.testConnection(url);
17
-
}
18
-
}
19
-
20
-
private async testConnection(url: string): Promise<void> {
21
-
return new Promise((resolve) => {
22
-
const ws = new WebSocket(url);
23
-
let messageCount = 0;
24
-
const timeout = setTimeout(() => {
25
-
console.log('⏱️ Timeout after 10 seconds');
26
-
ws.close();
27
-
resolve();
28
-
}, 10000);
29
-
30
-
ws.on('open', () => {
31
-
console.log('✅ Connected successfully!');
32
-
});
33
-
34
-
ws.on('message', (data: Buffer) => {
35
-
messageCount++;
36
-
console.log(`📦 Message #${messageCount}: ${data.length} bytes`);
37
-
38
-
// Log first few bytes to see message type
39
-
const preview = data.slice(0, 100);
40
-
console.log(` Preview: ${preview.toString('hex').substring(0, 50)}...`);
41
-
42
-
if (messageCount >= 5) {
43
-
console.log('✅ Successfully receiving messages');
44
-
clearTimeout(timeout);
45
-
ws.close();
46
-
resolve();
47
-
}
48
-
});
49
-
50
-
ws.on('error', (error: any) => {
51
-
console.log(`❌ Error: ${error.message}`);
52
-
console.log(` Code: ${error.code}`);
53
-
if (error.stack) {
54
-
console.log(` Stack: ${error.stack.split('\n')[0]}`);
55
-
}
56
-
clearTimeout(timeout);
57
-
resolve();
58
-
});
59
-
60
-
ws.on('close', (code, reason) => {
61
-
console.log(`🔌 Closed: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
62
-
clearTimeout(timeout);
63
-
resolve();
64
-
});
65
-
});
66
-
}
67
-
68
-
stop() {
69
-
if (this.ws) {
70
-
this.ws.close();
71
-
this.ws = null;
72
-
}
73
-
}
74
-
}
75
-
76
-
// Run the test
77
-
const debugFirehose = new DebugFirehose();
78
-
debugFirehose.start();
-157
src/firehose-fixed.js
-157
src/firehose-fixed.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.FixedFirehoseMonitor = void 0;
13
-
const ws_1 = require("ws");
14
-
const cbor_x_1 = require("cbor-x");
15
-
const repo_1 = require("@atproto/repo");
16
-
const vibe_monitor_1 = require("./vibe-monitor");
17
-
class FixedFirehoseMonitor {
18
-
constructor(agent) {
19
-
this.ws = null;
20
-
this.reconnectTimeout = null;
21
-
this.statsInterval = null;
22
-
this.messageCount = 0;
23
-
this.vibeDetectionCount = 0;
24
-
this.errorCount = 0;
25
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
26
-
}
27
-
start() {
28
-
return __awaiter(this, void 0, void 0, function* () {
29
-
console.log('🔥 Starting fixed Bluesky Firehose monitoring for #vibe-* hashtags...');
30
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
31
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
32
-
this.ws = new ws_1.WebSocket(firehoseUrl);
33
-
this.ws.on('open', () => {
34
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
35
-
this.messageCount = 0;
36
-
this.vibeDetectionCount = 0;
37
-
this.errorCount = 0;
38
-
// Log stats every 30 seconds
39
-
this.statsInterval = setInterval(() => {
40
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
41
-
}, 30000);
42
-
});
43
-
this.ws.on('message', (data) => __awaiter(this, void 0, void 0, function* () {
44
-
this.messageCount++;
45
-
try {
46
-
// AT Protocol uses framed messages
47
-
// First decode the frame header
48
-
const [header, remainder] = this.decodeVarint(data);
49
-
// Then decode the actual message
50
-
const messageBytes = data.slice(data.length - remainder);
51
-
const message = (0, cbor_x_1.decode)(messageBytes);
52
-
// Handle commit messages
53
-
if (message && message.$type === 'com.atproto.sync.subscribeRepos#commit') {
54
-
yield this.handleCommit(message);
55
-
}
56
-
}
57
-
catch (error) {
58
-
// Only log every 100th error to avoid spam
59
-
if (this.errorCount % 100 === 0) {
60
-
console.error('Error processing message:', error);
61
-
}
62
-
this.errorCount++;
63
-
}
64
-
}));
65
-
this.ws.on('error', (error) => {
66
-
console.error('❌ Firehose WebSocket error:', error.message);
67
-
});
68
-
this.ws.on('close', (code, reason) => {
69
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
70
-
console.log(' Reconnecting in 5 seconds...');
71
-
if (this.statsInterval) {
72
-
clearInterval(this.statsInterval);
73
-
this.statsInterval = null;
74
-
}
75
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
76
-
});
77
-
});
78
-
}
79
-
decodeVarint(buf) {
80
-
let value = 0;
81
-
let shift = 0;
82
-
let byte;
83
-
let i = 0;
84
-
do {
85
-
byte = buf[i++];
86
-
value |= (byte & 0x7f) << shift;
87
-
shift += 7;
88
-
} while (byte & 0x80);
89
-
return [value, buf.length - i];
90
-
}
91
-
handleCommit(commit) {
92
-
return __awaiter(this, void 0, void 0, function* () {
93
-
var _a;
94
-
try {
95
-
if (!commit.blocks)
96
-
return;
97
-
// Parse the CAR file from blocks
98
-
const car = yield (0, repo_1.readCar)(commit.blocks);
99
-
// Process each operation
100
-
for (const op of commit.ops || []) {
101
-
// We only care about post creates
102
-
if (op.action === 'create' && ((_a = op.path) === null || _a === void 0 ? void 0 : _a.includes('app.bsky.feed.post'))) {
103
-
try {
104
-
// Get the record bytes from the CAR file
105
-
const recordBytes = car.blocks.get(op.cid);
106
-
if (!recordBytes)
107
-
continue;
108
-
// Convert CBOR to record
109
-
const record = (0, repo_1.cborToLexRecord)(recordBytes);
110
-
// Check for #vibe- hashtags
111
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
112
-
this.vibeDetectionCount++;
113
-
const authorDid = commit.repo;
114
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
115
-
console.log(` Author DID: ${authorDid}`);
116
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
117
-
console.log(` Path: ${op.path}`);
118
-
// Process the vibe mention
119
-
const postUri = `at://${authorDid}/${op.path}`;
120
-
yield this.vibeMonitor.checkPost(record.text, authorDid, postUri);
121
-
}
122
-
}
123
-
catch (e) {
124
-
// Record-specific error
125
-
if (this.errorCount % 100 === 0) {
126
-
console.error('Error processing record:', e);
127
-
}
128
-
this.errorCount++;
129
-
}
130
-
}
131
-
}
132
-
}
133
-
catch (error) {
134
-
// CAR parsing error
135
-
if (this.errorCount % 100 === 0) {
136
-
console.error('Error handling commit:', error);
137
-
}
138
-
this.errorCount++;
139
-
}
140
-
});
141
-
}
142
-
stop() {
143
-
if (this.reconnectTimeout) {
144
-
clearTimeout(this.reconnectTimeout);
145
-
this.reconnectTimeout = null;
146
-
}
147
-
if (this.statsInterval) {
148
-
clearInterval(this.statsInterval);
149
-
this.statsInterval = null;
150
-
}
151
-
if (this.ws) {
152
-
this.ws.close();
153
-
this.ws = null;
154
-
}
155
-
}
156
-
}
157
-
exports.FixedFirehoseMonitor = FixedFirehoseMonitor;
-162
src/firehose-fixed.ts
-162
src/firehose-fixed.ts
···
1
-
import { WebSocket } from 'ws';
2
-
import { decode } from 'cbor-x';
3
-
import { readCar, cborToLexRecord } from '@atproto/repo';
4
-
import { VibeMonitor } from './vibe-monitor';
5
-
import { BskyAgent } from '@atproto/api';
6
-
7
-
export class FixedFirehoseMonitor {
8
-
private ws: WebSocket | null = null;
9
-
private vibeMonitor: VibeMonitor;
10
-
private reconnectTimeout: NodeJS.Timeout | null = null;
11
-
private statsInterval: NodeJS.Timeout | null = null;
12
-
private messageCount = 0;
13
-
private vibeDetectionCount = 0;
14
-
private errorCount = 0;
15
-
16
-
constructor(agent: BskyAgent) {
17
-
this.vibeMonitor = new VibeMonitor(agent);
18
-
}
19
-
20
-
async start() {
21
-
console.log('🔥 Starting fixed Bluesky Firehose monitoring for #vibe-* hashtags...');
22
-
23
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
24
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
25
-
26
-
this.ws = new WebSocket(firehoseUrl);
27
-
28
-
this.ws.on('open', () => {
29
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
30
-
this.messageCount = 0;
31
-
this.vibeDetectionCount = 0;
32
-
this.errorCount = 0;
33
-
34
-
// Log stats every 30 seconds
35
-
this.statsInterval = setInterval(() => {
36
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
37
-
}, 30000);
38
-
});
39
-
40
-
this.ws.on('message', async (data: Buffer) => {
41
-
this.messageCount++;
42
-
43
-
try {
44
-
// AT Protocol uses framed messages
45
-
// First decode the frame header
46
-
const [header, remainder] = this.decodeVarint(data);
47
-
48
-
// Then decode the actual message
49
-
const messageBytes = data.slice(data.length - remainder);
50
-
const message = decode(messageBytes);
51
-
52
-
// Handle commit messages
53
-
if (message && message.$type === 'com.atproto.sync.subscribeRepos#commit') {
54
-
await this.handleCommit(message);
55
-
}
56
-
} catch (error) {
57
-
// Only log every 100th error to avoid spam
58
-
if (this.errorCount % 100 === 0) {
59
-
console.error('Error processing message:', error);
60
-
}
61
-
this.errorCount++;
62
-
}
63
-
});
64
-
65
-
this.ws.on('error', (error: any) => {
66
-
console.error('❌ Firehose WebSocket error:', error.message);
67
-
});
68
-
69
-
this.ws.on('close', (code, reason) => {
70
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
71
-
console.log(' Reconnecting in 5 seconds...');
72
-
73
-
if (this.statsInterval) {
74
-
clearInterval(this.statsInterval);
75
-
this.statsInterval = null;
76
-
}
77
-
78
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
79
-
});
80
-
}
81
-
82
-
private decodeVarint(buf: Buffer): [number, number] {
83
-
let value = 0;
84
-
let shift = 0;
85
-
let byte: number;
86
-
let i = 0;
87
-
88
-
do {
89
-
byte = buf[i++];
90
-
value |= (byte & 0x7f) << shift;
91
-
shift += 7;
92
-
} while (byte & 0x80);
93
-
94
-
return [value, buf.length - i];
95
-
}
96
-
97
-
private async handleCommit(commit: any) {
98
-
try {
99
-
if (!commit.blocks) return;
100
-
101
-
// Parse the CAR file from blocks
102
-
const car = await readCar(commit.blocks);
103
-
104
-
// Process each operation
105
-
for (const op of commit.ops || []) {
106
-
// We only care about post creates
107
-
if (op.action === 'create' && op.path?.includes('app.bsky.feed.post')) {
108
-
try {
109
-
// Get the record bytes from the CAR file
110
-
const recordBytes = car.blocks.get(op.cid);
111
-
if (!recordBytes) continue;
112
-
113
-
// Convert CBOR to record
114
-
const record = cborToLexRecord(recordBytes);
115
-
116
-
// Check for #vibe- hashtags
117
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
118
-
this.vibeDetectionCount++;
119
-
const authorDid = commit.repo;
120
-
121
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
122
-
console.log(` Author DID: ${authorDid}`);
123
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
124
-
console.log(` Path: ${op.path}`);
125
-
126
-
// Process the vibe mention
127
-
const postUri = `at://${authorDid}/${op.path}`;
128
-
await this.vibeMonitor.checkPost(record.text, authorDid, postUri);
129
-
}
130
-
} catch (e) {
131
-
// Record-specific error
132
-
if (this.errorCount % 100 === 0) {
133
-
console.error('Error processing record:', e);
134
-
}
135
-
this.errorCount++;
136
-
}
137
-
}
138
-
}
139
-
} catch (error) {
140
-
// CAR parsing error
141
-
if (this.errorCount % 100 === 0) {
142
-
console.error('Error handling commit:', error);
143
-
}
144
-
this.errorCount++;
145
-
}
146
-
}
147
-
148
-
stop() {
149
-
if (this.reconnectTimeout) {
150
-
clearTimeout(this.reconnectTimeout);
151
-
this.reconnectTimeout = null;
152
-
}
153
-
if (this.statsInterval) {
154
-
clearInterval(this.statsInterval);
155
-
this.statsInterval = null;
156
-
}
157
-
if (this.ws) {
158
-
this.ws.close();
159
-
this.ws = null;
160
-
}
161
-
}
162
-
}
-72
src/firehose-with-atproto-sync.js
-72
src/firehose-with-atproto-sync.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.ATProtoFirehoseMonitor = void 0;
13
-
const sync_1 = require("@atproto/sync");
14
-
const vibe_monitor_1 = require("./vibe-monitor");
15
-
class ATProtoFirehoseMonitor {
16
-
constructor(agent) {
17
-
this.messageCount = 0;
18
-
this.vibeDetectionCount = 0;
19
-
this.statsInterval = null;
20
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
21
-
this.firehose = new sync_1.Firehose({
22
-
filterCollections: ['app.bsky.feed.post'],
23
-
handleEvent: (evt) => __awaiter(this, void 0, void 0, function* () {
24
-
this.messageCount++;
25
-
if (evt.event === 'create') {
26
-
const ops = (0, sync_1.getOpsByType)(evt);
27
-
for (const op of ops.posts.creates) {
28
-
try {
29
-
const record = op.record;
30
-
// Check for #vibe- hashtags
31
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
32
-
this.vibeDetectionCount++;
33
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
34
-
console.log(` Author DID: ${op.author}`);
35
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
36
-
console.log(` URI: ${op.uri}`);
37
-
// Process the vibe mention
38
-
yield this.vibeMonitor.checkPost(record.text, op.author, op.uri);
39
-
}
40
-
}
41
-
catch (e) {
42
-
console.error('Error processing post:', e);
43
-
}
44
-
}
45
-
}
46
-
}),
47
-
onError: (error) => {
48
-
console.error('Firehose error:', error);
49
-
}
50
-
});
51
-
}
52
-
start() {
53
-
return __awaiter(this, void 0, void 0, function* () {
54
-
console.log('🔥 Starting AT Protocol Sync Firehose monitoring for #vibe-* hashtags...');
55
-
// Start stats logging
56
-
this.statsInterval = setInterval(() => {
57
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections`);
58
-
}, 30000);
59
-
// Start the firehose
60
-
yield this.firehose.start();
61
-
console.log('📡 Connected to AT Protocol Firehose - monitoring all posts for #vibe-*');
62
-
});
63
-
}
64
-
stop() {
65
-
if (this.statsInterval) {
66
-
clearInterval(this.statsInterval);
67
-
this.statsInterval = null;
68
-
}
69
-
this.firehose.stop();
70
-
}
71
-
}
72
-
exports.ATProtoFirehoseMonitor = ATProtoFirehoseMonitor;
-71
src/firehose-with-atproto-sync.ts
-71
src/firehose-with-atproto-sync.ts
···
1
-
import { Firehose, getOpsByType } from '@atproto/sync';
2
-
import { VibeMonitor } from './vibe-monitor';
3
-
import { BskyAgent } from '@atproto/api';
4
-
5
-
export class ATProtoFirehoseMonitor {
6
-
private firehose: Firehose;
7
-
private vibeMonitor: VibeMonitor;
8
-
private messageCount = 0;
9
-
private vibeDetectionCount = 0;
10
-
private statsInterval: NodeJS.Timeout | null = null;
11
-
12
-
constructor(agent: BskyAgent) {
13
-
this.vibeMonitor = new VibeMonitor(agent);
14
-
15
-
this.firehose = new Firehose({
16
-
filterCollections: ['app.bsky.feed.post'],
17
-
handleEvent: async (evt) => {
18
-
this.messageCount++;
19
-
20
-
if (evt.event === 'create') {
21
-
const ops = getOpsByType(evt);
22
-
23
-
for (const op of ops.posts.creates) {
24
-
try {
25
-
const record = op.record;
26
-
27
-
// Check for #vibe- hashtags
28
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
29
-
this.vibeDetectionCount++;
30
-
31
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
32
-
console.log(` Author DID: ${op.author}`);
33
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
34
-
console.log(` URI: ${op.uri}`);
35
-
36
-
// Process the vibe mention
37
-
await this.vibeMonitor.checkPost(record.text, op.author, op.uri);
38
-
}
39
-
} catch (e) {
40
-
console.error('Error processing post:', e);
41
-
}
42
-
}
43
-
}
44
-
},
45
-
onError: (error) => {
46
-
console.error('Firehose error:', error);
47
-
}
48
-
});
49
-
}
50
-
51
-
async start() {
52
-
console.log('🔥 Starting AT Protocol Sync Firehose monitoring for #vibe-* hashtags...');
53
-
54
-
// Start stats logging
55
-
this.statsInterval = setInterval(() => {
56
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections`);
57
-
}, 30000);
58
-
59
-
// Start the firehose
60
-
await this.firehose.start();
61
-
console.log('📡 Connected to AT Protocol Firehose - monitoring all posts for #vibe-*');
62
-
}
63
-
64
-
stop() {
65
-
if (this.statsInterval) {
66
-
clearInterval(this.statsInterval);
67
-
this.statsInterval = null;
68
-
}
69
-
this.firehose.stop();
70
-
}
71
-
}
-103
src/firehose-with-skyware.js
-103
src/firehose-with-skyware.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.SkywareFirehoseMonitor = void 0;
13
-
const firehose_1 = require("@skyware/firehose");
14
-
const ws_1 = require("ws");
15
-
const vibe_monitor_1 = require("./vibe-monitor");
16
-
class SkywareFirehoseMonitor {
17
-
constructor(agent) {
18
-
this.messageCount = 0;
19
-
this.vibeDetectionCount = 0;
20
-
this.errorCount = 0;
21
-
this.statsInterval = null;
22
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
23
-
this.firehose = new firehose_1.Firehose({
24
-
ws: ws_1.WebSocket,
25
-
relay: 'wss://bsky.network'
26
-
});
27
-
}
28
-
start() {
29
-
return __awaiter(this, void 0, void 0, function* () {
30
-
console.log('🔥 Starting Skyware Firehose monitoring for #vibe-* hashtags...');
31
-
// Set up event handlers
32
-
this.firehose.on('open', () => {
33
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
34
-
this.messageCount = 0;
35
-
this.vibeDetectionCount = 0;
36
-
this.errorCount = 0;
37
-
// Log stats every 30 seconds
38
-
this.statsInterval = setInterval(() => {
39
-
console.log(`📊 Firehose stats: ${this.messageCount} messages, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
40
-
}, 30000);
41
-
});
42
-
this.firehose.on('commit', (commit) => __awaiter(this, void 0, void 0, function* () {
43
-
this.messageCount++;
44
-
try {
45
-
// Process operations in the commit
46
-
for (const op of commit.ops || []) {
47
-
// We only care about post creates
48
-
if (op.action === 'create' && op.path.includes('app.bsky.feed.post')) {
49
-
const record = op.record;
50
-
// Check for #vibe- hashtags
51
-
if ((record === null || record === void 0 ? void 0 : record.text) && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
52
-
this.vibeDetectionCount++;
53
-
const authorDid = commit.repo;
54
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
55
-
console.log(` Author DID: ${authorDid}`);
56
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
57
-
console.log(` Path: ${op.path}`);
58
-
// Process the vibe mention
59
-
const postUri = `at://${authorDid}/${op.path}`;
60
-
yield this.vibeMonitor.checkPost(record.text, authorDid, postUri);
61
-
}
62
-
}
63
-
}
64
-
}
65
-
catch (error) {
66
-
// Only log every 100th error to avoid spam
67
-
if (this.errorCount % 100 === 0) {
68
-
console.error('Error processing commit:', error);
69
-
}
70
-
this.errorCount++;
71
-
}
72
-
}));
73
-
this.firehose.on('error', ({ error }) => {
74
-
// Only log every 100th error to avoid spam
75
-
if (this.errorCount % 100 === 0) {
76
-
console.error('Firehose error:', error);
77
-
}
78
-
this.errorCount++;
79
-
});
80
-
this.firehose.on('websocketError', ({ error }) => {
81
-
console.error('❌ WebSocket error:', error);
82
-
});
83
-
this.firehose.on('close', (cursor) => {
84
-
console.log(`🔌 Firehose disconnected at cursor: ${cursor}`);
85
-
console.log(' The firehose will auto-reconnect...');
86
-
if (this.statsInterval) {
87
-
clearInterval(this.statsInterval);
88
-
this.statsInterval = null;
89
-
}
90
-
});
91
-
// Start the firehose
92
-
this.firehose.start();
93
-
});
94
-
}
95
-
stop() {
96
-
if (this.statsInterval) {
97
-
clearInterval(this.statsInterval);
98
-
this.statsInterval = null;
99
-
}
100
-
this.firehose.close();
101
-
}
102
-
}
103
-
exports.SkywareFirehoseMonitor = SkywareFirehoseMonitor;
-106
src/firehose-with-skyware.ts
-106
src/firehose-with-skyware.ts
···
1
-
import { Firehose } from '@skyware/firehose';
2
-
import { WebSocket } from 'ws';
3
-
import { VibeMonitor } from './vibe-monitor';
4
-
import { BskyAgent } from '@atproto/api';
5
-
6
-
export class SkywareFirehoseMonitor {
7
-
private firehose: Firehose;
8
-
private vibeMonitor: VibeMonitor;
9
-
private messageCount = 0;
10
-
private vibeDetectionCount = 0;
11
-
private errorCount = 0;
12
-
private statsInterval: NodeJS.Timeout | null = null;
13
-
14
-
constructor(agent: BskyAgent) {
15
-
this.vibeMonitor = new VibeMonitor(agent);
16
-
this.firehose = new Firehose({
17
-
ws: WebSocket as any,
18
-
relay: 'wss://bsky.network'
19
-
});
20
-
}
21
-
22
-
async start() {
23
-
console.log('🔥 Starting Skyware Firehose monitoring for #vibe-* hashtags...');
24
-
25
-
// Set up event handlers
26
-
this.firehose.on('open', () => {
27
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
28
-
this.messageCount = 0;
29
-
this.vibeDetectionCount = 0;
30
-
this.errorCount = 0;
31
-
32
-
// Log stats every 30 seconds
33
-
this.statsInterval = setInterval(() => {
34
-
console.log(`📊 Firehose stats: ${this.messageCount} messages, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
35
-
}, 30000);
36
-
});
37
-
38
-
this.firehose.on('commit', async (commit: any) => {
39
-
this.messageCount++;
40
-
41
-
try {
42
-
// Process operations in the commit
43
-
for (const op of commit.ops || []) {
44
-
// We only care about post creates
45
-
if (op.action === 'create' && op.path.includes('app.bsky.feed.post')) {
46
-
const record = op.record;
47
-
48
-
// Check for #vibe- hashtags
49
-
if (record?.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
50
-
this.vibeDetectionCount++;
51
-
const authorDid = commit.repo;
52
-
53
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
54
-
console.log(` Author DID: ${authorDid}`);
55
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
56
-
console.log(` Path: ${op.path}`);
57
-
58
-
// Process the vibe mention
59
-
const postUri = `at://${authorDid}/${op.path}`;
60
-
await this.vibeMonitor.checkPost(record.text, authorDid, postUri);
61
-
}
62
-
}
63
-
}
64
-
} catch (error) {
65
-
// Only log every 100th error to avoid spam
66
-
if (this.errorCount % 100 === 0) {
67
-
console.error('Error processing commit:', error);
68
-
}
69
-
this.errorCount++;
70
-
}
71
-
});
72
-
73
-
this.firehose.on('error', ({ error }) => {
74
-
// Only log every 100th error to avoid spam
75
-
if (this.errorCount % 100 === 0) {
76
-
console.error('Firehose error:', error);
77
-
}
78
-
this.errorCount++;
79
-
});
80
-
81
-
this.firehose.on('websocketError', ({ error }) => {
82
-
console.error('❌ WebSocket error:', error);
83
-
});
84
-
85
-
this.firehose.on('close', (cursor) => {
86
-
console.log(`🔌 Firehose disconnected at cursor: ${cursor}`);
87
-
console.log(' The firehose will auto-reconnect...');
88
-
89
-
if (this.statsInterval) {
90
-
clearInterval(this.statsInterval);
91
-
this.statsInterval = null;
92
-
}
93
-
});
94
-
95
-
// Start the firehose
96
-
this.firehose.start();
97
-
}
98
-
99
-
stop() {
100
-
if (this.statsInterval) {
101
-
clearInterval(this.statsInterval);
102
-
this.statsInterval = null;
103
-
}
104
-
this.firehose.close();
105
-
}
106
-
}
-147
src/firehose.js
-147
src/firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.BlipAggregator = exports.FirehoseSubscriber = void 0;
13
-
const ws_1 = require("ws");
14
-
const database_1 = require("./database");
15
-
const schemas_1 = require("./schemas");
16
-
const vibe_monitor_1 = require("./vibe-monitor");
17
-
class FirehoseSubscriber {
18
-
constructor(agent) {
19
-
this.ws = null;
20
-
this.agent = agent;
21
-
}
22
-
start() {
23
-
return __awaiter(this, void 0, void 0, function* () {
24
-
console.log('🔥 Starting Firehose subscription...');
25
-
// Connect to the AT Protocol firehose
26
-
this.ws = new ws_1.WebSocket('wss://bsky.social/xrpc/com.atproto.sync.subscribeRepos');
27
-
this.ws.on('open', () => {
28
-
console.log('📡 Connected to Firehose');
29
-
});
30
-
this.ws.on('message', (data) => __awaiter(this, void 0, void 0, function* () {
31
-
try {
32
-
// The firehose sends CAR files, but for now we'll use a simpler approach
33
-
// In production, you'd parse the CAR files properly
34
-
// For now, let's poll known users instead
35
-
}
36
-
catch (error) {
37
-
console.error('Error processing firehose message:', error);
38
-
}
39
-
}));
40
-
this.ws.on('error', (error) => {
41
-
console.error('Firehose error:', error);
42
-
});
43
-
this.ws.on('close', () => {
44
-
console.log('Firehose connection closed, reconnecting...');
45
-
setTimeout(() => this.start(), 5000);
46
-
});
47
-
});
48
-
}
49
-
stop() {
50
-
if (this.ws) {
51
-
this.ws.close();
52
-
this.ws = null;
53
-
}
54
-
}
55
-
}
56
-
exports.FirehoseSubscriber = FirehoseSubscriber;
57
-
// Simpler approach for now: poll known users
58
-
class BlipAggregator {
59
-
constructor(agent) {
60
-
var _a;
61
-
this.knownUsers = new Set();
62
-
this.agent = agent;
63
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
64
-
// Add your own DID to start
65
-
if ((_a = agent.session) === null || _a === void 0 ? void 0 : _a.did) {
66
-
this.knownUsers.add(agent.session.did);
67
-
}
68
-
}
69
-
aggregateBlips() {
70
-
return __awaiter(this, void 0, void 0, function* () {
71
-
var _a, _b;
72
-
console.log('🔍 Aggregating blips and vibes from known users...');
73
-
for (const did of this.knownUsers) {
74
-
try {
75
-
// Get user profile
76
-
const profile = yield this.agent.getProfile({ actor: did });
77
-
// List their vibes
78
-
const vibeResponse = yield this.agent.com.atproto.repo.listRecords({
79
-
repo: did,
80
-
collection: schemas_1.VIBE_NSID,
81
-
limit: 100,
82
-
});
83
-
for (const record of vibeResponse.data.records) {
84
-
const vibe = record.value;
85
-
database_1.vibeDb.insertVibe({
86
-
uri: record.uri,
87
-
cid: record.cid,
88
-
creatorDid: did,
89
-
name: vibe.name,
90
-
mood: vibe.mood,
91
-
emoji: vibe.emoji,
92
-
color: vibe.color,
93
-
memberCount: vibe.memberCount || 0,
94
-
createdAt: vibe.createdAt,
95
-
});
96
-
}
97
-
console.log(`✅ Indexed ${vibeResponse.data.records.length} vibes from @${profile.data.handle}`);
98
-
// List their blips
99
-
const response = yield this.agent.com.atproto.repo.listRecords({
100
-
repo: did,
101
-
collection: schemas_1.BLIP_NSID,
102
-
limit: 100,
103
-
});
104
-
for (const record of response.data.records) {
105
-
const blip = record.value;
106
-
// Check for vibe hashtags in blip content
107
-
const textToCheck = `${blip.title || ''} ${blip.body || ''}`;
108
-
yield this.vibeMonitor.checkPost(textToCheck, did, record.uri);
109
-
database_1.blipDb.insertBlip({
110
-
uri: record.uri,
111
-
cid: record.cid,
112
-
authorDid: did,
113
-
authorHandle: profile.data.handle,
114
-
authorDisplayName: profile.data.displayName,
115
-
title: blip.title,
116
-
body: blip.body,
117
-
url: blip.url,
118
-
tags: blip.tags || [],
119
-
vibeUri: (_a = blip.vibe) === null || _a === void 0 ? void 0 : _a.uri,
120
-
vibeName: (_b = blip.vibe) === null || _b === void 0 ? void 0 : _b.name,
121
-
grooves: blip.grooves || 0,
122
-
createdAt: blip.createdAt,
123
-
});
124
-
}
125
-
console.log(`✅ Indexed ${response.data.records.length} blips from @${profile.data.handle}`);
126
-
}
127
-
catch (error) {
128
-
console.error(`Failed to aggregate blips from ${did}:`, error);
129
-
}
130
-
}
131
-
});
132
-
}
133
-
addUser(did) {
134
-
this.knownUsers.add(did);
135
-
}
136
-
startPolling() {
137
-
return __awaiter(this, arguments, void 0, function* (intervalMs = 60000) {
138
-
// Initial aggregation
139
-
yield this.aggregateBlips();
140
-
// Poll periodically
141
-
setInterval(() => {
142
-
this.aggregateBlips();
143
-
}, intervalMs);
144
-
});
145
-
}
146
-
}
147
-
exports.BlipAggregator = BlipAggregator;
-152
src/firehose.ts
-152
src/firehose.ts
···
1
-
import { WebSocket } from 'ws';
2
-
import { blipDb, vibeDb } from './database';
3
-
import { BLIP_NSID, VIBE_NSID } from './schemas';
4
-
import { BskyAgent } from '@atproto/api';
5
-
import { VibeMonitor } from './vibe-monitor';
6
-
7
-
export class FirehoseSubscriber {
8
-
private ws: WebSocket | null = null;
9
-
private agent: BskyAgent;
10
-
11
-
constructor(agent: BskyAgent) {
12
-
this.agent = agent;
13
-
}
14
-
15
-
async start() {
16
-
console.log('🔥 Starting Firehose subscription...');
17
-
18
-
// Connect to the AT Protocol firehose
19
-
this.ws = new WebSocket('wss://bsky.social/xrpc/com.atproto.sync.subscribeRepos');
20
-
21
-
this.ws.on('open', () => {
22
-
console.log('📡 Connected to Firehose');
23
-
});
24
-
25
-
this.ws.on('message', async (data: Buffer) => {
26
-
try {
27
-
// The firehose sends CAR files, but for now we'll use a simpler approach
28
-
// In production, you'd parse the CAR files properly
29
-
// For now, let's poll known users instead
30
-
} catch (error) {
31
-
console.error('Error processing firehose message:', error);
32
-
}
33
-
});
34
-
35
-
this.ws.on('error', (error) => {
36
-
console.error('Firehose error:', error);
37
-
});
38
-
39
-
this.ws.on('close', () => {
40
-
console.log('Firehose connection closed, reconnecting...');
41
-
setTimeout(() => this.start(), 5000);
42
-
});
43
-
}
44
-
45
-
stop() {
46
-
if (this.ws) {
47
-
this.ws.close();
48
-
this.ws = null;
49
-
}
50
-
}
51
-
}
52
-
53
-
// Simpler approach for now: poll known users
54
-
export class BlipAggregator {
55
-
private agent: BskyAgent;
56
-
private knownUsers: Set<string> = new Set();
57
-
private vibeMonitor: VibeMonitor;
58
-
59
-
constructor(agent: BskyAgent) {
60
-
this.agent = agent;
61
-
this.vibeMonitor = new VibeMonitor(agent);
62
-
// Add your own DID to start
63
-
if (agent.session?.did) {
64
-
this.knownUsers.add(agent.session.did);
65
-
}
66
-
}
67
-
68
-
async aggregateBlips() {
69
-
console.log('🔍 Aggregating blips and vibes from known users...');
70
-
71
-
for (const did of this.knownUsers) {
72
-
try {
73
-
// Get user profile
74
-
const profile = await this.agent.getProfile({ actor: did });
75
-
76
-
// List their vibes
77
-
const vibeResponse = await this.agent.com.atproto.repo.listRecords({
78
-
repo: did,
79
-
collection: VIBE_NSID,
80
-
limit: 100,
81
-
});
82
-
83
-
for (const record of vibeResponse.data.records) {
84
-
const vibe = record.value as any;
85
-
86
-
vibeDb.insertVibe({
87
-
uri: record.uri,
88
-
cid: record.cid,
89
-
creatorDid: did,
90
-
name: vibe.name,
91
-
mood: vibe.mood,
92
-
emoji: vibe.emoji,
93
-
color: vibe.color,
94
-
memberCount: vibe.memberCount || 0,
95
-
createdAt: vibe.createdAt,
96
-
});
97
-
}
98
-
99
-
console.log(`✅ Indexed ${vibeResponse.data.records.length} vibes from @${profile.data.handle}`);
100
-
101
-
// List their blips
102
-
const response = await this.agent.com.atproto.repo.listRecords({
103
-
repo: did,
104
-
collection: BLIP_NSID,
105
-
limit: 100,
106
-
});
107
-
108
-
for (const record of response.data.records) {
109
-
const blip = record.value as any;
110
-
111
-
// Check for vibe hashtags in blip content
112
-
const textToCheck = `${blip.title || ''} ${blip.body || ''}`;
113
-
await this.vibeMonitor.checkPost(textToCheck, did, record.uri);
114
-
115
-
blipDb.insertBlip({
116
-
uri: record.uri,
117
-
cid: record.cid,
118
-
authorDid: did,
119
-
authorHandle: profile.data.handle,
120
-
authorDisplayName: profile.data.displayName,
121
-
title: blip.title,
122
-
body: blip.body,
123
-
url: blip.url,
124
-
tags: blip.tags || [],
125
-
vibeUri: blip.vibe?.uri,
126
-
vibeName: blip.vibe?.name,
127
-
grooves: blip.grooves || 0,
128
-
createdAt: blip.createdAt,
129
-
});
130
-
}
131
-
132
-
console.log(`✅ Indexed ${response.data.records.length} blips from @${profile.data.handle}`);
133
-
} catch (error) {
134
-
console.error(`Failed to aggregate blips from ${did}:`, error);
135
-
}
136
-
}
137
-
}
138
-
139
-
addUser(did: string) {
140
-
this.knownUsers.add(did);
141
-
}
142
-
143
-
async startPolling(intervalMs = 60000) {
144
-
// Initial aggregation
145
-
await this.aggregateBlips();
146
-
147
-
// Poll periodically
148
-
setInterval(() => {
149
-
this.aggregateBlips();
150
-
}, intervalMs);
151
-
}
152
-
}
-45
src/index.js
-45
src/index.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
const agent_1 = require("./agent");
13
-
const blips_1 = require("./blips");
14
-
function main() {
15
-
return __awaiter(this, void 0, void 0, function* () {
16
-
try {
17
-
const blonkAgent = new agent_1.BlonkAgent();
18
-
yield blonkAgent.login();
19
-
const agent = blonkAgent.getAgent();
20
-
const blipManager = new blips_1.BlipManager(agent);
21
-
console.log('\n📡 Blonk - Vibe Radar');
22
-
console.log('=====================\n');
23
-
console.log('Transmitting a test blip...');
24
-
const blipUri = yield blipManager.createBlip('Welcome to the Blonk Vibe Radar!', 'This is the first blip on Blonk, where vibes are tracked on the radar.', 'https://atproto.com', ['welcome', 'atproto', 'blonk']);
25
-
console.log(`Blip transmitted with URI: ${blipUri}\n`);
26
-
console.log('Scanning radar for recent blips...');
27
-
const blips = yield blipManager.getBlips(10);
28
-
console.log(`\n📡 ${blips.length} blips on the radar:`);
29
-
blips.forEach((blip, index) => {
30
-
console.log(`\n${index + 1}. ${blip.title}`);
31
-
if (blip.body)
32
-
console.log(` ${blip.body.substring(0, 100)}...`);
33
-
if (blip.url)
34
-
console.log(` 🔗 ${blip.url}`);
35
-
console.log(` 📅 ${new Date(blip.createdAt).toLocaleString()}`);
36
-
console.log(` ✨ ${blip.fluffs} fluffs`);
37
-
});
38
-
}
39
-
catch (error) {
40
-
console.error('Error:', error);
41
-
process.exit(1);
42
-
}
43
-
});
44
-
}
45
-
main();
-42
src/index.ts
-42
src/index.ts
···
1
-
import { BlonkAgent } from './agent';
2
-
import { BlipManager } from './blips';
3
-
4
-
async function main() {
5
-
try {
6
-
const blonkAgent = new BlonkAgent();
7
-
await blonkAgent.login();
8
-
9
-
const agent = blonkAgent.getAgent();
10
-
const blipManager = new BlipManager(agent);
11
-
12
-
console.log('\n📡 Blonk - Vibe Radar');
13
-
console.log('=====================\n');
14
-
15
-
console.log('Transmitting a test blip...');
16
-
const blipUri = await blipManager.createBlip(
17
-
'Welcome to the Blonk Vibe Radar!',
18
-
'This is the first blip on Blonk, where vibes are tracked on the radar.',
19
-
'https://atproto.com',
20
-
['welcome', 'atproto', 'blonk']
21
-
);
22
-
console.log(`Blip transmitted with URI: ${blipUri}\n`);
23
-
24
-
console.log('Scanning radar for recent blips...');
25
-
const blips = await blipManager.getBlips(10);
26
-
27
-
console.log(`\n📡 ${blips.length} blips on the radar:`);
28
-
blips.forEach((blip, index) => {
29
-
console.log(`\n${index + 1}. ${blip.title}`);
30
-
if (blip.body) console.log(` ${blip.body.substring(0, 100)}...`);
31
-
if (blip.url) console.log(` 🔗 ${blip.url}`);
32
-
console.log(` 📅 ${new Date(blip.createdAt).toLocaleString()}`);
33
-
console.log(` ✨ ${blip.grooves} grooves`);
34
-
});
35
-
36
-
} catch (error) {
37
-
console.error('Error:', error);
38
-
process.exit(1);
39
-
}
40
-
}
41
-
42
-
main();
-28
src/post-test-vibe.js
-28
src/post-test-vibe.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
const agent_1 = require("./agent");
13
-
function postTestVibe() {
14
-
return __awaiter(this, void 0, void 0, function* () {
15
-
const agent = new agent_1.BlonkAgent();
16
-
yield agent.login();
17
-
const bskyAgent = agent.getAgent();
18
-
const testVibeName = `blonk_test_${Date.now()}`;
19
-
console.log(`Posting test vibe: #vibe-${testVibeName}`);
20
-
const result = yield bskyAgent.post({
21
-
text: `Testing Blonk vibe detection! #vibe-${testVibeName}`,
22
-
createdAt: new Date().toISOString(),
23
-
});
24
-
console.log('Posted:', result.uri);
25
-
console.log(`Now search for: #vibe-${testVibeName}`);
26
-
});
27
-
}
28
-
postTestVibe().catch(console.error);
-23
src/post-test-vibe.ts
-23
src/post-test-vibe.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { BlonkAgent } from './agent';
3
-
4
-
async function postTestVibe() {
5
-
const agent = new BlonkAgent();
6
-
await agent.login();
7
-
8
-
const bskyAgent = agent.getAgent();
9
-
10
-
const testVibeName = `blonk_test_${Date.now()}`;
11
-
12
-
console.log(`Posting test vibe: #vibe-${testVibeName}`);
13
-
14
-
const result = await bskyAgent.post({
15
-
text: `Testing Blonk vibe detection! #vibe-${testVibeName}`,
16
-
createdAt: new Date().toISOString(),
17
-
});
18
-
19
-
console.log('Posted:', result.uri);
20
-
console.log(`Now search for: #vibe-${testVibeName}`);
21
-
}
22
-
23
-
postTestVibe().catch(console.error);
-8
src/schemas.js
-8
src/schemas.js
···
1
-
"use strict";
2
-
Object.defineProperty(exports, "__esModule", { value: true });
3
-
exports.VIBE_MEMBER_NSID = exports.VIBE_NSID = exports.COMMENT_NSID = exports.GROOVE_NSID = exports.BLIP_NSID = void 0;
4
-
exports.BLIP_NSID = 'com.blonk.blip';
5
-
exports.GROOVE_NSID = 'com.blonk.groove';
6
-
exports.COMMENT_NSID = 'com.blonk.comment';
7
-
exports.VIBE_NSID = 'com.blonk.vibe';
8
-
exports.VIBE_MEMBER_NSID = 'com.blonk.vibeMember';
-58
src/schemas.ts
-58
src/schemas.ts
···
1
-
export const BLIP_NSID = 'com.blonk.blip';
2
-
export const GROOVE_NSID = 'com.blonk.groove';
3
-
export const COMMENT_NSID = 'com.blonk.comment';
4
-
export const VIBE_NSID = 'com.blonk.vibe';
5
-
export const VIBE_MEMBER_NSID = 'com.blonk.vibeMember';
6
-
7
-
export interface BlonkVibe {
8
-
name: string;
9
-
mood: string;
10
-
emoji?: string;
11
-
color?: string;
12
-
createdAt: string;
13
-
memberCount: number;
14
-
}
15
-
16
-
export interface BlonkVibeMember {
17
-
vibe: {
18
-
uri: string;
19
-
cid: string;
20
-
};
21
-
createdAt: string;
22
-
}
23
-
24
-
export interface BlonkBlip {
25
-
title: string;
26
-
body?: string;
27
-
url?: string;
28
-
tags?: string[];
29
-
vibe?: {
30
-
uri: string;
31
-
cid: string;
32
-
name?: string; // denormalized for display
33
-
};
34
-
createdAt: string;
35
-
grooves: number;
36
-
}
37
-
38
-
export interface BlonkGroove {
39
-
subject: {
40
-
uri: string;
41
-
cid: string;
42
-
};
43
-
grooveType: 'looks_good' | 'shit_rips';
44
-
createdAt: string;
45
-
}
46
-
47
-
export interface BlonkComment {
48
-
blip: {
49
-
uri: string;
50
-
cid: string;
51
-
};
52
-
parent?: {
53
-
uri: string;
54
-
cid: string;
55
-
};
56
-
text: string;
57
-
createdAt: string;
58
-
}
-70
src/search-monitor.js
-70
src/search-monitor.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.SearchMonitor = void 0;
13
-
const vibe_monitor_1 = require("./vibe-monitor");
14
-
class SearchMonitor {
15
-
constructor(agent) {
16
-
this.searchInterval = null;
17
-
this.agent = agent;
18
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
19
-
}
20
-
start() {
21
-
return __awaiter(this, void 0, void 0, function* () {
22
-
console.log('🔍 Starting periodic search for #vibe-* mentions...');
23
-
// Initial search
24
-
yield this.searchForVibeMentions();
25
-
// Search every 2 minutes
26
-
this.searchInterval = setInterval(() => {
27
-
this.searchForVibeMentions();
28
-
}, 2 * 60 * 1000);
29
-
});
30
-
}
31
-
searchForVibeMentions() {
32
-
return __awaiter(this, void 0, void 0, function* () {
33
-
try {
34
-
console.log('🔎 Searching Bluesky for #vibe-* mentions...');
35
-
// Search for posts containing #vibe-
36
-
const searchResponse = yield this.agent.app.bsky.feed.searchPosts({
37
-
q: 'vibe-',
38
-
limit: 100,
39
-
});
40
-
console.log(`Search returned ${searchResponse.data.posts.length} posts`);
41
-
let newMentions = 0;
42
-
for (const post of searchResponse.data.posts) {
43
-
const text = post.record.text;
44
-
const authorDid = post.author.did;
45
-
if (text && text.includes('#vibe-')) {
46
-
console.log(`Found #vibe-* mention by @${post.author.handle}: "${text.substring(0, 100)}..."`);
47
-
yield this.vibeMonitor.checkPost(text, authorDid, post.uri);
48
-
newMentions++;
49
-
}
50
-
}
51
-
if (newMentions > 0) {
52
-
console.log(`✅ Processed ${newMentions} new #vibe-* mentions`);
53
-
}
54
-
else {
55
-
console.log('No new #vibe-* mentions found in this search');
56
-
}
57
-
}
58
-
catch (error) {
59
-
console.error('Error searching for vibe mentions:', error);
60
-
}
61
-
});
62
-
}
63
-
stop() {
64
-
if (this.searchInterval) {
65
-
clearInterval(this.searchInterval);
66
-
this.searchInterval = null;
67
-
}
68
-
}
69
-
}
70
-
exports.SearchMonitor = SearchMonitor;
-75
src/search-monitor.ts
-75
src/search-monitor.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { VibeMonitor } from './vibe-monitor';
3
-
4
-
export class SearchMonitor {
5
-
private agent: BskyAgent;
6
-
private vibeMonitor: VibeMonitor;
7
-
private searchInterval: NodeJS.Timer | null = null;
8
-
9
-
constructor(agent: BskyAgent) {
10
-
this.agent = agent;
11
-
this.vibeMonitor = new VibeMonitor(agent);
12
-
}
13
-
14
-
async start() {
15
-
console.log('🔍 Starting periodic search for #vibe-* mentions...');
16
-
17
-
// Initial search
18
-
await this.searchForVibeMentions();
19
-
20
-
// Search every 2 minutes
21
-
this.searchInterval = setInterval(() => {
22
-
this.searchForVibeMentions();
23
-
}, 2 * 60 * 1000);
24
-
}
25
-
26
-
async searchForVibeMentions() {
27
-
try {
28
-
console.log('🔎 Searching Bluesky for #vibe-* mentions...');
29
-
30
-
// Search for posts containing #vibe-
31
-
const searchResponse = await this.agent.app.bsky.feed.searchPosts({
32
-
q: 'vibe-',
33
-
limit: 100,
34
-
});
35
-
36
-
console.log(`Search returned ${searchResponse.data.posts.length} posts`);
37
-
38
-
let newMentions = 0;
39
-
let debugCount = 0;
40
-
41
-
for (const post of searchResponse.data.posts) {
42
-
const record = post.record as any;
43
-
const text = record?.text;
44
-
const authorDid = post.author.did;
45
-
46
-
// Debug first few posts
47
-
if (debugCount < 3 && text && text.includes('vibe-')) {
48
-
console.log(`Debug: Post text contains 'vibe-': "${text.substring(0, 150)}"`);
49
-
debugCount++;
50
-
}
51
-
52
-
if (text && text.includes('#vibe-')) {
53
-
console.log(`Found #vibe-* mention by @${post.author.handle}: "${text.substring(0, 100)}..."`);
54
-
await this.vibeMonitor.checkPost(text, authorDid, post.uri);
55
-
newMentions++;
56
-
}
57
-
}
58
-
59
-
if (newMentions > 0) {
60
-
console.log(`✅ Processed ${newMentions} new #vibe-* mentions`);
61
-
} else {
62
-
console.log('No new #vibe-* mentions found in this search');
63
-
}
64
-
} catch (error) {
65
-
console.error('Error searching for vibe mentions:', error);
66
-
}
67
-
}
68
-
69
-
stop() {
70
-
if (this.searchInterval) {
71
-
clearInterval(this.searchInterval);
72
-
this.searchInterval = null;
73
-
}
74
-
}
75
-
}
-115
src/seed-vibes.js
-115
src/seed-vibes.js
···
1
-
"use strict";
2
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
-
if (k2 === undefined) k2 = k;
4
-
var desc = Object.getOwnPropertyDescriptor(m, k);
5
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
-
desc = { enumerable: true, get: function() { return m[k]; } };
7
-
}
8
-
Object.defineProperty(o, k2, desc);
9
-
}) : (function(o, m, k, k2) {
10
-
if (k2 === undefined) k2 = k;
11
-
o[k2] = m[k];
12
-
}));
13
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
15
-
}) : function(o, v) {
16
-
o["default"] = v;
17
-
});
18
-
var __importStar = (this && this.__importStar) || (function () {
19
-
var ownKeys = function(o) {
20
-
ownKeys = Object.getOwnPropertyNames || function (o) {
21
-
var ar = [];
22
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
-
return ar;
24
-
};
25
-
return ownKeys(o);
26
-
};
27
-
return function (mod) {
28
-
if (mod && mod.__esModule) return mod;
29
-
var result = {};
30
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
-
__setModuleDefault(result, mod);
32
-
return result;
33
-
};
34
-
})();
35
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
-
return new (P || (P = Promise))(function (resolve, reject) {
38
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
42
-
});
43
-
};
44
-
Object.defineProperty(exports, "__esModule", { value: true });
45
-
const agent_1 = require("./agent");
46
-
const vibes_1 = require("./vibes");
47
-
const dotenv = __importStar(require("dotenv"));
48
-
dotenv.config();
49
-
const sampleVibes = [
50
-
{
51
-
name: "sunset_sunglasses_struts",
52
-
mood: "confident, golden hour energy, main character walking down the street",
53
-
emoji: "😎",
54
-
color: "#FF6B6B"
55
-
},
56
-
{
57
-
name: "doinkin_right",
58
-
mood: "playful chaos, doing things correctly but in a silly way",
59
-
emoji: "🤪",
60
-
color: "#4ECDC4"
61
-
},
62
-
{
63
-
name: "dork_nerd_linkage",
64
-
mood: "excitedly sharing obscure knowledge, Wikipedia rabbit holes at 3am",
65
-
emoji: "🤓",
66
-
color: "#95E1D3"
67
-
},
68
-
{
69
-
name: "cozy_corner_contemplation",
70
-
mood: "rainy day thoughts, tea and blankets, gentle introspection",
71
-
emoji: "☕",
72
-
color: "#C7CEEA"
73
-
},
74
-
{
75
-
name: "midnight_snack_attack",
76
-
mood: "impulsive 2am decisions, standing in front of the fridge energy",
77
-
emoji: "🌙",
78
-
color: "#2C3E50"
79
-
},
80
-
{
81
-
name: "sparkle_hustle_flow",
82
-
mood: "getting things done but make it glamorous, productive but cute",
83
-
emoji: "✨",
84
-
color: "#FF6B9D"
85
-
}
86
-
];
87
-
function seedVibes() {
88
-
return __awaiter(this, void 0, void 0, function* () {
89
-
try {
90
-
const blonkAgent = new agent_1.BlonkAgent();
91
-
yield blonkAgent.login();
92
-
const agent = blonkAgent.getAgent();
93
-
const vibeManager = new vibes_1.VibeManager(agent);
94
-
console.log('🌈 Creating sample vibes...\n');
95
-
for (const vibe of sampleVibes) {
96
-
try {
97
-
const uri = yield vibeManager.createVibe(vibe.name, vibe.mood, vibe.emoji, vibe.color);
98
-
console.log(`✅ Created vibe: ${vibe.emoji} ${vibe.name}`);
99
-
console.log(` Mood: ${vibe.mood}`);
100
-
console.log(` URI: ${uri}\n`);
101
-
}
102
-
catch (error) {
103
-
console.error(`❌ Failed to create vibe "${vibe.name}":`, error);
104
-
}
105
-
}
106
-
console.log('🎉 Vibe seeding complete!');
107
-
console.log('Run the web server to see and join these vibes.');
108
-
}
109
-
catch (error) {
110
-
console.error('Error:', error);
111
-
process.exit(1);
112
-
}
113
-
});
114
-
}
115
-
seedVibes();
-81
src/seed-vibes.ts
-81
src/seed-vibes.ts
···
1
-
import { BlonkAgent } from './agent';
2
-
import { VibeManager } from './vibes';
3
-
import * as dotenv from 'dotenv';
4
-
5
-
dotenv.config();
6
-
7
-
const sampleVibes = [
8
-
{
9
-
name: "sunset_sunglasses_struts",
10
-
mood: "confident, golden hour energy, main character walking down the street",
11
-
emoji: "😎",
12
-
color: "#FF6B6B"
13
-
},
14
-
{
15
-
name: "doinkin_right",
16
-
mood: "playful chaos, doing things correctly but in a silly way",
17
-
emoji: "🤪",
18
-
color: "#4ECDC4"
19
-
},
20
-
{
21
-
name: "dork_nerd_linkage",
22
-
mood: "excitedly sharing obscure knowledge, Wikipedia rabbit holes at 3am",
23
-
emoji: "🤓",
24
-
color: "#95E1D3"
25
-
},
26
-
{
27
-
name: "cozy_corner_contemplation",
28
-
mood: "rainy day thoughts, tea and blankets, gentle introspection",
29
-
emoji: "☕",
30
-
color: "#C7CEEA"
31
-
},
32
-
{
33
-
name: "midnight_snack_attack",
34
-
mood: "impulsive 2am decisions, standing in front of the fridge energy",
35
-
emoji: "🌙",
36
-
color: "#2C3E50"
37
-
},
38
-
{
39
-
name: "sparkle_hustle_flow",
40
-
mood: "getting things done but make it glamorous, productive but cute",
41
-
emoji: "✨",
42
-
color: "#FF6B9D"
43
-
}
44
-
];
45
-
46
-
async function seedVibes() {
47
-
try {
48
-
const blonkAgent = new BlonkAgent();
49
-
await blonkAgent.login();
50
-
51
-
const agent = blonkAgent.getAgent();
52
-
const vibeManager = new VibeManager(agent);
53
-
54
-
console.log('🌈 Creating sample vibes...\n');
55
-
56
-
for (const vibe of sampleVibes) {
57
-
try {
58
-
const uri = await vibeManager.createVibe(
59
-
vibe.name,
60
-
vibe.mood,
61
-
vibe.emoji,
62
-
vibe.color
63
-
);
64
-
console.log(`✅ Created vibe: ${vibe.emoji} ${vibe.name}`);
65
-
console.log(` Mood: ${vibe.mood}`);
66
-
console.log(` URI: ${uri}\n`);
67
-
} catch (error) {
68
-
console.error(`❌ Failed to create vibe "${vibe.name}":`, error);
69
-
}
70
-
}
71
-
72
-
console.log('🎉 Vibe seeding complete!');
73
-
console.log('Run the web server to see and join these vibes.');
74
-
75
-
} catch (error) {
76
-
console.error('Error:', error);
77
-
process.exit(1);
78
-
}
79
-
}
80
-
81
-
seedVibes();
-204
src/server.js
-204
src/server.js
···
1
-
"use strict";
2
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
-
if (k2 === undefined) k2 = k;
4
-
var desc = Object.getOwnPropertyDescriptor(m, k);
5
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
-
desc = { enumerable: true, get: function() { return m[k]; } };
7
-
}
8
-
Object.defineProperty(o, k2, desc);
9
-
}) : (function(o, m, k, k2) {
10
-
if (k2 === undefined) k2 = k;
11
-
o[k2] = m[k];
12
-
}));
13
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
15
-
}) : function(o, v) {
16
-
o["default"] = v;
17
-
});
18
-
var __importStar = (this && this.__importStar) || (function () {
19
-
var ownKeys = function(o) {
20
-
ownKeys = Object.getOwnPropertyNames || function (o) {
21
-
var ar = [];
22
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
-
return ar;
24
-
};
25
-
return ownKeys(o);
26
-
};
27
-
return function (mod) {
28
-
if (mod && mod.__esModule) return mod;
29
-
var result = {};
30
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
-
__setModuleDefault(result, mod);
32
-
return result;
33
-
};
34
-
})();
35
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
-
return new (P || (P = Promise))(function (resolve, reject) {
38
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
42
-
});
43
-
};
44
-
var __importDefault = (this && this.__importDefault) || function (mod) {
45
-
return (mod && mod.__esModule) ? mod : { "default": mod };
46
-
};
47
-
Object.defineProperty(exports, "__esModule", { value: true });
48
-
const express_1 = __importDefault(require("express"));
49
-
const cors_1 = __importDefault(require("cors"));
50
-
const agent_1 = require("./agent");
51
-
const blips_1 = require("./blips");
52
-
const vibes_1 = require("./vibes");
53
-
const firehose_1 = require("./firehose");
54
-
const search_monitor_1 = require("./search-monitor");
55
-
const database_1 = require("./database");
56
-
const dotenv = __importStar(require("dotenv"));
57
-
dotenv.config();
58
-
const app = (0, express_1.default)();
59
-
const PORT = process.env.PORT || 3001;
60
-
app.use((0, cors_1.default)());
61
-
app.use(express_1.default.json());
62
-
let agent;
63
-
let blipManager;
64
-
let vibeManager;
65
-
let aggregator;
66
-
let searchMonitor;
67
-
function initializeAgent() {
68
-
return __awaiter(this, void 0, void 0, function* () {
69
-
agent = new agent_1.BlonkAgent();
70
-
yield agent.login();
71
-
blipManager = new blips_1.BlipManager(agent.getAgent());
72
-
vibeManager = new vibes_1.VibeManager(agent.getAgent());
73
-
// Start aggregating blips from all users
74
-
aggregator = new firehose_1.BlipAggregator(agent.getAgent());
75
-
aggregator.startPolling(30000); // Poll every 30 seconds
76
-
// Start searching for #vibe-* hashtags on Bluesky
77
-
searchMonitor = new search_monitor_1.SearchMonitor(agent.getAgent());
78
-
yield searchMonitor.start();
79
-
console.log('✅ Connected to AT Protocol');
80
-
console.log('📡 Starting blip aggregation...');
81
-
console.log('🔍 Searching Bluesky for #vibe-* hashtags every 2 minutes...');
82
-
});
83
-
}
84
-
app.get('/api/blips', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
85
-
try {
86
-
// Get aggregated blips from all users
87
-
const blips = database_1.blipDb.getBlips(50);
88
-
res.json({ blips });
89
-
}
90
-
catch (error) {
91
-
console.error('Error fetching blips:', error);
92
-
res.status(500).json({ error: 'Failed to fetch blips' });
93
-
}
94
-
}));
95
-
app.post('/api/blips', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
96
-
try {
97
-
const { title, url, body, tags, vibe } = req.body;
98
-
const tagArray = tags || [];
99
-
const uri = yield blipManager.createBlip(title, body, url, tagArray, vibe);
100
-
res.json({ success: true, uri });
101
-
}
102
-
catch (error) {
103
-
console.error('Error creating blip:', error);
104
-
res.status(500).json({ error: 'Failed to create blip' });
105
-
}
106
-
}));
107
-
// Get all vibes
108
-
app.get('/api/vibes', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
109
-
try {
110
-
const vibes = database_1.vibeDb.getVibes(50);
111
-
res.json({ vibes });
112
-
}
113
-
catch (error) {
114
-
console.error('Error fetching vibes:', error);
115
-
res.status(500).json({ error: 'Failed to fetch vibes' });
116
-
}
117
-
}));
118
-
// Get emerging vibes
119
-
app.get('/api/vibes/emerging', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
120
-
try {
121
-
const emergingVibes = database_1.vibeMentionDb.getEmergingVibes();
122
-
res.json({ emergingVibes });
123
-
}
124
-
catch (error) {
125
-
console.error('Error fetching emerging vibes:', error);
126
-
res.status(500).json({ error: 'Failed to fetch emerging vibes' });
127
-
}
128
-
}));
129
-
// Get blips for a specific vibe
130
-
app.get('/api/vibes/:vibeUri/blips', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
131
-
try {
132
-
const blips = database_1.blipDb.getBlipsByVibe(req.params.vibeUri);
133
-
res.json({ blips });
134
-
}
135
-
catch (error) {
136
-
console.error('Error fetching vibe blips:', error);
137
-
res.status(500).json({ error: 'Failed to fetch vibe blips' });
138
-
}
139
-
}));
140
-
// Vibe creation is now disabled - vibes are created through viral hashtags
141
-
app.post('/api/vibes', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
142
-
res.status(403).json({
143
-
error: 'Manual vibe creation is disabled. Vibes are created when #vibe-YOUR_VIBE reaches 5 unique mentions.'
144
-
});
145
-
}));
146
-
// Join a vibe
147
-
app.post('/api/vibes/:vibeUri/join', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
148
-
var _a;
149
-
try {
150
-
const { cid } = req.body;
151
-
yield vibeManager.joinVibe(req.params.vibeUri, cid);
152
-
database_1.vibeDb.addMember(req.params.vibeUri, (_a = agent.getAgent().session) === null || _a === void 0 ? void 0 : _a.did);
153
-
res.json({ success: true });
154
-
}
155
-
catch (error) {
156
-
console.error('Error joining vibe:', error);
157
-
res.status(500).json({ error: 'Failed to join vibe' });
158
-
}
159
-
}));
160
-
// Manual search trigger
161
-
app.post('/api/vibes/search', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
162
-
try {
163
-
console.log('Manual vibe search triggered...');
164
-
yield searchMonitor.searchForVibeMentions();
165
-
res.json({ success: true, message: 'Search completed' });
166
-
}
167
-
catch (error) {
168
-
console.error('Error searching for vibes:', error);
169
-
res.status(500).json({ error: 'Failed to search for vibes' });
170
-
}
171
-
}));
172
-
app.get('/api/blips/tag/:tag', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
173
-
try {
174
-
const taggedBlips = database_1.blipDb.getBlipsByTag(req.params.tag);
175
-
res.json({ blips: taggedBlips, tag: req.params.tag });
176
-
}
177
-
catch (error) {
178
-
console.error('Error fetching tagged blips:', error);
179
-
res.status(500).json({ error: 'Failed to fetch tagged blips' });
180
-
}
181
-
}));
182
-
// Add endpoint to follow new users
183
-
app.post('/api/follow', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
184
-
try {
185
-
const { did } = req.body;
186
-
if (!did) {
187
-
return res.status(400).json({ error: 'DID required' });
188
-
}
189
-
aggregator.addUser(did);
190
-
res.json({ success: true, message: `Now following ${did}` });
191
-
}
192
-
catch (error) {
193
-
console.error('Error following user:', error);
194
-
res.status(500).json({ error: 'Failed to follow user' });
195
-
}
196
-
}));
197
-
initializeAgent().then(() => {
198
-
app.listen(PORT, () => {
199
-
console.log(`🚀 Blonk API server running at http://localhost:${PORT}`);
200
-
});
201
-
}).catch(error => {
202
-
console.error('Failed to initialize:', error);
203
-
process.exit(1);
204
-
});
-372
src/server.test.ts
-372
src/server.test.ts
···
1
-
import { BlonkAgent } from './agent';
2
-
import { BlipManager } from './blips';
3
-
import { VibeManager } from './vibes';
4
-
import { BlipAggregator } from './firehose';
5
-
import { SearchMonitor } from './search-monitor';
6
-
import { blipDb, vibeDb, vibeMentionDb } from './database';
7
-
8
-
// Mock all dependencies
9
-
jest.mock('./agent');
10
-
jest.mock('./blips');
11
-
jest.mock('./vibes');
12
-
jest.mock('./firehose');
13
-
jest.mock('./search-monitor');
14
-
jest.mock('./database');
15
-
jest.mock('dotenv', () => ({
16
-
config: jest.fn()
17
-
}));
18
-
19
-
describe('Blonk Server Unit Tests', () => {
20
-
let mockAgent: jest.Mocked<BlonkAgent>;
21
-
let mockBlipManager: jest.Mocked<BlipManager>;
22
-
let mockVibeManager: jest.Mocked<VibeManager>;
23
-
let mockAggregator: jest.Mocked<BlipAggregator>;
24
-
let mockSearchMonitor: jest.Mocked<SearchMonitor>;
25
-
let mockBlipDb: any;
26
-
let mockVibeDb: any;
27
-
let mockVibeMentionDb: any;
28
-
29
-
beforeEach(() => {
30
-
// Clear all mocks
31
-
jest.clearAllMocks();
32
-
33
-
// Set up mock instances
34
-
mockAgent = {
35
-
login: jest.fn().mockResolvedValue(undefined),
36
-
getAgent: jest.fn().mockReturnValue({
37
-
session: { did: 'did:plc:test123' },
38
-
com: {
39
-
atproto: {
40
-
repo: {
41
-
createRecord: jest.fn()
42
-
}
43
-
}
44
-
}
45
-
})
46
-
} as any;
47
-
48
-
mockBlipManager = {
49
-
createBlip: jest.fn().mockResolvedValue('at://did:plc:test/app.bsky.feed.post/abc123')
50
-
} as any;
51
-
52
-
mockVibeManager = {
53
-
joinVibe: jest.fn().mockResolvedValue(undefined),
54
-
createVibe: jest.fn().mockResolvedValue('at://did:plc:test/vibe/xyz789')
55
-
} as any;
56
-
57
-
mockAggregator = {
58
-
startPolling: jest.fn(),
59
-
addUser: jest.fn()
60
-
} as any;
61
-
62
-
mockSearchMonitor = {
63
-
start: jest.fn().mockResolvedValue(undefined),
64
-
searchForVibeMentions: jest.fn().mockResolvedValue(undefined)
65
-
} as any;
66
-
67
-
// Set up database mocks
68
-
mockBlipDb = {
69
-
getBlips: jest.fn().mockReturnValue([]),
70
-
getBlipsByVibe: jest.fn().mockReturnValue([]),
71
-
getBlipsByTag: jest.fn().mockReturnValue([]),
72
-
addBlip: jest.fn()
73
-
};
74
-
75
-
mockVibeDb = {
76
-
getVibes: jest.fn().mockReturnValue([]),
77
-
addMember: jest.fn(),
78
-
getVibe: jest.fn()
79
-
};
80
-
81
-
mockVibeMentionDb = {
82
-
getEmergingVibes: jest.fn().mockReturnValue([]),
83
-
getVibeByName: jest.fn(),
84
-
recordMention: jest.fn()
85
-
};
86
-
87
-
// Set up mocked constructors
88
-
(BlonkAgent as jest.MockedClass<typeof BlonkAgent>).mockImplementation(() => mockAgent);
89
-
(BlipManager as jest.MockedClass<typeof BlipManager>).mockImplementation(() => mockBlipManager);
90
-
(VibeManager as jest.MockedClass<typeof VibeManager>).mockImplementation(() => mockVibeManager);
91
-
(BlipAggregator as jest.MockedClass<typeof BlipAggregator>).mockImplementation(() => mockAggregator);
92
-
(SearchMonitor as jest.MockedClass<typeof SearchMonitor>).mockImplementation(() => mockSearchMonitor);
93
-
94
-
// Replace database exports with mocks
95
-
(blipDb as any) = mockBlipDb;
96
-
(vibeDb as any) = mockVibeDb;
97
-
(vibeMentionDb as any) = mockVibeMentionDb;
98
-
});
99
-
100
-
describe('Component Initialization', () => {
101
-
it('should create BlonkAgent instance', () => {
102
-
const agent = new BlonkAgent();
103
-
expect(BlonkAgent).toHaveBeenCalled();
104
-
expect(agent).toBe(mockAgent);
105
-
});
106
-
107
-
it('should login to BlonkAgent', async () => {
108
-
const agent = new BlonkAgent();
109
-
await agent.login();
110
-
expect(mockAgent.login).toHaveBeenCalled();
111
-
});
112
-
113
-
it('should create BlipManager with agent instance', () => {
114
-
const agentInstance = mockAgent.getAgent();
115
-
const manager = new BlipManager(agentInstance);
116
-
expect(BlipManager).toHaveBeenCalledWith(agentInstance);
117
-
expect(manager).toBe(mockBlipManager);
118
-
});
119
-
120
-
it('should create VibeManager with agent instance', () => {
121
-
const agentInstance = mockAgent.getAgent();
122
-
const manager = new VibeManager(agentInstance);
123
-
expect(VibeManager).toHaveBeenCalledWith(agentInstance);
124
-
expect(manager).toBe(mockVibeManager);
125
-
});
126
-
127
-
it('should create BlipAggregator with agent instance', () => {
128
-
const agentInstance = mockAgent.getAgent();
129
-
const aggregator = new BlipAggregator(agentInstance);
130
-
expect(BlipAggregator).toHaveBeenCalledWith(agentInstance);
131
-
expect(aggregator).toBe(mockAggregator);
132
-
});
133
-
134
-
it('should start polling on BlipAggregator', () => {
135
-
const aggregator = new BlipAggregator(mockAgent.getAgent());
136
-
aggregator.startPolling(30000);
137
-
expect(mockAggregator.startPolling).toHaveBeenCalledWith(30000);
138
-
});
139
-
140
-
it('should create SearchMonitor with agent instance', () => {
141
-
const agentInstance = mockAgent.getAgent();
142
-
const monitor = new SearchMonitor(agentInstance);
143
-
expect(SearchMonitor).toHaveBeenCalledWith(agentInstance);
144
-
expect(monitor).toBe(mockSearchMonitor);
145
-
});
146
-
147
-
it('should start SearchMonitor', async () => {
148
-
const monitor = new SearchMonitor(mockAgent.getAgent());
149
-
await monitor.start();
150
-
expect(mockSearchMonitor.start).toHaveBeenCalled();
151
-
});
152
-
});
153
-
154
-
describe('BlipManager Operations', () => {
155
-
it('should create blip with all parameters', async () => {
156
-
const title = 'Test Title';
157
-
const body = 'Test Body';
158
-
const url = 'https://example.com';
159
-
const tags = ['tag1', 'tag2'];
160
-
const vibe = { uri: 'at://vibe/uri', cid: 'vibecid123', name: 'Test Vibe' };
161
-
162
-
const uri = await mockBlipManager.createBlip(title, body, url, tags, vibe);
163
-
164
-
expect(uri).toBe('at://did:plc:test/app.bsky.feed.post/abc123');
165
-
expect(mockBlipManager.createBlip).toHaveBeenCalledWith(title, body, url, tags, vibe);
166
-
});
167
-
168
-
it('should handle blip creation errors', async () => {
169
-
mockBlipManager.createBlip.mockRejectedValue(new Error('Creation failed'));
170
-
171
-
await expect(
172
-
mockBlipManager.createBlip('Title', 'Body', 'url', [], undefined)
173
-
).rejects.toThrow('Creation failed');
174
-
});
175
-
});
176
-
177
-
describe('VibeManager Operations', () => {
178
-
it('should join vibe successfully', async () => {
179
-
const vibeUri = 'at://vibe/uri';
180
-
const cid = 'cid123';
181
-
182
-
await mockVibeManager.joinVibe(vibeUri, cid);
183
-
184
-
expect(mockVibeManager.joinVibe).toHaveBeenCalledWith(vibeUri, cid);
185
-
});
186
-
187
-
it('should handle join vibe errors', async () => {
188
-
mockVibeManager.joinVibe.mockRejectedValue(new Error('Join failed'));
189
-
190
-
await expect(
191
-
mockVibeManager.joinVibe('at://vibe/uri', 'cid123')
192
-
).rejects.toThrow('Join failed');
193
-
});
194
-
195
-
it('should create vibe successfully', async () => {
196
-
const name = 'test_vibe';
197
-
const mood = 'chill';
198
-
const emoji = '🎵';
199
-
const color = '#FF0000';
200
-
201
-
const uri = await mockVibeManager.createVibe(name, mood, emoji, color);
202
-
203
-
expect(uri).toBe('at://did:plc:test/vibe/xyz789');
204
-
expect(mockVibeManager.createVibe).toHaveBeenCalledWith(name, mood, emoji, color);
205
-
});
206
-
});
207
-
208
-
describe('Database Operations', () => {
209
-
describe('BlipDb', () => {
210
-
it('should get blips with limit', () => {
211
-
const mockBlips = [
212
-
{ id: '1', title: 'Blip 1' },
213
-
{ id: '2', title: 'Blip 2' }
214
-
];
215
-
mockBlipDb.getBlips.mockReturnValue(mockBlips);
216
-
217
-
const result = mockBlipDb.getBlips(50);
218
-
219
-
expect(result).toEqual(mockBlips);
220
-
expect(mockBlipDb.getBlips).toHaveBeenCalledWith(50);
221
-
});
222
-
223
-
it('should get blips by vibe', () => {
224
-
const vibeUri = 'at://vibe/uri';
225
-
const mockBlips = [{ id: '1', title: 'Vibe Blip' }];
226
-
mockBlipDb.getBlipsByVibe.mockReturnValue(mockBlips);
227
-
228
-
const result = mockBlipDb.getBlipsByVibe(vibeUri);
229
-
230
-
expect(result).toEqual(mockBlips);
231
-
expect(mockBlipDb.getBlipsByVibe).toHaveBeenCalledWith(vibeUri);
232
-
});
233
-
234
-
it('should get blips by tag', () => {
235
-
const tag = 'test-tag';
236
-
const mockBlips = [{ id: '1', title: 'Tagged Blip' }];
237
-
mockBlipDb.getBlipsByTag.mockReturnValue(mockBlips);
238
-
239
-
const result = mockBlipDb.getBlipsByTag(tag);
240
-
241
-
expect(result).toEqual(mockBlips);
242
-
expect(mockBlipDb.getBlipsByTag).toHaveBeenCalledWith(tag);
243
-
});
244
-
});
245
-
246
-
describe('VibeDb', () => {
247
-
it('should get vibes with limit', () => {
248
-
const mockVibes = [
249
-
{ uri: 'at://vibe1', name: 'Vibe 1' },
250
-
{ uri: 'at://vibe2', name: 'Vibe 2' }
251
-
];
252
-
mockVibeDb.getVibes.mockReturnValue(mockVibes);
253
-
254
-
const result = mockVibeDb.getVibes(50);
255
-
256
-
expect(result).toEqual(mockVibes);
257
-
expect(mockVibeDb.getVibes).toHaveBeenCalledWith(50);
258
-
});
259
-
260
-
it('should add member to vibe', () => {
261
-
const vibeUri = 'at://vibe/uri';
262
-
const memberDid = 'did:plc:member';
263
-
264
-
mockVibeDb.addMember(vibeUri, memberDid);
265
-
266
-
expect(mockVibeDb.addMember).toHaveBeenCalledWith(vibeUri, memberDid);
267
-
});
268
-
});
269
-
270
-
describe('VibeMentionDb', () => {
271
-
it('should get emerging vibes', () => {
272
-
const mockEmergingVibes = [
273
-
{ hashtag: '#vibe-test', count: 7, uniqueAuthors: 5 },
274
-
{ hashtag: '#vibe-demo', count: 5, uniqueAuthors: 5 }
275
-
];
276
-
mockVibeMentionDb.getEmergingVibes.mockReturnValue(mockEmergingVibes);
277
-
278
-
const result = mockVibeMentionDb.getEmergingVibes();
279
-
280
-
expect(result).toEqual(mockEmergingVibes);
281
-
expect(mockVibeMentionDb.getEmergingVibes).toHaveBeenCalled();
282
-
});
283
-
});
284
-
});
285
-
286
-
describe('BlipAggregator Operations', () => {
287
-
it('should add user to aggregation', () => {
288
-
const did = 'did:plc:newuser';
289
-
290
-
mockAggregator.addUser(did);
291
-
292
-
expect(mockAggregator.addUser).toHaveBeenCalledWith(did);
293
-
});
294
-
});
295
-
296
-
describe('SearchMonitor Operations', () => {
297
-
it('should search for vibe mentions', async () => {
298
-
await mockSearchMonitor.searchForVibeMentions();
299
-
300
-
expect(mockSearchMonitor.searchForVibeMentions).toHaveBeenCalled();
301
-
});
302
-
303
-
it('should handle search errors', async () => {
304
-
mockSearchMonitor.searchForVibeMentions.mockRejectedValue(new Error('Search failed'));
305
-
306
-
await expect(
307
-
mockSearchMonitor.searchForVibeMentions()
308
-
).rejects.toThrow('Search failed');
309
-
});
310
-
});
311
-
312
-
describe('Error Scenarios', () => {
313
-
it('should handle database errors gracefully', () => {
314
-
mockBlipDb.getBlips.mockImplementation(() => {
315
-
throw new Error('Database connection failed');
316
-
});
317
-
318
-
expect(() => mockBlipDb.getBlips(50)).toThrow('Database connection failed');
319
-
});
320
-
321
-
it('should handle missing agent session', () => {
322
-
mockAgent.getAgent.mockReturnValue({
323
-
session: null
324
-
} as any);
325
-
326
-
const agentInstance = mockAgent.getAgent();
327
-
expect(agentInstance.session).toBeNull();
328
-
});
329
-
});
330
-
331
-
describe('Integration Flow', () => {
332
-
it('should complete full blip creation flow', async () => {
333
-
// Initialize agent
334
-
const agent = new BlonkAgent();
335
-
await agent.login();
336
-
337
-
// Create manager
338
-
const blipManager = new BlipManager(agent.getAgent());
339
-
340
-
// Create blip
341
-
const uri = await blipManager.createBlip(
342
-
'Integration Test',
343
-
'Testing full flow',
344
-
'https://test.com',
345
-
['integration', 'test'],
346
-
undefined
347
-
);
348
-
349
-
expect(uri).toBe('at://did:plc:test/app.bsky.feed.post/abc123');
350
-
expect(mockAgent.login).toHaveBeenCalled();
351
-
expect(mockBlipManager.createBlip).toHaveBeenCalled();
352
-
});
353
-
354
-
it('should complete full vibe join flow', async () => {
355
-
// Initialize agent
356
-
const agent = new BlonkAgent();
357
-
await agent.login();
358
-
359
-
// Create manager
360
-
const vibeManager = new VibeManager(agent.getAgent());
361
-
362
-
// Join vibe
363
-
await vibeManager.joinVibe('at://vibe/uri', 'cid123');
364
-
365
-
// Add member to database
366
-
mockVibeDb.addMember('at://vibe/uri', 'did:plc:test123');
367
-
368
-
expect(mockVibeManager.joinVibe).toHaveBeenCalledWith('at://vibe/uri', 'cid123');
369
-
expect(mockVibeDb.addMember).toHaveBeenCalledWith('at://vibe/uri', 'did:plc:test123');
370
-
});
371
-
});
372
-
});
-167
src/server.ts
-167
src/server.ts
···
1
-
import express from 'express';
2
-
import cors from 'cors';
3
-
import { BlonkAgent } from './agent';
4
-
import { BlipManager } from './blips';
5
-
import { VibeManager } from './vibes';
6
-
import { BlipAggregator } from './firehose';
7
-
import { SearchMonitor } from './search-monitor';
8
-
import { blipDb, vibeDb, vibeMentionDb } from './database';
9
-
import * as dotenv from 'dotenv';
10
-
11
-
dotenv.config();
12
-
13
-
const app = express();
14
-
const PORT = process.env.PORT || 3001;
15
-
16
-
app.use(cors());
17
-
app.use(express.json());
18
-
19
-
let agent: BlonkAgent;
20
-
let blipManager: BlipManager;
21
-
let vibeManager: VibeManager;
22
-
let aggregator: BlipAggregator;
23
-
let searchMonitor: SearchMonitor;
24
-
25
-
async function initializeAgent() {
26
-
agent = new BlonkAgent();
27
-
await agent.login();
28
-
blipManager = new BlipManager(agent.getAgent());
29
-
vibeManager = new VibeManager(agent.getAgent());
30
-
31
-
// Start aggregating blips from all users
32
-
aggregator = new BlipAggregator(agent.getAgent());
33
-
aggregator.startPolling(30000); // Poll every 30 seconds
34
-
35
-
// Start searching for #vibe-* hashtags on Bluesky
36
-
searchMonitor = new SearchMonitor(agent.getAgent());
37
-
await searchMonitor.start();
38
-
39
-
console.log('✅ Connected to AT Protocol');
40
-
console.log('📡 Starting blip aggregation...');
41
-
console.log('🔍 Searching Bluesky for #vibe-* hashtags every 2 minutes...');
42
-
}
43
-
44
-
app.get('/api/blips', async (req, res) => {
45
-
try {
46
-
// Get aggregated blips from all users
47
-
const blips = blipDb.getBlips(50);
48
-
res.json({ blips });
49
-
} catch (error) {
50
-
console.error('Error fetching blips:', error);
51
-
res.status(500).json({ error: 'Failed to fetch blips' });
52
-
}
53
-
});
54
-
55
-
56
-
app.post('/api/blips', async (req, res) => {
57
-
try {
58
-
const { title, url, body, tags, vibe } = req.body;
59
-
const tagArray = tags || [];
60
-
61
-
const uri = await blipManager.createBlip(title, body, url, tagArray, vibe);
62
-
res.json({ success: true, uri });
63
-
} catch (error) {
64
-
console.error('Error creating blip:', error);
65
-
res.status(500).json({ error: 'Failed to create blip' });
66
-
}
67
-
});
68
-
69
-
// Get all vibes
70
-
app.get('/api/vibes', async (req, res) => {
71
-
try {
72
-
const vibes = vibeDb.getVibes(50);
73
-
res.json({ vibes });
74
-
} catch (error) {
75
-
console.error('Error fetching vibes:', error);
76
-
res.status(500).json({ error: 'Failed to fetch vibes' });
77
-
}
78
-
});
79
-
80
-
// Get emerging vibes
81
-
app.get('/api/vibes/emerging', async (req, res) => {
82
-
try {
83
-
const emergingVibes = vibeMentionDb.getEmergingVibes();
84
-
res.json({ emergingVibes });
85
-
} catch (error) {
86
-
console.error('Error fetching emerging vibes:', error);
87
-
res.status(500).json({ error: 'Failed to fetch emerging vibes' });
88
-
}
89
-
});
90
-
91
-
// Get blips for a specific vibe
92
-
app.get('/api/vibes/:vibeUri/blips', async (req, res) => {
93
-
try {
94
-
const blips = blipDb.getBlipsByVibe(req.params.vibeUri);
95
-
res.json({ blips });
96
-
} catch (error) {
97
-
console.error('Error fetching vibe blips:', error);
98
-
res.status(500).json({ error: 'Failed to fetch vibe blips' });
99
-
}
100
-
});
101
-
102
-
// Vibe creation is now disabled - vibes are created through viral hashtags
103
-
app.post('/api/vibes', async (req, res) => {
104
-
res.status(403).json({
105
-
error: 'Manual vibe creation is disabled. Vibes are created when #vibe-YOUR_VIBE reaches 5 unique mentions.'
106
-
});
107
-
});
108
-
109
-
// Join a vibe
110
-
app.post('/api/vibes/:vibeUri/join', async (req, res) => {
111
-
try {
112
-
const { cid } = req.body;
113
-
await vibeManager.joinVibe(req.params.vibeUri, cid);
114
-
vibeDb.addMember(req.params.vibeUri, agent.getAgent().session?.did!);
115
-
res.json({ success: true });
116
-
} catch (error) {
117
-
console.error('Error joining vibe:', error);
118
-
res.status(500).json({ error: 'Failed to join vibe' });
119
-
}
120
-
});
121
-
122
-
// Manual search trigger
123
-
app.post('/api/vibes/search', async (req, res) => {
124
-
try {
125
-
console.log('Manual vibe search triggered...');
126
-
await searchMonitor.searchForVibeMentions();
127
-
res.json({ success: true, message: 'Search completed' });
128
-
} catch (error) {
129
-
console.error('Error searching for vibes:', error);
130
-
res.status(500).json({ error: 'Failed to search for vibes' });
131
-
}
132
-
});
133
-
134
-
app.get('/api/blips/tag/:tag', async (req, res) => {
135
-
try {
136
-
const taggedBlips = blipDb.getBlipsByTag(req.params.tag);
137
-
res.json({ blips: taggedBlips, tag: req.params.tag });
138
-
} catch (error) {
139
-
console.error('Error fetching tagged blips:', error);
140
-
res.status(500).json({ error: 'Failed to fetch tagged blips' });
141
-
}
142
-
});
143
-
144
-
// Add endpoint to follow new users
145
-
app.post('/api/follow', async (req, res) => {
146
-
try {
147
-
const { did } = req.body;
148
-
if (!did) {
149
-
return res.status(400).json({ error: 'DID required' });
150
-
}
151
-
152
-
aggregator.addUser(did);
153
-
res.json({ success: true, message: `Now following ${did}` });
154
-
} catch (error) {
155
-
console.error('Error following user:', error);
156
-
res.status(500).json({ error: 'Failed to follow user' });
157
-
}
158
-
});
159
-
160
-
initializeAgent().then(() => {
161
-
app.listen(PORT, () => {
162
-
console.log(`🚀 Blonk API server running at http://localhost:${PORT}`);
163
-
});
164
-
}).catch(error => {
165
-
console.error('Failed to initialize:', error);
166
-
process.exit(1);
167
-
});
-135
src/simple-firehose.js
-135
src/simple-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.SimpleFirehoseMonitor = void 0;
13
-
const ws_1 = require("ws");
14
-
const cbor_x_1 = require("cbor-x");
15
-
const vibe_monitor_1 = require("./vibe-monitor");
16
-
class SimpleFirehoseMonitor {
17
-
constructor(agent) {
18
-
this.ws = null;
19
-
this.reconnectTimeout = null;
20
-
this.messageCount = 0;
21
-
this.vibeDetectionCount = 0;
22
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
23
-
}
24
-
start() {
25
-
return __awaiter(this, void 0, void 0, function* () {
26
-
console.log('🔥 Starting simple Bluesky Firehose monitoring for #vibe-* hashtags...');
27
-
// Connect to Bluesky firehose - use the working network endpoint
28
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
29
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
30
-
this.ws = new ws_1.WebSocket(firehoseUrl);
31
-
this.ws.on('open', () => {
32
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
33
-
this.messageCount = 0;
34
-
this.vibeDetectionCount = 0;
35
-
// Log stats every 30 seconds
36
-
setInterval(() => {
37
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections`);
38
-
}, 30000);
39
-
});
40
-
this.ws.on('message', (data) => __awaiter(this, void 0, void 0, function* () {
41
-
var _a;
42
-
this.messageCount++;
43
-
try {
44
-
// Decode the CBOR message
45
-
const decoded = (0, cbor_x_1.decode)(new Uint8Array(data));
46
-
if (decoded && decoded.$type === 'com.atproto.sync.subscribeRepos#commit') {
47
-
// Process commits
48
-
const commit = decoded.commit;
49
-
if (!commit)
50
-
return;
51
-
// Look for post creates
52
-
for (const op of decoded.ops || []) {
53
-
if (op.action === 'create' && ((_a = op.path) === null || _a === void 0 ? void 0 : _a.includes('app.bsky.feed.post'))) {
54
-
try {
55
-
// Try to decode the blocks
56
-
const blocks = decoded.blocks;
57
-
if (!blocks)
58
-
continue;
59
-
// blocks might be a Uint8Array that needs to be decoded
60
-
let record;
61
-
if (blocks instanceof Uint8Array) {
62
-
// If blocks is raw bytes, decode it
63
-
const blocksDecoded = (0, cbor_x_1.decode)(blocks);
64
-
record = blocksDecoded;
65
-
}
66
-
else if (typeof blocks.get === 'function') {
67
-
// If blocks is a Map
68
-
const recordBytes = blocks.get(op.cid);
69
-
if (!recordBytes)
70
-
continue;
71
-
record = (0, cbor_x_1.decode)(recordBytes);
72
-
}
73
-
else if (Array.isArray(blocks)) {
74
-
// If blocks is an array, find the matching CID
75
-
const block = blocks.find(b => b.cid === op.cid);
76
-
if (!block)
77
-
continue;
78
-
record = (0, cbor_x_1.decode)(block.bytes);
79
-
}
80
-
else {
81
-
// Try direct decoding
82
-
record = blocks;
83
-
}
84
-
if (record && record.text && typeof record.text === 'string') {
85
-
// Check for #vibe- hashtags
86
-
if (record.text.toLowerCase().includes('#vibe-')) {
87
-
this.vibeDetectionCount++;
88
-
const authorDid = decoded.repo;
89
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
90
-
console.log(` Author: ${authorDid}`);
91
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
92
-
// Process the vibe mention
93
-
yield this.vibeMonitor.checkPost(record.text, authorDid, `at://${authorDid}/${op.path}`);
94
-
}
95
-
}
96
-
}
97
-
catch (e) {
98
-
// Ignore individual record errors
99
-
}
100
-
}
101
-
}
102
-
}
103
-
}
104
-
catch (error) {
105
-
// Ignore decoding errors - firehose sends various message types
106
-
}
107
-
}));
108
-
this.ws.on('error', (error) => {
109
-
console.error('❌ Firehose WebSocket error:', error.message);
110
-
if (error.code) {
111
-
console.error(' Error code:', error.code);
112
-
}
113
-
if (error.stack) {
114
-
console.error(' Stack trace:', error.stack.split('\n').slice(0, 3).join('\n'));
115
-
}
116
-
});
117
-
this.ws.on('close', (code, reason) => {
118
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
119
-
console.log(' Reconnecting in 5 seconds...');
120
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
121
-
});
122
-
});
123
-
}
124
-
stop() {
125
-
if (this.reconnectTimeout) {
126
-
clearTimeout(this.reconnectTimeout);
127
-
this.reconnectTimeout = null;
128
-
}
129
-
if (this.ws) {
130
-
this.ws.close();
131
-
this.ws = null;
132
-
}
133
-
}
134
-
}
135
-
exports.SimpleFirehoseMonitor = SimpleFirehoseMonitor;
-129
src/simple-firehose.ts
-129
src/simple-firehose.ts
···
1
-
import { WebSocket } from 'ws';
2
-
import { decode } from 'cbor-x';
3
-
import { VibeMonitor } from './vibe-monitor';
4
-
import { BskyAgent } from '@atproto/api';
5
-
6
-
export class SimpleFirehoseMonitor {
7
-
private ws: WebSocket | null = null;
8
-
private vibeMonitor: VibeMonitor;
9
-
private reconnectTimeout: NodeJS.Timeout | null = null;
10
-
private messageCount = 0;
11
-
private vibeDetectionCount = 0;
12
-
13
-
constructor(agent: BskyAgent) {
14
-
this.vibeMonitor = new VibeMonitor(agent);
15
-
}
16
-
17
-
async start() {
18
-
console.log('🔥 Starting simple Bluesky Firehose monitoring for #vibe-* hashtags...');
19
-
20
-
// Connect to Bluesky firehose - use the working network endpoint
21
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
22
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
23
-
24
-
this.ws = new WebSocket(firehoseUrl);
25
-
26
-
this.ws.on('open', () => {
27
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
28
-
this.messageCount = 0;
29
-
this.vibeDetectionCount = 0;
30
-
31
-
// Log stats every 30 seconds
32
-
setInterval(() => {
33
-
console.log(`📊 Firehose stats: ${this.messageCount} messages processed, ${this.vibeDetectionCount} #vibe-* detections`);
34
-
}, 30000);
35
-
});
36
-
37
-
this.ws.on('message', async (data: Buffer) => {
38
-
this.messageCount++;
39
-
40
-
try {
41
-
// Decode the CBOR message
42
-
const decoded = decode(new Uint8Array(data));
43
-
44
-
if (decoded && decoded.$type === 'com.atproto.sync.subscribeRepos#commit') {
45
-
// Process commits
46
-
const commit = decoded.commit;
47
-
if (!commit) return;
48
-
49
-
// Look for post creates
50
-
for (const op of decoded.ops || []) {
51
-
if (op.action === 'create' && op.path?.includes('app.bsky.feed.post')) {
52
-
try {
53
-
// Try to decode the blocks
54
-
const blocks = decoded.blocks;
55
-
if (!blocks) continue;
56
-
57
-
// blocks might be a Uint8Array that needs to be decoded
58
-
let record;
59
-
if (blocks instanceof Uint8Array) {
60
-
// If blocks is raw bytes, decode it
61
-
const blocksDecoded = decode(blocks);
62
-
record = blocksDecoded;
63
-
} else if (typeof blocks.get === 'function') {
64
-
// If blocks is a Map
65
-
const recordBytes = blocks.get(op.cid);
66
-
if (!recordBytes) continue;
67
-
record = decode(recordBytes);
68
-
} else if (Array.isArray(blocks)) {
69
-
// If blocks is an array, find the matching CID
70
-
const block = blocks.find(b => b.cid === op.cid);
71
-
if (!block) continue;
72
-
record = decode(block.bytes);
73
-
} else {
74
-
// Try direct decoding
75
-
record = blocks;
76
-
}
77
-
78
-
if (record && record.text && typeof record.text === 'string') {
79
-
// Check for #vibe- hashtags
80
-
if (record.text.toLowerCase().includes('#vibe-')) {
81
-
this.vibeDetectionCount++;
82
-
const authorDid = decoded.repo;
83
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
84
-
console.log(` Author: ${authorDid}`);
85
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
86
-
87
-
// Process the vibe mention
88
-
await this.vibeMonitor.checkPost(record.text, authorDid, `at://${authorDid}/${op.path}`);
89
-
}
90
-
}
91
-
} catch (e) {
92
-
// Ignore individual record errors
93
-
}
94
-
}
95
-
}
96
-
}
97
-
} catch (error) {
98
-
// Ignore decoding errors - firehose sends various message types
99
-
}
100
-
});
101
-
102
-
this.ws.on('error', (error: any) => {
103
-
console.error('❌ Firehose WebSocket error:', error.message);
104
-
if (error.code) {
105
-
console.error(' Error code:', error.code);
106
-
}
107
-
if (error.stack) {
108
-
console.error(' Stack trace:', error.stack.split('\n').slice(0, 3).join('\n'));
109
-
}
110
-
});
111
-
112
-
this.ws.on('close', (code, reason) => {
113
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
114
-
console.log(' Reconnecting in 5 seconds...');
115
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
116
-
});
117
-
}
118
-
119
-
stop() {
120
-
if (this.reconnectTimeout) {
121
-
clearTimeout(this.reconnectTimeout);
122
-
this.reconnectTimeout = null;
123
-
}
124
-
if (this.ws) {
125
-
this.ws.close();
126
-
this.ws = null;
127
-
}
128
-
}
129
-
}
-38
src/test-atproto-sync-firehose.js
-38
src/test-atproto-sync-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
const api_1 = require("@atproto/api");
13
-
const firehose_with_atproto_sync_1 = require("./firehose-with-atproto-sync");
14
-
function main() {
15
-
return __awaiter(this, void 0, void 0, function* () {
16
-
console.log('🚀 Starting AT Protocol Sync Firehose Test...');
17
-
const agent = new api_1.BskyAgent({
18
-
service: 'https://bsky.social'
19
-
});
20
-
const monitor = new firehose_with_atproto_sync_1.AtprotoSyncFirehoseMonitor(agent);
21
-
// Handle graceful shutdown
22
-
process.on('SIGINT', () => __awaiter(this, void 0, void 0, function* () {
23
-
console.log('\n⏹️ Shutting down...');
24
-
yield monitor.stop();
25
-
process.exit(0);
26
-
}));
27
-
process.on('SIGTERM', () => __awaiter(this, void 0, void 0, function* () {
28
-
console.log('\n⏹️ Shutting down...');
29
-
yield monitor.stop();
30
-
process.exit(0);
31
-
}));
32
-
yield monitor.start();
33
-
});
34
-
}
35
-
main().catch((error) => {
36
-
console.error('Fatal error:', error);
37
-
process.exit(1);
38
-
});
-32
src/test-atproto-sync-firehose.ts
-32
src/test-atproto-sync-firehose.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { AtprotoSyncFirehoseMonitor } from './firehose-with-atproto-sync';
3
-
4
-
async function main() {
5
-
console.log('🚀 Starting AT Protocol Sync Firehose Test...');
6
-
7
-
const agent = new BskyAgent({
8
-
service: 'https://bsky.social'
9
-
});
10
-
11
-
const monitor = new AtprotoSyncFirehoseMonitor(agent);
12
-
13
-
// Handle graceful shutdown
14
-
process.on('SIGINT', async () => {
15
-
console.log('\n⏹️ Shutting down...');
16
-
await monitor.stop();
17
-
process.exit(0);
18
-
});
19
-
20
-
process.on('SIGTERM', async () => {
21
-
console.log('\n⏹️ Shutting down...');
22
-
await monitor.stop();
23
-
process.exit(0);
24
-
});
25
-
26
-
await monitor.start();
27
-
}
28
-
29
-
main().catch((error) => {
30
-
console.error('Fatal error:', error);
31
-
process.exit(1);
32
-
});
-38
src/test-fixed-firehose.js
-38
src/test-fixed-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
const api_1 = require("@atproto/api");
13
-
const firehose_fixed_1 = require("./firehose-fixed");
14
-
function main() {
15
-
return __awaiter(this, void 0, void 0, function* () {
16
-
console.log('🚀 Starting Fixed Firehose Test...');
17
-
const agent = new api_1.BskyAgent({
18
-
service: 'https://bsky.social'
19
-
});
20
-
const monitor = new firehose_fixed_1.FixedFirehoseMonitor(agent);
21
-
// Handle graceful shutdown
22
-
process.on('SIGINT', () => {
23
-
console.log('\n⏹️ Shutting down...');
24
-
monitor.stop();
25
-
process.exit(0);
26
-
});
27
-
process.on('SIGTERM', () => {
28
-
console.log('\n⏹️ Shutting down...');
29
-
monitor.stop();
30
-
process.exit(0);
31
-
});
32
-
yield monitor.start();
33
-
});
34
-
}
35
-
main().catch((error) => {
36
-
console.error('Fatal error:', error);
37
-
process.exit(1);
38
-
});
-32
src/test-fixed-firehose.ts
-32
src/test-fixed-firehose.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { FixedFirehoseMonitor } from './firehose-fixed';
3
-
4
-
async function main() {
5
-
console.log('🚀 Starting Fixed Firehose Test...');
6
-
7
-
const agent = new BskyAgent({
8
-
service: 'https://bsky.social'
9
-
});
10
-
11
-
const monitor = new FixedFirehoseMonitor(agent);
12
-
13
-
// Handle graceful shutdown
14
-
process.on('SIGINT', () => {
15
-
console.log('\n⏹️ Shutting down...');
16
-
monitor.stop();
17
-
process.exit(0);
18
-
});
19
-
20
-
process.on('SIGTERM', () => {
21
-
console.log('\n⏹️ Shutting down...');
22
-
monitor.stop();
23
-
process.exit(0);
24
-
});
25
-
26
-
await monitor.start();
27
-
}
28
-
29
-
main().catch((error) => {
30
-
console.error('Fatal error:', error);
31
-
process.exit(1);
32
-
});
-50
src/test-skyware-firehose.js
-50
src/test-skyware-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
const { FirehoseSubscription } = require('@skyware/firehose');
12
-
function testFirehose() {
13
-
return __awaiter(this, void 0, void 0, function* () {
14
-
console.log('🔥 Testing Skyware Firehose...');
15
-
const firehose = new FirehoseSubscription({
16
-
service: 'wss://bsky.network',
17
-
filter: {
18
-
collections: ['app.bsky.feed.post']
19
-
}
20
-
});
21
-
let messageCount = 0;
22
-
let vibeCount = 0;
23
-
firehose.on('commit', (commit) => {
24
-
messageCount++;
25
-
commit.ops.forEach((op) => {
26
-
var _a;
27
-
if (op.action === 'create' && ((_a = op.record) === null || _a === void 0 ? void 0 : _a.text)) {
28
-
const text = op.record.text;
29
-
if (text.toLowerCase().includes('#vibe-')) {
30
-
vibeCount++;
31
-
console.log(`\n🎯 FOUND #vibe-* POST!`);
32
-
console.log(` Author: ${commit.repo}`);
33
-
console.log(` Text: ${text}`);
34
-
console.log(` Path: ${op.path}`);
35
-
}
36
-
}
37
-
});
38
-
});
39
-
firehose.on('error', (error) => {
40
-
console.error('Firehose error:', error);
41
-
});
42
-
yield firehose.start();
43
-
console.log('📡 Connected to Skyware Firehose');
44
-
// Log stats every 10 seconds
45
-
setInterval(() => {
46
-
console.log(`📊 Stats: ${messageCount} messages, ${vibeCount} #vibe-* posts`);
47
-
}, 10000);
48
-
});
49
-
}
50
-
testFirehose().catch(console.error);
-46
src/test-skyware-firehose.ts
-46
src/test-skyware-firehose.ts
···
1
-
const { FirehoseSubscription } = require('@skyware/firehose');
2
-
3
-
async function testFirehose() {
4
-
console.log('🔥 Testing Skyware Firehose...');
5
-
6
-
const firehose = new FirehoseSubscription({
7
-
service: 'wss://bsky.network',
8
-
filter: {
9
-
collections: ['app.bsky.feed.post']
10
-
}
11
-
});
12
-
13
-
let messageCount = 0;
14
-
let vibeCount = 0;
15
-
16
-
firehose.on('commit', (commit: any) => {
17
-
messageCount++;
18
-
19
-
commit.ops.forEach((op: any) => {
20
-
if (op.action === 'create' && op.record?.text) {
21
-
const text = op.record.text;
22
-
if (text.toLowerCase().includes('#vibe-')) {
23
-
vibeCount++;
24
-
console.log(`\n🎯 FOUND #vibe-* POST!`);
25
-
console.log(` Author: ${commit.repo}`);
26
-
console.log(` Text: ${text}`);
27
-
console.log(` Path: ${op.path}`);
28
-
}
29
-
}
30
-
});
31
-
});
32
-
33
-
firehose.on('error', (error: any) => {
34
-
console.error('Firehose error:', error);
35
-
});
36
-
37
-
await firehose.start();
38
-
console.log('📡 Connected to Skyware Firehose');
39
-
40
-
// Log stats every 10 seconds
41
-
setInterval(() => {
42
-
console.log(`📊 Stats: ${messageCount} messages, ${vibeCount} #vibe-* posts`);
43
-
}, 10000);
44
-
}
45
-
46
-
testFirehose().catch(console.error);
-67
src/test-vibe-post.js
-67
src/test-vibe-post.js
···
1
-
"use strict";
2
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
-
if (k2 === undefined) k2 = k;
4
-
var desc = Object.getOwnPropertyDescriptor(m, k);
5
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
-
desc = { enumerable: true, get: function() { return m[k]; } };
7
-
}
8
-
Object.defineProperty(o, k2, desc);
9
-
}) : (function(o, m, k, k2) {
10
-
if (k2 === undefined) k2 = k;
11
-
o[k2] = m[k];
12
-
}));
13
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
15
-
}) : function(o, v) {
16
-
o["default"] = v;
17
-
});
18
-
var __importStar = (this && this.__importStar) || (function () {
19
-
var ownKeys = function(o) {
20
-
ownKeys = Object.getOwnPropertyNames || function (o) {
21
-
var ar = [];
22
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
-
return ar;
24
-
};
25
-
return ownKeys(o);
26
-
};
27
-
return function (mod) {
28
-
if (mod && mod.__esModule) return mod;
29
-
var result = {};
30
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
-
__setModuleDefault(result, mod);
32
-
return result;
33
-
};
34
-
})();
35
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
-
return new (P || (P = Promise))(function (resolve, reject) {
38
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
42
-
});
43
-
};
44
-
Object.defineProperty(exports, "__esModule", { value: true });
45
-
const api_1 = require("@atproto/api");
46
-
const dotenv = __importStar(require("dotenv"));
47
-
dotenv.config();
48
-
function postVibeTest() {
49
-
return __awaiter(this, void 0, void 0, function* () {
50
-
const agent = new api_1.BskyAgent({
51
-
service: 'https://bsky.social'
52
-
});
53
-
yield agent.login({
54
-
identifier: process.env.BLUESKY_HANDLE,
55
-
password: process.env.BLUESKY_PASSWORD,
56
-
});
57
-
const testVibeName = `test_firehose_${Date.now()}`;
58
-
console.log(`Posting test vibe: #vibe-${testVibeName}`);
59
-
const result = yield agent.post({
60
-
text: `Testing Blonk firehose monitoring! #vibe-${testVibeName}`,
61
-
createdAt: new Date().toISOString(),
62
-
});
63
-
console.log('Posted:', result.uri);
64
-
console.log(`Now monitor the firehose logs to see if it detects: #vibe-${testVibeName}`);
65
-
});
66
-
}
67
-
postVibeTest().catch(console.error);
-29
src/test-vibe-post.ts
-29
src/test-vibe-post.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import * as dotenv from 'dotenv';
3
-
4
-
dotenv.config();
5
-
6
-
async function postVibeTest() {
7
-
const agent = new BskyAgent({
8
-
service: 'https://bsky.social'
9
-
});
10
-
11
-
await agent.login({
12
-
identifier: process.env.BLUESKY_HANDLE!,
13
-
password: process.env.BLUESKY_PASSWORD!,
14
-
});
15
-
16
-
const testVibeName = `test_firehose_${Date.now()}`;
17
-
18
-
console.log(`Posting test vibe: #vibe-${testVibeName}`);
19
-
20
-
const result = await agent.post({
21
-
text: `Testing Blonk firehose monitoring! #vibe-${testVibeName}`,
22
-
createdAt: new Date().toISOString(),
23
-
});
24
-
25
-
console.log('Posted:', result.uri);
26
-
console.log(`Now monitor the firehose logs to see if it detects: #vibe-${testVibeName}`);
27
-
}
28
-
29
-
postVibeTest().catch(console.error);
-155
src/typed-firehose.js
-155
src/typed-firehose.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.TypedFirehoseMonitor = void 0;
13
-
const ws_1 = require("ws");
14
-
const cbor_x_1 = require("cbor-x");
15
-
const repo_1 = require("@atproto/repo");
16
-
const vibe_monitor_1 = require("./vibe-monitor");
17
-
class TypedFirehoseMonitor {
18
-
constructor(agent) {
19
-
this.ws = null;
20
-
this.reconnectTimeout = null;
21
-
this.statsInterval = null;
22
-
this.messageCount = 0;
23
-
this.vibeDetectionCount = 0;
24
-
this.errorCount = 0;
25
-
this.vibeMonitor = new vibe_monitor_1.VibeMonitor(agent);
26
-
}
27
-
start() {
28
-
return __awaiter(this, void 0, void 0, function* () {
29
-
console.log('🔥 Starting typed Bluesky Firehose monitoring for #vibe-* hashtags...');
30
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
31
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
32
-
this.ws = new ws_1.WebSocket(firehoseUrl);
33
-
this.ws.on('open', () => {
34
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
35
-
this.messageCount = 0;
36
-
this.vibeDetectionCount = 0;
37
-
this.errorCount = 0;
38
-
// Log stats every 30 seconds
39
-
this.statsInterval = setInterval(() => {
40
-
console.log(`📊 Firehose stats: ${this.messageCount} messages, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
41
-
}, 30000);
42
-
});
43
-
this.ws.on('message', (data) => __awaiter(this, void 0, void 0, function* () {
44
-
this.messageCount++;
45
-
try {
46
-
// Decode the CBOR message
47
-
const decoded = (0, cbor_x_1.decode)(new Uint8Array(data));
48
-
// Handle different message types
49
-
switch (decoded.$type) {
50
-
case 'com.atproto.sync.subscribeRepos#commit':
51
-
yield this.handleCommit(decoded);
52
-
break;
53
-
case 'com.atproto.sync.subscribeRepos#error':
54
-
console.error('Firehose error:', decoded.error, decoded.message);
55
-
this.errorCount++;
56
-
break;
57
-
case 'com.atproto.sync.subscribeRepos#info':
58
-
console.log('Firehose info:', decoded.name, decoded.message);
59
-
break;
60
-
default:
61
-
// Unknown message type
62
-
if (this.messageCount % 1000 === 0) {
63
-
console.log(`Unknown message type: ${decoded === null || decoded === void 0 ? void 0 : decoded.$type}`);
64
-
}
65
-
}
66
-
}
67
-
catch (error) {
68
-
// Only log every 100th error to avoid spam
69
-
if (this.errorCount % 100 === 0) {
70
-
console.error('Error processing firehose message:', error);
71
-
}
72
-
this.errorCount++;
73
-
}
74
-
}));
75
-
this.ws.on('error', (error) => {
76
-
console.error('❌ Firehose WebSocket error:', error.message);
77
-
if (error.code) {
78
-
console.error(' Error code:', error.code);
79
-
}
80
-
});
81
-
this.ws.on('close', (code, reason) => {
82
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
83
-
console.log(' Reconnecting in 5 seconds...');
84
-
if (this.statsInterval) {
85
-
clearInterval(this.statsInterval);
86
-
this.statsInterval = null;
87
-
}
88
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
89
-
});
90
-
});
91
-
}
92
-
handleCommit(commit) {
93
-
return __awaiter(this, void 0, void 0, function* () {
94
-
try {
95
-
// Parse the CAR file from blocks
96
-
const car = yield (0, repo_1.readCar)(commit.blocks);
97
-
// Process each operation
98
-
for (const op of commit.ops) {
99
-
// We only care about post creates
100
-
if (op.action === 'create' && op.path.includes('app.bsky.feed.post')) {
101
-
try {
102
-
// Get the record bytes from the CAR file using the operation's CID
103
-
const recordBytes = car.blocks.get(op.cid);
104
-
if (!recordBytes)
105
-
continue;
106
-
// Convert CBOR to lexicon record
107
-
const record = (0, repo_1.cborToLexRecord)(recordBytes);
108
-
// Check for #vibe- hashtags
109
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
110
-
this.vibeDetectionCount++;
111
-
const authorDid = commit.repo;
112
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
113
-
console.log(` Author DID: ${authorDid}`);
114
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
115
-
console.log(` Path: ${op.path}`);
116
-
// Process the vibe mention
117
-
const postUri = `at://${authorDid}/${op.path}`;
118
-
yield this.vibeMonitor.checkPost(record.text, authorDid, postUri);
119
-
}
120
-
}
121
-
catch (e) {
122
-
// Record-specific error, don't spam logs
123
-
if (this.errorCount % 100 === 0) {
124
-
console.error('Error processing post record:', e);
125
-
}
126
-
this.errorCount++;
127
-
}
128
-
}
129
-
}
130
-
}
131
-
catch (error) {
132
-
// CAR parsing error
133
-
if (this.errorCount % 100 === 0) {
134
-
console.error('Error parsing CAR file:', error);
135
-
}
136
-
this.errorCount++;
137
-
}
138
-
});
139
-
}
140
-
stop() {
141
-
if (this.reconnectTimeout) {
142
-
clearTimeout(this.reconnectTimeout);
143
-
this.reconnectTimeout = null;
144
-
}
145
-
if (this.statsInterval) {
146
-
clearInterval(this.statsInterval);
147
-
this.statsInterval = null;
148
-
}
149
-
if (this.ws) {
150
-
this.ws.close();
151
-
this.ws = null;
152
-
}
153
-
}
154
-
}
155
-
exports.TypedFirehoseMonitor = TypedFirehoseMonitor;
-203
src/typed-firehose.ts
-203
src/typed-firehose.ts
···
1
-
import { WebSocket } from 'ws';
2
-
import { decode } from 'cbor-x';
3
-
import { readCar, cborToLexRecord } from '@atproto/repo';
4
-
import { VibeMonitor } from './vibe-monitor';
5
-
import { BskyAgent } from '@atproto/api';
6
-
7
-
// Firehose message types
8
-
interface FirehoseCommit {
9
-
$type: 'com.atproto.sync.subscribeRepos#commit';
10
-
seq: number;
11
-
rebase: boolean;
12
-
tooBig: boolean;
13
-
repo: string; // DID of the repo
14
-
commit: string; // CID of the commit
15
-
prev?: string;
16
-
blocks: Uint8Array; // CAR file containing the record blocks
17
-
ops: CommitOperation[];
18
-
time: string;
19
-
}
20
-
21
-
interface CommitOperation {
22
-
action: 'create' | 'update' | 'delete';
23
-
path: string;
24
-
cid: string;
25
-
}
26
-
27
-
interface PostRecord {
28
-
$type?: string;
29
-
text: string;
30
-
createdAt: string;
31
-
langs?: string[];
32
-
reply?: any;
33
-
embed?: any;
34
-
facets?: any[];
35
-
tags?: string[];
36
-
labels?: any;
37
-
}
38
-
39
-
interface FirehoseError {
40
-
$type: 'com.atproto.sync.subscribeRepos#error';
41
-
error: string;
42
-
message?: string;
43
-
}
44
-
45
-
interface FirehoseInfo {
46
-
$type: 'com.atproto.sync.subscribeRepos#info';
47
-
name: string;
48
-
message?: string;
49
-
}
50
-
51
-
type FirehoseMessage = FirehoseCommit | FirehoseError | FirehoseInfo;
52
-
53
-
export class TypedFirehoseMonitor {
54
-
private ws: WebSocket | null = null;
55
-
private vibeMonitor: VibeMonitor;
56
-
private reconnectTimeout: NodeJS.Timeout | null = null;
57
-
private statsInterval: NodeJS.Timeout | null = null;
58
-
private messageCount = 0;
59
-
private vibeDetectionCount = 0;
60
-
private errorCount = 0;
61
-
62
-
constructor(agent: BskyAgent) {
63
-
this.vibeMonitor = new VibeMonitor(agent);
64
-
}
65
-
66
-
async start() {
67
-
console.log('🔥 Starting typed Bluesky Firehose monitoring for #vibe-* hashtags...');
68
-
69
-
const firehoseUrl = 'wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos';
70
-
console.log(`🔗 Connecting to: ${firehoseUrl}`);
71
-
72
-
this.ws = new WebSocket(firehoseUrl);
73
-
74
-
this.ws.on('open', () => {
75
-
console.log('📡 Connected to Bluesky Firehose - monitoring all posts for #vibe-*');
76
-
this.messageCount = 0;
77
-
this.vibeDetectionCount = 0;
78
-
this.errorCount = 0;
79
-
80
-
// Log stats every 30 seconds
81
-
this.statsInterval = setInterval(() => {
82
-
console.log(`📊 Firehose stats: ${this.messageCount} messages, ${this.vibeDetectionCount} #vibe-* detections, ${this.errorCount} errors`);
83
-
}, 30000);
84
-
});
85
-
86
-
this.ws.on('message', async (data: Buffer) => {
87
-
this.messageCount++;
88
-
89
-
try {
90
-
// Decode the CBOR message
91
-
const decoded = decode(new Uint8Array(data)) as FirehoseMessage;
92
-
93
-
// Handle different message types
94
-
switch (decoded.$type) {
95
-
case 'com.atproto.sync.subscribeRepos#commit':
96
-
await this.handleCommit(decoded);
97
-
break;
98
-
case 'com.atproto.sync.subscribeRepos#error':
99
-
console.error('Firehose error:', decoded.error, decoded.message);
100
-
this.errorCount++;
101
-
break;
102
-
case 'com.atproto.sync.subscribeRepos#info':
103
-
console.log('Firehose info:', decoded.name, decoded.message);
104
-
break;
105
-
default:
106
-
// Unknown message type
107
-
if (this.messageCount % 1000 === 0) {
108
-
console.log(`Unknown message type: ${(decoded as any)?.$type}`);
109
-
}
110
-
}
111
-
} catch (error) {
112
-
// Only log every 100th error to avoid spam
113
-
if (this.errorCount % 100 === 0) {
114
-
console.error('Error processing firehose message:', error);
115
-
}
116
-
this.errorCount++;
117
-
}
118
-
});
119
-
120
-
this.ws.on('error', (error: any) => {
121
-
console.error('❌ Firehose WebSocket error:', error.message);
122
-
if (error.code) {
123
-
console.error(' Error code:', error.code);
124
-
}
125
-
});
126
-
127
-
this.ws.on('close', (code, reason) => {
128
-
console.log(`🔌 Firehose disconnected: Code ${code}${reason ? `, Reason: ${reason}` : ''}`);
129
-
console.log(' Reconnecting in 5 seconds...');
130
-
131
-
if (this.statsInterval) {
132
-
clearInterval(this.statsInterval);
133
-
this.statsInterval = null;
134
-
}
135
-
136
-
this.reconnectTimeout = setTimeout(() => this.start(), 5000);
137
-
});
138
-
}
139
-
140
-
private async handleCommit(commit: FirehoseCommit) {
141
-
try {
142
-
// Parse the CAR file from blocks
143
-
const car = await readCar(commit.blocks);
144
-
145
-
// Process each operation
146
-
for (const op of commit.ops) {
147
-
// We only care about post creates
148
-
if (op.action === 'create' && op.path.includes('app.bsky.feed.post')) {
149
-
try {
150
-
// Get the record bytes from the CAR file using the operation's CID
151
-
const recordBytes = car.blocks.get(op.cid);
152
-
if (!recordBytes) continue;
153
-
154
-
// Convert CBOR to lexicon record
155
-
const record = cborToLexRecord(recordBytes) as PostRecord;
156
-
157
-
// Check for #vibe- hashtags
158
-
if (record.text && typeof record.text === 'string' && record.text.toLowerCase().includes('#vibe-')) {
159
-
this.vibeDetectionCount++;
160
-
const authorDid = commit.repo;
161
-
162
-
console.log(`\n🎯 Detected #vibe-* in Bluesky post!`);
163
-
console.log(` Author DID: ${authorDid}`);
164
-
console.log(` Text: "${record.text.substring(0, 100)}${record.text.length > 100 ? '...' : ''}"`);
165
-
console.log(` Path: ${op.path}`);
166
-
167
-
// Process the vibe mention
168
-
const postUri = `at://${authorDid}/${op.path}`;
169
-
await this.vibeMonitor.checkPost(record.text, authorDid, postUri);
170
-
}
171
-
} catch (e) {
172
-
// Record-specific error, don't spam logs
173
-
if (this.errorCount % 100 === 0) {
174
-
console.error('Error processing post record:', e);
175
-
}
176
-
this.errorCount++;
177
-
}
178
-
}
179
-
}
180
-
} catch (error) {
181
-
// CAR parsing error
182
-
if (this.errorCount % 100 === 0) {
183
-
console.error('Error parsing CAR file:', error);
184
-
}
185
-
this.errorCount++;
186
-
}
187
-
}
188
-
189
-
stop() {
190
-
if (this.reconnectTimeout) {
191
-
clearTimeout(this.reconnectTimeout);
192
-
this.reconnectTimeout = null;
193
-
}
194
-
if (this.statsInterval) {
195
-
clearInterval(this.statsInterval);
196
-
this.statsInterval = null;
197
-
}
198
-
if (this.ws) {
199
-
this.ws.close();
200
-
this.ws = null;
201
-
}
202
-
}
203
-
}
-41
src/utils/vibe-validation.js
-41
src/utils/vibe-validation.js
···
1
-
"use strict";
2
-
// Valid vibe name formats:
3
-
// - SCREAMING_SNAKE_CASE
4
-
// - snake_case
5
-
// - SCREAMINGCASE
6
-
// - lowercase
7
-
// Must be alphanumeric with underscores only, no spaces
8
-
Object.defineProperty(exports, "__esModule", { value: true });
9
-
exports.isValidVibeName = isValidVibeName;
10
-
exports.normalizeVibeName = normalizeVibeName;
11
-
exports.extractVibeFromHashtag = extractVibeFromHashtag;
12
-
function isValidVibeName(name) {
13
-
// Must not be empty
14
-
if (!name || name.length === 0)
15
-
return false;
16
-
// Must not contain spaces
17
-
if (name.includes(' '))
18
-
return false;
19
-
// Must only contain letters, numbers, and underscores
20
-
if (!/^[a-zA-Z0-9_]+$/.test(name))
21
-
return false;
22
-
// Must be between 3 and 30 characters
23
-
if (name.length < 3 || name.length > 30)
24
-
return false;
25
-
return true;
26
-
}
27
-
function normalizeVibeName(name) {
28
-
// Convert to lowercase for consistency in storage
29
-
return name.toLowerCase();
30
-
}
31
-
function extractVibeFromHashtag(text) {
32
-
// Match #vibe-SOMETHING pattern
33
-
const match = text.match(/#vibe-([a-zA-Z0-9_]+)/i);
34
-
if (match && match[1]) {
35
-
const vibeName = match[1];
36
-
if (isValidVibeName(vibeName)) {
37
-
return normalizeVibeName(vibeName);
38
-
}
39
-
}
40
-
return null;
41
-
}
-41
src/utils/vibe-validation.ts
-41
src/utils/vibe-validation.ts
···
1
-
// Valid vibe name formats:
2
-
// - SCREAMING_SNAKE_CASE
3
-
// - snake_case
4
-
// - SCREAMINGCASE
5
-
// - lowercase
6
-
// Must be alphanumeric with underscores only, no spaces
7
-
8
-
export function isValidVibeName(name: string): boolean {
9
-
// Must not be empty
10
-
if (!name || name.length === 0) return false;
11
-
12
-
// Must not contain spaces
13
-
if (name.includes(' ')) return false;
14
-
15
-
// Must only contain letters, numbers, and underscores
16
-
if (!/^[a-zA-Z0-9_]+$/.test(name)) return false;
17
-
18
-
// Must be between 3 and 30 characters
19
-
if (name.length < 3 || name.length > 30) return false;
20
-
21
-
return true;
22
-
}
23
-
24
-
export function normalizeVibeName(name: string): string {
25
-
// Convert to lowercase for consistency in storage
26
-
return name.toLowerCase();
27
-
}
28
-
29
-
export function extractVibeFromHashtag(text: string): string | null {
30
-
// Match #vibe-SOMETHING pattern
31
-
const match = text.match(/#vibe-([a-zA-Z0-9_]+)/i);
32
-
33
-
if (match && match[1]) {
34
-
const vibeName = match[1];
35
-
if (isValidVibeName(vibeName)) {
36
-
return normalizeVibeName(vibeName);
37
-
}
38
-
}
39
-
40
-
return null;
41
-
}
-95
src/vibe-monitor.js
-95
src/vibe-monitor.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.VibeMonitor = void 0;
13
-
const vibes_1 = require("./vibes");
14
-
const database_1 = require("./database");
15
-
const vibe_validation_1 = require("./utils/vibe-validation");
16
-
const UNIQUE_MENTION_THRESHOLD = 5; // Number of unique users needed to create a vibe
17
-
const TOTAL_MENTION_THRESHOLD = 10; // OR total number of mentions needed
18
-
class VibeMonitor {
19
-
constructor(agent) {
20
-
this.agent = agent;
21
-
this.vibeManager = new vibes_1.VibeManager(agent);
22
-
}
23
-
checkPost(text, authorDid, postUri) {
24
-
return __awaiter(this, void 0, void 0, function* () {
25
-
const vibeName = (0, vibe_validation_1.extractVibeFromHashtag)(text);
26
-
if (!vibeName)
27
-
return;
28
-
console.log(`📡 Detected vibe mention: #vibe-${vibeName} by ${authorDid}`);
29
-
// Track the mention
30
-
database_1.vibeMentionDb.trackMention(vibeName, authorDid, postUri);
31
-
// Check if vibe already exists
32
-
const existingVibe = database_1.vibeMentionDb.getVibeByName(vibeName);
33
-
if (existingVibe) {
34
-
console.log(`✅ Vibe "${vibeName}" already exists`);
35
-
return;
36
-
}
37
-
// Check if we've hit either threshold
38
-
const uniqueMentionCount = database_1.vibeMentionDb.getMentionCount(vibeName);
39
-
const totalMentionCount = database_1.vibeMentionDb.getTotalMentionCount(vibeName);
40
-
console.log(`📊 Vibe "${vibeName}" has ${uniqueMentionCount} unique mentions, ${totalMentionCount} total mentions`);
41
-
if (uniqueMentionCount >= UNIQUE_MENTION_THRESHOLD || totalMentionCount >= TOTAL_MENTION_THRESHOLD) {
42
-
yield this.createVibeFromHashtag(vibeName, uniqueMentionCount, totalMentionCount);
43
-
}
44
-
});
45
-
}
46
-
createVibeFromHashtag(vibeName, uniqueMentions, totalMentions) {
47
-
return __awaiter(this, void 0, void 0, function* () {
48
-
try {
49
-
console.log(`🎉 Creating new vibe "${vibeName}" after ${uniqueMentions} unique mentions (${totalMentions} total)!`);
50
-
// Generate a mood based on the vibe name
51
-
const mood = this.generateMood(vibeName);
52
-
// Create the vibe
53
-
const uri = yield this.vibeManager.createVibe(vibeName, mood, '🌊', // Default emoji
54
-
'#7B68EE' // Default color (medium purple)
55
-
);
56
-
// Store in local database
57
-
database_1.vibeDb.insertVibe({
58
-
uri,
59
-
cid: 'generated', // We'd get this from the creation response
60
-
creatorDid: 'system',
61
-
name: vibeName,
62
-
mood,
63
-
emoji: '🌊',
64
-
color: '#7B68EE',
65
-
memberCount: uniqueMentions,
66
-
createdAt: new Date().toISOString(),
67
-
});
68
-
console.log(`✨ Vibe "${vibeName}" created successfully!`);
69
-
}
70
-
catch (error) {
71
-
console.error(`Failed to create vibe "${vibeName}":`, error);
72
-
}
73
-
});
74
-
}
75
-
generateMood(vibeName) {
76
-
// Generate a mood description based on the vibe name
77
-
const words = vibeName.split('_').filter(w => w.length > 0);
78
-
if (words.length === 0)
79
-
return 'mysterious energy';
80
-
// Some fun default moods based on patterns
81
-
if (vibeName.includes('chill'))
82
-
return 'relaxed and easy-going vibes';
83
-
if (vibeName.includes('chaos'))
84
-
return 'delightfully unpredictable energy';
85
-
if (vibeName.includes('nerd'))
86
-
return 'enthusiastically geeky discussions';
87
-
if (vibeName.includes('midnight'))
88
-
return 'late night contemplative mood';
89
-
if (vibeName.includes('morning'))
90
-
return 'fresh start energy';
91
-
// Default: create a mood from the words
92
-
return `${words.join(' ')} energy, discovered by the community`;
93
-
}
94
-
}
95
-
exports.VibeMonitor = VibeMonitor;
-95
src/vibe-monitor.ts
-95
src/vibe-monitor.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { VibeManager } from './vibes';
3
-
import { vibeMentionDb, vibeDb } from './database';
4
-
import { extractVibeFromHashtag, normalizeVibeName } from './utils/vibe-validation';
5
-
6
-
const UNIQUE_MENTION_THRESHOLD = 5; // Number of unique users needed to create a vibe
7
-
const TOTAL_MENTION_THRESHOLD = 10; // OR total number of mentions needed
8
-
9
-
export class VibeMonitor {
10
-
private agent: BskyAgent;
11
-
private vibeManager: VibeManager;
12
-
13
-
constructor(agent: BskyAgent) {
14
-
this.agent = agent;
15
-
this.vibeManager = new VibeManager(agent);
16
-
}
17
-
18
-
async checkPost(text: string, authorDid: string, postUri: string) {
19
-
const vibeName = extractVibeFromHashtag(text);
20
-
21
-
if (!vibeName) return;
22
-
23
-
console.log(`📡 Detected vibe mention: #vibe-${vibeName} by ${authorDid}`);
24
-
25
-
// Track the mention
26
-
vibeMentionDb.trackMention(vibeName, authorDid, postUri);
27
-
28
-
// Check if vibe already exists
29
-
const existingVibe = vibeMentionDb.getVibeByName(vibeName);
30
-
if (existingVibe) {
31
-
console.log(`✅ Vibe "${vibeName}" already exists`);
32
-
return;
33
-
}
34
-
35
-
// Check if we've hit either threshold
36
-
const uniqueMentionCount = vibeMentionDb.getMentionCount(vibeName);
37
-
const totalMentionCount = vibeMentionDb.getTotalMentionCount(vibeName);
38
-
console.log(`📊 Vibe "${vibeName}" has ${uniqueMentionCount} unique mentions, ${totalMentionCount} total mentions`);
39
-
40
-
if (uniqueMentionCount >= UNIQUE_MENTION_THRESHOLD || totalMentionCount >= TOTAL_MENTION_THRESHOLD) {
41
-
await this.createVibeFromHashtag(vibeName, uniqueMentionCount, totalMentionCount);
42
-
}
43
-
}
44
-
45
-
private async createVibeFromHashtag(vibeName: string, uniqueMentions: number, totalMentions: number) {
46
-
try {
47
-
console.log(`🎉 Creating new vibe "${vibeName}" after ${uniqueMentions} unique mentions (${totalMentions} total)!`);
48
-
49
-
// Generate a mood based on the vibe name
50
-
const mood = this.generateMood(vibeName);
51
-
52
-
// Create the vibe
53
-
const uri = await this.vibeManager.createVibe(
54
-
vibeName,
55
-
mood,
56
-
'🌊', // Default emoji
57
-
'#7B68EE' // Default color (medium purple)
58
-
);
59
-
60
-
// Store in local database
61
-
vibeDb.insertVibe({
62
-
uri,
63
-
cid: 'generated', // We'd get this from the creation response
64
-
creatorDid: 'system',
65
-
name: vibeName,
66
-
mood,
67
-
emoji: '🌊',
68
-
color: '#7B68EE',
69
-
memberCount: uniqueMentions,
70
-
createdAt: new Date().toISOString(),
71
-
});
72
-
73
-
console.log(`✨ Vibe "${vibeName}" created successfully!`);
74
-
} catch (error) {
75
-
console.error(`Failed to create vibe "${vibeName}":`, error);
76
-
}
77
-
}
78
-
79
-
private generateMood(vibeName: string): string {
80
-
// Generate a mood description based on the vibe name
81
-
const words = vibeName.split('_').filter(w => w.length > 0);
82
-
83
-
if (words.length === 0) return 'mysterious energy';
84
-
85
-
// Some fun default moods based on patterns
86
-
if (vibeName.includes('chill')) return 'relaxed and easy-going vibes';
87
-
if (vibeName.includes('chaos')) return 'delightfully unpredictable energy';
88
-
if (vibeName.includes('nerd')) return 'enthusiastically geeky discussions';
89
-
if (vibeName.includes('midnight')) return 'late night contemplative mood';
90
-
if (vibeName.includes('morning')) return 'fresh start energy';
91
-
92
-
// Default: create a mood from the words
93
-
return `${words.join(' ')} energy, discovered by the community`;
94
-
}
95
-
}
-107
src/vibes.js
-107
src/vibes.js
···
1
-
"use strict";
2
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
-
return new (P || (P = Promise))(function (resolve, reject) {
5
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
9
-
});
10
-
};
11
-
Object.defineProperty(exports, "__esModule", { value: true });
12
-
exports.VibeManager = void 0;
13
-
const schemas_1 = require("./schemas");
14
-
const vibe_validation_1 = require("./utils/vibe-validation");
15
-
const database_1 = require("./database");
16
-
class VibeManager {
17
-
constructor(agent) {
18
-
this.agent = agent;
19
-
}
20
-
createVibe(name, mood, emoji, color) {
21
-
return __awaiter(this, void 0, void 0, function* () {
22
-
var _a;
23
-
// Validate vibe name
24
-
if (!(0, vibe_validation_1.isValidVibeName)(name)) {
25
-
throw new Error('Invalid vibe name. Must be alphanumeric with underscores only, no spaces.');
26
-
}
27
-
// Normalize the name
28
-
const normalizedName = (0, vibe_validation_1.normalizeVibeName)(name);
29
-
// Check for duplicates
30
-
const existingVibe = database_1.vibeMentionDb.getVibeByName(normalizedName);
31
-
if (existingVibe) {
32
-
throw new Error(`Vibe "${normalizedName}" already exists`);
33
-
}
34
-
const vibe = {
35
-
name: normalizedName,
36
-
mood,
37
-
emoji,
38
-
color,
39
-
createdAt: new Date().toISOString(),
40
-
memberCount: 1, // Creator is automatically a member
41
-
};
42
-
const response = yield this.agent.com.atproto.repo.createRecord({
43
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
44
-
collection: schemas_1.VIBE_NSID,
45
-
record: vibe,
46
-
});
47
-
// Automatically join the vibe you created
48
-
yield this.joinVibe(response.data.uri, response.data.cid);
49
-
console.log(`Created vibe: ${name} - ${mood}`);
50
-
return response.data.uri;
51
-
});
52
-
}
53
-
joinVibe(vibeUri, vibeCid) {
54
-
return __awaiter(this, void 0, void 0, function* () {
55
-
var _a;
56
-
const membership = {
57
-
vibe: {
58
-
uri: vibeUri,
59
-
cid: vibeCid,
60
-
},
61
-
createdAt: new Date().toISOString(),
62
-
};
63
-
yield this.agent.com.atproto.repo.createRecord({
64
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
65
-
collection: schemas_1.VIBE_MEMBER_NSID,
66
-
record: membership,
67
-
});
68
-
});
69
-
}
70
-
getVibes() {
71
-
return __awaiter(this, arguments, void 0, function* (limit = 50) {
72
-
var _a;
73
-
const response = yield this.agent.com.atproto.repo.listRecords({
74
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
75
-
collection: schemas_1.VIBE_NSID,
76
-
limit,
77
-
});
78
-
return response.data.records.map(record => (Object.assign({ uri: record.uri, cid: record.cid }, record.value)));
79
-
});
80
-
}
81
-
getMyVibes() {
82
-
return __awaiter(this, void 0, void 0, function* () {
83
-
var _a;
84
-
const response = yield this.agent.com.atproto.repo.listRecords({
85
-
repo: (_a = this.agent.session) === null || _a === void 0 ? void 0 : _a.did,
86
-
collection: schemas_1.VIBE_MEMBER_NSID,
87
-
limit: 100,
88
-
});
89
-
return response.data.records.map(record => ({
90
-
uri: record.uri,
91
-
membership: record.value,
92
-
}));
93
-
});
94
-
}
95
-
getVibe(uri) {
96
-
return __awaiter(this, void 0, void 0, function* () {
97
-
const [repo, collection, rkey] = uri.replace('at://', '').split('/');
98
-
const response = yield this.agent.com.atproto.repo.getRecord({
99
-
repo,
100
-
collection,
101
-
rkey,
102
-
});
103
-
return Object.assign({ uri, cid: response.data.cid }, response.data.value);
104
-
});
105
-
}
106
-
}
107
-
exports.VibeManager = VibeManager;
-104
src/vibes.ts
-104
src/vibes.ts
···
1
-
import { BskyAgent } from '@atproto/api';
2
-
import { BlonkVibe, BlonkVibeMember, VIBE_NSID, VIBE_MEMBER_NSID } from './schemas';
3
-
import { isValidVibeName, normalizeVibeName } from './utils/vibe-validation';
4
-
import { vibeMentionDb } from './database';
5
-
6
-
export class VibeManager {
7
-
constructor(private agent: BskyAgent) {}
8
-
9
-
async createVibe(name: string, mood: string, emoji?: string, color?: string): Promise<string> {
10
-
// Validate vibe name
11
-
if (!isValidVibeName(name)) {
12
-
throw new Error('Invalid vibe name. Must be alphanumeric with underscores only, no spaces.');
13
-
}
14
-
15
-
// Normalize the name
16
-
const normalizedName = normalizeVibeName(name);
17
-
18
-
// Check for duplicates
19
-
const existingVibe = vibeMentionDb.getVibeByName(normalizedName);
20
-
if (existingVibe) {
21
-
throw new Error(`Vibe "${normalizedName}" already exists`);
22
-
}
23
-
24
-
const vibe: BlonkVibe = {
25
-
name: normalizedName,
26
-
mood,
27
-
emoji,
28
-
color,
29
-
createdAt: new Date().toISOString(),
30
-
memberCount: 1, // Creator is automatically a member
31
-
};
32
-
33
-
const response = await this.agent.com.atproto.repo.createRecord({
34
-
repo: this.agent.session?.did!,
35
-
collection: VIBE_NSID,
36
-
record: vibe,
37
-
});
38
-
39
-
// Automatically join the vibe you created
40
-
await this.joinVibe(response.data.uri, response.data.cid);
41
-
42
-
console.log(`Created vibe: ${name} - ${mood}`);
43
-
return response.data.uri;
44
-
}
45
-
46
-
async joinVibe(vibeUri: string, vibeCid: string): Promise<void> {
47
-
const membership: BlonkVibeMember = {
48
-
vibe: {
49
-
uri: vibeUri,
50
-
cid: vibeCid,
51
-
},
52
-
createdAt: new Date().toISOString(),
53
-
};
54
-
55
-
await this.agent.com.atproto.repo.createRecord({
56
-
repo: this.agent.session?.did!,
57
-
collection: VIBE_MEMBER_NSID,
58
-
record: membership,
59
-
});
60
-
}
61
-
62
-
async getVibes(limit: number = 50) {
63
-
const response = await this.agent.com.atproto.repo.listRecords({
64
-
repo: this.agent.session?.did!,
65
-
collection: VIBE_NSID,
66
-
limit,
67
-
});
68
-
69
-
return response.data.records.map(record => ({
70
-
uri: record.uri,
71
-
cid: record.cid,
72
-
...record.value as BlonkVibe,
73
-
}));
74
-
}
75
-
76
-
async getMyVibes() {
77
-
const response = await this.agent.com.atproto.repo.listRecords({
78
-
repo: this.agent.session?.did!,
79
-
collection: VIBE_MEMBER_NSID,
80
-
limit: 100,
81
-
});
82
-
83
-
return response.data.records.map(record => ({
84
-
uri: record.uri,
85
-
membership: record.value as BlonkVibeMember,
86
-
}));
87
-
}
88
-
89
-
async getVibe(uri: string) {
90
-
const [repo, collection, rkey] = uri.replace('at://', '').split('/');
91
-
92
-
const response = await this.agent.com.atproto.repo.getRecord({
93
-
repo,
94
-
collection,
95
-
rkey,
96
-
});
97
-
98
-
return {
99
-
uri,
100
-
cid: response.data.cid,
101
-
...response.data.value as BlonkVibe,
102
-
};
103
-
}
104
-
}
-117
tsconfig.json
-117
tsconfig.json
···
1
-
{
2
-
"compilerOptions": {
3
-
/* Visit https://aka.ms/tsconfig to read more about this file */
4
-
"rootDir": "./src",
5
-
"outDir": "./dist",
6
-
7
-
/* Projects */
8
-
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
9
-
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
10
-
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
11
-
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
12
-
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
13
-
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
14
-
15
-
/* Language and Environment */
16
-
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
17
-
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
18
-
// "jsx": "preserve", /* Specify what JSX code is generated. */
19
-
// "libReplacement": true, /* Enable lib replacement. */
20
-
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
21
-
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
22
-
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
23
-
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
24
-
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
25
-
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
26
-
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
27
-
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
28
-
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
29
-
30
-
/* Modules */
31
-
"module": "commonjs", /* Specify what module code is generated. */
32
-
// "rootDir": "./", /* Specify the root folder within your source files. */
33
-
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
34
-
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
35
-
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
36
-
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
37
-
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
38
-
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
39
-
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
40
-
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
41
-
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
42
-
// "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */
43
-
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
44
-
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
45
-
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
46
-
// "noUncheckedSideEffectImports": true, /* Check side effect imports. */
47
-
// "resolveJsonModule": true, /* Enable importing .json files. */
48
-
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
49
-
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
50
-
51
-
/* JavaScript Support */
52
-
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
53
-
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
54
-
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
55
-
56
-
/* Emit */
57
-
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
58
-
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
59
-
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
60
-
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
61
-
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
62
-
// "noEmit": true, /* Disable emitting files from a compilation. */
63
-
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
64
-
// "outDir": "./", /* Specify an output folder for all emitted files. */
65
-
// "removeComments": true, /* Disable emitting comments. */
66
-
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
67
-
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
68
-
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
69
-
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
70
-
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
71
-
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
72
-
// "newLine": "crlf", /* Set the newline character for emitting files. */
73
-
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
74
-
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
75
-
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
76
-
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
77
-
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
78
-
79
-
/* Interop Constraints */
80
-
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
81
-
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
82
-
// "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
83
-
// "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */
84
-
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
85
-
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
86
-
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
87
-
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
88
-
89
-
/* Type Checking */
90
-
"strict": true, /* Enable all strict type-checking options. */
91
-
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
92
-
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
93
-
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
94
-
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
95
-
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
96
-
// "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */
97
-
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
98
-
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
99
-
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
100
-
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
101
-
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
102
-
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
103
-
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
104
-
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
105
-
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
106
-
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
107
-
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
108
-
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
109
-
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
110
-
111
-
/* Completeness */
112
-
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
113
-
"skipLibCheck": true /* Skip type checking all .d.ts files. */
114
-
},
115
-
"include": ["src/**/*"],
116
-
"exclude": ["node_modules", "client", "dist"]
117
-
}