.claude
src
lib
routes
(oauth)
oauth
oauth-client-metadata.json
[actor]
···
5
5
"mcp__plugin_svelte_svelte__list-sections",
6
6
"mcp__plugin_svelte_svelte__get-documentation"
7
7
]
8
8
+
},
9
9
+
"sandbox": {
10
10
+
"enabled": true,
11
11
+
"autoAllowBashIfSandboxed": true
8
12
}
9
13
}
···
1
1
+
# Generate both with: pnpm env:setup-dev
2
2
+
CLIENT_ASSERTION_KEY=
3
3
+
COOKIE_SECRET=
4
4
+
5
5
+
# Set to your tunnel URL to use a confidential client in dev
6
6
+
# OAUTH_PUBLIC_URL=https://your-tunnel.trycloudflare.com
···
21
21
# Vite
22
22
vite.config.js.timestamp-*
23
23
vite.config.ts.timestamp-*
24
24
+
25
25
+
.pnpm-store
···
11
11
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
12
12
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13
13
"lint": "prettier --check . && eslint .",
14
14
-
"format": "prettier --write ."
14
14
+
"format": "prettier --write .",
15
15
+
"env:generate-key": "npx tsx src/lib/atproto/scripts/generate-key.ts",
16
16
+
"env:generate-secret": "npx tsx src/lib/atproto/scripts/generate-secret.ts",
17
17
+
"env:setup-dev": "npx tsx src/lib/atproto/scripts/setup-dev.ts"
15
18
},
16
19
"devDependencies": {
20
20
+
"@atcute/atproto": "^3.1.10",
21
21
+
"@atcute/bluesky": "^3.2.19",
22
22
+
"@atcute/client": "^4.2.1",
23
23
+
"@atcute/identity-resolver": "^1.2.2",
24
24
+
"@atcute/lexicons": "^1.2.9",
25
25
+
"@atcute/oauth-node-client": "^1.1.0",
26
26
+
"@atcute/tid": "^1.1.2",
27
27
+
"@cloudflare/workers-types": "^4.20260301.1",
17
28
"@eslint/compat": "^2.0.2",
18
29
"@eslint/js": "^9.39.2",
19
19
-
"@sveltejs/adapter-auto": "^7.0.0",
30
30
+
"@sveltejs/adapter-cloudflare": "^7.2.8",
20
31
"@sveltejs/kit": "^2.50.2",
21
32
"@sveltejs/vite-plugin-svelte": "^6.2.4",
22
33
"@tailwindcss/forms": "^0.5.11",
···
33
44
"svelte": "^5.51.0",
34
45
"svelte-check": "^4.4.2",
35
46
"tailwindcss": "^4.1.18",
47
47
+
"tsx": "^4.21.0",
36
48
"typescript": "^5.9.3",
37
49
"typescript-eslint": "^8.54.0",
38
50
"vite": "^7.3.1"
39
51
},
40
52
"dependencies": {
41
53
"@foxui/core": "^0.5.1",
54
54
+
"@foxui/social": "^0.5.1",
42
55
"@foxui/time": "^0.5.1",
43
56
"@internationalized/date": "^3.11.0",
44
57
"@number-flow/svelte": "^0.4.0",
45
58
"bits-ui": "^2.16.2",
46
59
"drand-client": "^1.4.2",
47
47
-
"tlock-js": "^0.9.0"
60
60
+
"tlock-js": "^0.9.0",
61
61
+
"valibot": "^1.2.0"
48
62
}
49
63
}
···
10
10
dependencies:
11
11
'@foxui/core':
12
12
specifier: ^0.5.1
13
13
-
version: 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(tailwindcss@4.2.1)
13
13
+
version: 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
14
14
+
'@foxui/social':
15
15
+
specifier: ^0.5.1
16
16
+
version: 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
14
17
'@foxui/time':
15
18
specifier: ^0.5.1
16
16
-
version: 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(tailwindcss@4.2.1)
19
19
+
version: 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
17
20
'@internationalized/date':
18
21
specifier: ^3.11.0
19
22
version: 3.11.0
···
22
25
version: 0.4.0(svelte@5.53.6)
23
26
bits-ui:
24
27
specifier: ^2.16.2
25
25
-
version: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
28
28
+
version: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
26
29
drand-client:
27
30
specifier: ^1.4.2
28
31
version: 1.4.2
29
32
tlock-js:
30
33
specifier: ^0.9.0
31
34
version: 0.9.0
35
35
+
valibot:
36
36
+
specifier: ^1.2.0
37
37
+
version: 1.2.0(typescript@5.9.3)
32
38
devDependencies:
39
39
+
'@atcute/atproto':
40
40
+
specifier: ^3.1.10
41
41
+
version: 3.1.10
42
42
+
'@atcute/bluesky':
43
43
+
specifier: ^3.2.19
44
44
+
version: 3.2.19
45
45
+
'@atcute/client':
46
46
+
specifier: ^4.2.1
47
47
+
version: 4.2.1
48
48
+
'@atcute/identity-resolver':
49
49
+
specifier: ^1.2.2
50
50
+
version: 1.2.2(@atcute/identity@1.1.3)
51
51
+
'@atcute/lexicons':
52
52
+
specifier: ^1.2.9
53
53
+
version: 1.2.9
54
54
+
'@atcute/oauth-node-client':
55
55
+
specifier: ^1.1.0
56
56
+
version: 1.1.0
57
57
+
'@atcute/tid':
58
58
+
specifier: ^1.1.2
59
59
+
version: 1.1.2
60
60
+
'@cloudflare/workers-types':
61
61
+
specifier: ^4.20260301.1
62
62
+
version: 4.20260301.1
33
63
'@eslint/compat':
34
64
specifier: ^2.0.2
35
65
version: 2.0.2(eslint@9.39.3(jiti@2.6.1))
36
66
'@eslint/js':
37
67
specifier: ^9.39.2
38
68
version: 9.39.3
39
39
-
'@sveltejs/adapter-auto':
40
40
-
specifier: ^7.0.0
41
41
-
version: 7.0.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))
69
69
+
'@sveltejs/adapter-cloudflare':
70
70
+
specifier: ^7.2.8
71
71
+
version: 7.2.8(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(wrangler@4.69.0(@cloudflare/workers-types@4.20260301.1))
42
72
'@sveltejs/kit':
43
73
specifier: ^2.50.2
44
44
-
version: 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
74
74
+
version: 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
45
75
'@sveltejs/vite-plugin-svelte':
46
76
specifier: ^6.2.4
47
47
-
version: 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
77
77
+
version: 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
48
78
'@tailwindcss/forms':
49
79
specifier: ^0.5.11
50
80
version: 0.5.11(tailwindcss@4.2.1)
···
53
83
version: 0.5.19(tailwindcss@4.2.1)
54
84
'@tailwindcss/vite':
55
85
specifier: ^4.1.18
56
56
-
version: 4.2.1(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
86
86
+
version: 4.2.1(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
57
87
'@types/node':
58
88
specifier: ^22
59
89
version: 22.19.13
···
87
117
tailwindcss:
88
118
specifier: ^4.1.18
89
119
version: 4.2.1
120
120
+
tsx:
121
121
+
specifier: ^4.21.0
122
122
+
version: 4.21.0
90
123
typescript:
91
124
specifier: ^5.9.3
92
125
version: 5.9.3
···
95
128
version: 8.56.1(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3)
96
129
vite:
97
130
specifier: ^7.3.1
98
98
-
version: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
131
131
+
version: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
99
132
100
133
packages:
101
134
135
135
+
'@atcute/atproto@3.1.10':
136
136
+
resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==}
137
137
+
138
138
+
'@atcute/bluesky@3.2.19':
139
139
+
resolution: {integrity: sha512-W/Sy2671A5eKkdWJn6nfCGoixqMFOouEKRbqRV3630I13Er9iS+gA/rGWUXlp5xNpbfCNmsQ6C1pEidUmO+00g==}
140
140
+
141
141
+
'@atcute/client@4.2.1':
142
142
+
resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==}
143
143
+
144
144
+
'@atcute/identity-resolver@1.2.2':
145
145
+
resolution: {integrity: sha512-eUh/UH4bFvuXS0X7epYCeJC/kj4rbBXfSRumLEH4smMVwNOgTo7cL/0Srty+P/qVPoZEyXdfEbS0PHJyzoXmHw==}
146
146
+
peerDependencies:
147
147
+
'@atcute/identity': ^1.0.0
148
148
+
149
149
+
'@atcute/identity@1.1.3':
150
150
+
resolution: {integrity: sha512-oIqPoI8TwWeQxvcLmFEZLdN2XdWcaLVtlm8pNk0E72As9HNzzD9pwKPrLr3rmTLRIoULPPFmq9iFNsTeCIU9ng==}
151
151
+
152
152
+
'@atcute/lexicons@1.2.9':
153
153
+
resolution: {integrity: sha512-/RRHm2Cw9o8Mcsrq0eo8fjS9okKYLGfuFwrQ0YoP/6sdSDsXshaTLJsvLlcUcaDaSJ1YFOuHIo3zr2Om2F/16g==}
154
154
+
155
155
+
'@atcute/multibase@1.1.8':
156
156
+
resolution: {integrity: sha512-pJgtImMZKCjqwRbu+2GzB+4xQjKBXDwdZOzeqe0u97zYKRGftpGYGvYv3+pMe2xXe+msDyu7Nv8iJp+U14otTA==}
157
157
+
158
158
+
'@atcute/oauth-crypto@0.1.0':
159
159
+
resolution: {integrity: sha512-qZYDCNLF/4B6AndYT1rsQelN8621AC5u/sL5PHvlr/qqAbmmUwCBGjEgRSyZtHE1AqD60VNiSMlOgAuEQTSl3w==}
160
160
+
161
161
+
'@atcute/oauth-keyset@0.1.0':
162
162
+
resolution: {integrity: sha512-+wqT/+I5Lg9VzKnKY3g88+N45xbq+wsdT6bHDGqCVa2u57gRvolFF4dY+weMfc/OX641BIZO6/o+zFtKBsMQnQ==}
163
163
+
164
164
+
'@atcute/oauth-node-client@1.1.0':
165
165
+
resolution: {integrity: sha512-xCp/VfjtvTeKscKR/oI2hdMTp1/DaF/7ll8b6yZOCgbKlVDDfhCn5mmKNVARGTNaoywxrXG3XffbWCIx3/E87w==}
166
166
+
167
167
+
'@atcute/oauth-types@0.1.1':
168
168
+
resolution: {integrity: sha512-u+3KMjse3Uc/9hDyilu1QVN7IpcnjVXgRzhddzBB8Uh6wePHNVBDdi9wQvFTVVA3zmxtMJVptXRyLLg6Ou9bqg==}
169
169
+
170
170
+
'@atcute/tid@1.1.2':
171
171
+
resolution: {integrity: sha512-bmPuOX/TOfcm/vsK9vM98spjkcx2wgd9S2PeK5oLgEr8IbNRPq7iMCAPzOL1nu5XAW3LlkOYQEbYRcw5vcQ37w==}
172
172
+
173
173
+
'@atcute/time-ms@1.2.3':
174
174
+
resolution: {integrity: sha512-pRrkYSVyPDCWHKp77Ygwg3lxgvfwnh52J3kOIWI1z93kM2jWQDSezbTNDLdJFAJT9xm4rnHsA+toN9Rdhrnidw==}
175
175
+
176
176
+
'@atcute/uint8array@1.1.1':
177
177
+
resolution: {integrity: sha512-3LsC8XB8TKe9q/5hOA5sFuzGaIFdJZJNewC5OKa3o/eU6+K7JR6see9Zy2JbQERNVnRl11EzbNov1efgLMAs4g==}
178
178
+
179
179
+
'@atcute/util-fetch@1.0.5':
180
180
+
resolution: {integrity: sha512-qjHj01BGxjSjIFdPiAjSARnodJIIyKxnCMMEcXMESo9TAyND6XZQqrie5fia+LlYWVXdpsTds8uFQwc9jdKTig==}
181
181
+
182
182
+
'@atcute/util-text@1.1.1':
183
183
+
resolution: {integrity: sha512-JH0SxzUQJAmbOBTYyhxQbkkI6M33YpjlVLEcbP5GYt43xgFArzV0FJVmEpvIj0kjsmphHB45b6IitdvxPdec9w==}
184
184
+
185
185
+
'@atproto/api@0.18.21':
186
186
+
resolution: {integrity: sha512-s35MIJerGT/pKe2xJtKKswqlIr/ola2r2iURBKBL0Mk1OKe6jP4YvTMh1N2d2PEANFzNNTbKoDaLfJPo2Uvc/w==}
187
187
+
188
188
+
'@atproto/common-web@0.4.17':
189
189
+
resolution: {integrity: sha512-sfxD8NGxyoxhxmM9EUshEFbWcJ3+JHEOZF4Quk6HsCh1UxpHBmLabT/vEsAkDWl+C/8U0ine0+c/gHyE/OZiQQ==}
190
190
+
191
191
+
'@atproto/lex-data@0.0.12':
192
192
+
resolution: {integrity: sha512-aekJudcK1p6sbTqUv2bJMJBAGZaOJS0mgDclpK3U6VuBREK/au4B6ffunBFWgrDfg0Vwj2JGyEA7E51WZkJcRw==}
193
193
+
194
194
+
'@atproto/lex-json@0.0.12':
195
195
+
resolution: {integrity: sha512-XlEpnWWZdDJ5BIgG25GyH+6iBfyrFL18BI5JSE6rUfMObbFMrQRaCuRLQfryRXNysVz3L3U+Qb9y8KcXbE8AcA==}
196
196
+
197
197
+
'@atproto/lexicon@0.6.1':
198
198
+
resolution: {integrity: sha512-/vI1kVlY50Si+5MXpvOucelnYwb0UJ6Qto5mCp+7Q5C+Jtp+SoSykAPVvjVtTnQUH2vrKOFOwpb3C375vSKzXw==}
199
199
+
200
200
+
'@atproto/syntax@0.4.3':
201
201
+
resolution: {integrity: sha512-YoZUz40YAJr5nPwvCDWgodEOlt5IftZqPJvA0JDWjuZKD8yXddTwSzXSaKQAzGOpuM+/A3uXRtPzJJqlScc+iA==}
202
202
+
203
203
+
'@atproto/xrpc@0.7.7':
204
204
+
resolution: {integrity: sha512-K1ZyO/BU8JNtXX5dmPp7b5UrkLMMqpsIa/Lrj5D3Su+j1Xwq1m6QJ2XJ1AgjEjkI1v4Muzm7klianLE6XGxtmA==}
205
205
+
102
206
'@babel/code-frame@7.29.0':
103
103
-
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==, tarball: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz}
207
207
+
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
104
208
engines: {node: '>=6.9.0'}
105
209
106
210
'@babel/generator@7.29.1':
107
107
-
resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==, tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz}
211
211
+
resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
108
212
engines: {node: '>=6.9.0'}
109
213
110
214
'@babel/helper-globals@7.28.0':
111
111
-
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, tarball: https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz}
215
215
+
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
112
216
engines: {node: '>=6.9.0'}
113
217
114
218
'@babel/helper-string-parser@7.27.1':
115
115
-
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, tarball: https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz}
219
219
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
116
220
engines: {node: '>=6.9.0'}
117
221
118
222
'@babel/helper-validator-identifier@7.28.5':
119
119
-
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, tarball: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz}
223
223
+
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
120
224
engines: {node: '>=6.9.0'}
121
225
122
226
'@babel/parser@7.29.0':
123
123
-
resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==, tarball: https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz}
227
227
+
resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
124
228
engines: {node: '>=6.0.0'}
125
229
hasBin: true
126
230
127
231
'@babel/template@7.28.6':
128
128
-
resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==, tarball: https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz}
232
232
+
resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
129
233
engines: {node: '>=6.9.0'}
130
234
131
235
'@babel/traverse@7.29.0':
132
132
-
resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==, tarball: https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz}
236
236
+
resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
133
237
engines: {node: '>=6.9.0'}
134
238
135
239
'@babel/types@7.29.0':
136
136
-
resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==, tarball: https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz}
240
240
+
resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
137
241
engines: {node: '>=6.9.0'}
138
242
243
243
+
'@badrap/valita@0.4.6':
244
244
+
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
245
245
+
engines: {node: '>= 18'}
246
246
+
247
247
+
'@cloudflare/kv-asset-handler@0.4.2':
248
248
+
resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
249
249
+
engines: {node: '>=18.0.0'}
250
250
+
251
251
+
'@cloudflare/unenv-preset@2.14.0':
252
252
+
resolution: {integrity: sha512-XKAkWhi1nBdNsSEoNG9nkcbyvfUrSjSf+VYVPfOto3gLTZVc3F4g6RASCMh6IixBKCG2yDgZKQIHGKtjcnLnKg==}
253
253
+
peerDependencies:
254
254
+
unenv: 2.0.0-rc.24
255
255
+
workerd: ^1.20260218.0
256
256
+
peerDependenciesMeta:
257
257
+
workerd:
258
258
+
optional: true
259
259
+
260
260
+
'@cloudflare/workerd-darwin-64@1.20260305.0':
261
261
+
resolution: {integrity: sha512-chhKOpymo0Eh9J3nymrauMqKGboCc4uz/j0gA1G4gioMnKsN2ZDKJ+qjRZDnCoVGy8u2C4pxlmyIfsXCAfIzhQ==}
262
262
+
engines: {node: '>=16'}
263
263
+
cpu: [x64]
264
264
+
os: [darwin]
265
265
+
266
266
+
'@cloudflare/workerd-darwin-arm64@1.20260305.0':
267
267
+
resolution: {integrity: sha512-K9aG2OQk5bBfOP+fyGPqLcqZ9OR3ra6uwnxJ8f2mveq2A2LsCI7ZeGxQiAj75Ti80ytH/gJffZIx4Np2JtU3aQ==}
268
268
+
engines: {node: '>=16'}
269
269
+
cpu: [arm64]
270
270
+
os: [darwin]
271
271
+
272
272
+
'@cloudflare/workerd-linux-64@1.20260305.0':
273
273
+
resolution: {integrity: sha512-tt7XUoIw/cYFeGbkPkcZ6XX1aZm26Aju/4ih+DXxOosbBeGshFSrNJDBfAKKOvkjsAZymJ+WWVDBU+hmNaGfwA==}
274
274
+
engines: {node: '>=16'}
275
275
+
cpu: [x64]
276
276
+
os: [linux]
277
277
+
278
278
+
'@cloudflare/workerd-linux-arm64@1.20260305.0':
279
279
+
resolution: {integrity: sha512-72QTkY5EzylmvCZ8ZTrnJ9DctmQsfSof1OKyOWqu/pv/B2yACfuPMikq8RpPxvVu7hhS0ztGP6ZvXz72Htq4Zg==}
280
280
+
engines: {node: '>=16'}
281
281
+
cpu: [arm64]
282
282
+
os: [linux]
283
283
+
284
284
+
'@cloudflare/workerd-windows-64@1.20260305.0':
285
285
+
resolution: {integrity: sha512-BA0uaQPOaI2F6mJtBDqplGnQQhpXCzwEMI33p/TnDxtSk9u8CGIfBFuI6uqo8mJ6ijIaPjeBLGOn2CiRMET4qg==}
286
286
+
engines: {node: '>=16'}
287
287
+
cpu: [x64]
288
288
+
os: [win32]
289
289
+
290
290
+
'@cloudflare/workers-types@4.20260301.1':
291
291
+
resolution: {integrity: sha512-klKnECMb5A4GtVF0P5NH6rCjtyjqIEKJaz6kEtx9YPHhfFO2HUEarO+MI4F8WPchgeZqpGlEpDhRapzrOTw51Q==}
292
292
+
293
293
+
'@cspotcode/source-map-support@0.8.1':
294
294
+
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
295
295
+
engines: {node: '>=12'}
296
296
+
297
297
+
'@emnapi/runtime@1.8.1':
298
298
+
resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
299
299
+
139
300
'@esbuild/aix-ppc64@0.27.3':
140
140
-
resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz}
301
301
+
resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==}
141
302
engines: {node: '>=18'}
142
303
cpu: [ppc64]
143
304
os: [aix]
144
305
145
306
'@esbuild/android-arm64@0.27.3':
146
146
-
resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz}
307
307
+
resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==}
147
308
engines: {node: '>=18'}
148
309
cpu: [arm64]
149
310
os: [android]
150
311
151
312
'@esbuild/android-arm@0.27.3':
152
152
-
resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz}
313
313
+
resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==}
153
314
engines: {node: '>=18'}
154
315
cpu: [arm]
155
316
os: [android]
156
317
157
318
'@esbuild/android-x64@0.27.3':
158
158
-
resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz}
319
319
+
resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==}
159
320
engines: {node: '>=18'}
160
321
cpu: [x64]
161
322
os: [android]
162
323
163
324
'@esbuild/darwin-arm64@0.27.3':
164
164
-
resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz}
325
325
+
resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==}
165
326
engines: {node: '>=18'}
166
327
cpu: [arm64]
167
328
os: [darwin]
168
329
169
330
'@esbuild/darwin-x64@0.27.3':
170
170
-
resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz}
331
331
+
resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==}
171
332
engines: {node: '>=18'}
172
333
cpu: [x64]
173
334
os: [darwin]
174
335
175
336
'@esbuild/freebsd-arm64@0.27.3':
176
176
-
resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz}
337
337
+
resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==}
177
338
engines: {node: '>=18'}
178
339
cpu: [arm64]
179
340
os: [freebsd]
180
341
181
342
'@esbuild/freebsd-x64@0.27.3':
182
182
-
resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz}
343
343
+
resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==}
183
344
engines: {node: '>=18'}
184
345
cpu: [x64]
185
346
os: [freebsd]
186
347
187
348
'@esbuild/linux-arm64@0.27.3':
188
188
-
resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz}
349
349
+
resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==}
189
350
engines: {node: '>=18'}
190
351
cpu: [arm64]
191
352
os: [linux]
192
353
193
354
'@esbuild/linux-arm@0.27.3':
194
194
-
resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz}
355
355
+
resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==}
195
356
engines: {node: '>=18'}
196
357
cpu: [arm]
197
358
os: [linux]
198
359
199
360
'@esbuild/linux-ia32@0.27.3':
200
200
-
resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz}
361
361
+
resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==}
201
362
engines: {node: '>=18'}
202
363
cpu: [ia32]
203
364
os: [linux]
204
365
205
366
'@esbuild/linux-loong64@0.27.3':
206
206
-
resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz}
367
367
+
resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==}
207
368
engines: {node: '>=18'}
208
369
cpu: [loong64]
209
370
os: [linux]
210
371
211
372
'@esbuild/linux-mips64el@0.27.3':
212
212
-
resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz}
373
373
+
resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==}
213
374
engines: {node: '>=18'}
214
375
cpu: [mips64el]
215
376
os: [linux]
216
377
217
378
'@esbuild/linux-ppc64@0.27.3':
218
218
-
resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz}
379
379
+
resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==}
219
380
engines: {node: '>=18'}
220
381
cpu: [ppc64]
221
382
os: [linux]
222
383
223
384
'@esbuild/linux-riscv64@0.27.3':
224
224
-
resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz}
385
385
+
resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==}
225
386
engines: {node: '>=18'}
226
387
cpu: [riscv64]
227
388
os: [linux]
228
389
229
390
'@esbuild/linux-s390x@0.27.3':
230
230
-
resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz}
391
391
+
resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==}
231
392
engines: {node: '>=18'}
232
393
cpu: [s390x]
233
394
os: [linux]
234
395
235
396
'@esbuild/linux-x64@0.27.3':
236
236
-
resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz}
397
397
+
resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==}
237
398
engines: {node: '>=18'}
238
399
cpu: [x64]
239
400
os: [linux]
240
401
241
402
'@esbuild/netbsd-arm64@0.27.3':
242
242
-
resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz}
403
403
+
resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==}
243
404
engines: {node: '>=18'}
244
405
cpu: [arm64]
245
406
os: [netbsd]
246
407
247
408
'@esbuild/netbsd-x64@0.27.3':
248
248
-
resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz}
409
409
+
resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==}
249
410
engines: {node: '>=18'}
250
411
cpu: [x64]
251
412
os: [netbsd]
252
413
253
414
'@esbuild/openbsd-arm64@0.27.3':
254
254
-
resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz}
415
415
+
resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==}
255
416
engines: {node: '>=18'}
256
417
cpu: [arm64]
257
418
os: [openbsd]
258
419
259
420
'@esbuild/openbsd-x64@0.27.3':
260
260
-
resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz}
421
421
+
resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==}
261
422
engines: {node: '>=18'}
262
423
cpu: [x64]
263
424
os: [openbsd]
264
425
265
426
'@esbuild/openharmony-arm64@0.27.3':
266
266
-
resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz}
427
427
+
resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==}
267
428
engines: {node: '>=18'}
268
429
cpu: [arm64]
269
430
os: [openharmony]
270
431
271
432
'@esbuild/sunos-x64@0.27.3':
272
272
-
resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz}
433
433
+
resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==}
273
434
engines: {node: '>=18'}
274
435
cpu: [x64]
275
436
os: [sunos]
276
437
277
438
'@esbuild/win32-arm64@0.27.3':
278
278
-
resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz}
439
439
+
resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==}
279
440
engines: {node: '>=18'}
280
441
cpu: [arm64]
281
442
os: [win32]
282
443
283
444
'@esbuild/win32-ia32@0.27.3':
284
284
-
resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz}
445
445
+
resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==}
285
446
engines: {node: '>=18'}
286
447
cpu: [ia32]
287
448
os: [win32]
288
449
289
450
'@esbuild/win32-x64@0.27.3':
290
290
-
resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz}
451
451
+
resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==}
291
452
engines: {node: '>=18'}
292
453
cpu: [x64]
293
454
os: [win32]
294
455
295
456
'@eslint-community/eslint-utils@4.9.1':
296
296
-
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz}
457
457
+
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
297
458
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
298
459
peerDependencies:
299
460
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
300
461
301
462
'@eslint-community/regexpp@4.12.2':
302
302
-
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz}
463
463
+
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
303
464
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
304
465
305
466
'@eslint/compat@2.0.2':
306
306
-
resolution: {integrity: sha512-pR1DoD0h3HfF675QZx0xsyrsU8q70Z/plx7880NOhS02NuWLgBCOMDL787nUeQ7EWLkxv3bPQJaarjcPQb2Dwg==, tarball: https://registry.npmjs.org/@eslint/compat/-/compat-2.0.2.tgz}
467
467
+
resolution: {integrity: sha512-pR1DoD0h3HfF675QZx0xsyrsU8q70Z/plx7880NOhS02NuWLgBCOMDL787nUeQ7EWLkxv3bPQJaarjcPQb2Dwg==}
307
468
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
308
469
peerDependencies:
309
470
eslint: ^8.40 || 9 || 10
···
312
473
optional: true
313
474
314
475
'@eslint/config-array@0.21.1':
315
315
-
resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, tarball: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz}
476
476
+
resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
316
477
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
317
478
318
479
'@eslint/config-helpers@0.4.2':
319
319
-
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==, tarball: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz}
480
480
+
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
320
481
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
321
482
322
483
'@eslint/core@0.17.0':
323
323
-
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==, tarball: https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz}
484
484
+
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
324
485
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
325
486
326
487
'@eslint/core@1.1.0':
327
327
-
resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==, tarball: https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz}
488
488
+
resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==}
328
489
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
329
490
330
491
'@eslint/eslintrc@3.3.4':
331
331
-
resolution: {integrity: sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==, tarball: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz}
492
492
+
resolution: {integrity: sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==}
332
493
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
333
494
334
495
'@eslint/js@9.39.3':
335
335
-
resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==, tarball: https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz}
496
496
+
resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==}
336
497
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
337
498
338
499
'@eslint/object-schema@2.1.7':
339
339
-
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, tarball: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz}
500
500
+
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
340
501
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
341
502
342
503
'@eslint/plugin-kit@0.4.1':
343
343
-
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==, tarball: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz}
504
504
+
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
344
505
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
345
506
346
507
'@floating-ui/core@1.7.4':
347
347
-
resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==, tarball: https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz}
508
508
+
resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==}
348
509
349
510
'@floating-ui/dom@1.7.5':
350
350
-
resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==, tarball: https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz}
511
511
+
resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==}
351
512
352
513
'@floating-ui/utils@0.2.10':
353
353
-
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, tarball: https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz}
514
514
+
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
354
515
355
516
'@foxui/core@0.5.1':
356
356
-
resolution: {integrity: sha512-WhcwTYy2bipsfrBmNjHF88gfmigr10KeWqNBVrwWmkFjAeXy8J9rj9CSLpeRQCHMmrNDqjVq7VahxWRuz0NO9g==, tarball: https://registry.npmjs.org/@foxui/core/-/core-0.5.1.tgz}
517
517
+
resolution: {integrity: sha512-WhcwTYy2bipsfrBmNjHF88gfmigr10KeWqNBVrwWmkFjAeXy8J9rj9CSLpeRQCHMmrNDqjVq7VahxWRuz0NO9g==}
518
518
+
peerDependencies:
519
519
+
svelte: '>=5'
520
520
+
tailwindcss: '>=3'
521
521
+
522
522
+
'@foxui/social@0.5.1':
523
523
+
resolution: {integrity: sha512-PupbByfLdykQqzxjTZkMpy43LHaLrivI0DEb9Psew0+1PCMDqFSoDk00BVl5vtaPOlBfOwdQsDICa4kR0LApHg==}
357
524
peerDependencies:
358
525
svelte: '>=5'
359
526
tailwindcss: '>=3'
360
527
361
528
'@foxui/time@0.5.1':
362
362
-
resolution: {integrity: sha512-P7mLM0UVarRdAI0owUUVzsa+VTp+ZQWENNM9BD0H9VESG49dIwP6sbfCRFFecCLijUHP+aIcnO3bnuK9BDx3rQ==, tarball: https://registry.npmjs.org/@foxui/time/-/time-0.5.1.tgz}
529
529
+
resolution: {integrity: sha512-P7mLM0UVarRdAI0owUUVzsa+VTp+ZQWENNM9BD0H9VESG49dIwP6sbfCRFFecCLijUHP+aIcnO3bnuK9BDx3rQ==}
363
530
peerDependencies:
364
531
svelte: '>=5'
365
532
tailwindcss: '>=3'
366
533
367
534
'@humanfs/core@0.19.1':
368
368
-
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, tarball: https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz}
535
535
+
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
369
536
engines: {node: '>=18.18.0'}
370
537
371
538
'@humanfs/node@0.16.7':
372
372
-
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==, tarball: https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz}
539
539
+
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
373
540
engines: {node: '>=18.18.0'}
374
541
375
542
'@humanwhocodes/module-importer@1.0.1':
376
376
-
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz}
543
543
+
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
377
544
engines: {node: '>=12.22'}
378
545
379
546
'@humanwhocodes/retry@0.4.3':
380
380
-
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, tarball: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz}
547
547
+
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
381
548
engines: {node: '>=18.18'}
382
549
550
550
+
'@img/colour@1.1.0':
551
551
+
resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
552
552
+
engines: {node: '>=18'}
553
553
+
554
554
+
'@img/sharp-darwin-arm64@0.34.5':
555
555
+
resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
556
556
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
557
557
+
cpu: [arm64]
558
558
+
os: [darwin]
559
559
+
560
560
+
'@img/sharp-darwin-x64@0.34.5':
561
561
+
resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
562
562
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
563
563
+
cpu: [x64]
564
564
+
os: [darwin]
565
565
+
566
566
+
'@img/sharp-libvips-darwin-arm64@1.2.4':
567
567
+
resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
568
568
+
cpu: [arm64]
569
569
+
os: [darwin]
570
570
+
571
571
+
'@img/sharp-libvips-darwin-x64@1.2.4':
572
572
+
resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
573
573
+
cpu: [x64]
574
574
+
os: [darwin]
575
575
+
576
576
+
'@img/sharp-libvips-linux-arm64@1.2.4':
577
577
+
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
578
578
+
cpu: [arm64]
579
579
+
os: [linux]
580
580
+
libc: [glibc]
581
581
+
582
582
+
'@img/sharp-libvips-linux-arm@1.2.4':
583
583
+
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
584
584
+
cpu: [arm]
585
585
+
os: [linux]
586
586
+
libc: [glibc]
587
587
+
588
588
+
'@img/sharp-libvips-linux-ppc64@1.2.4':
589
589
+
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
590
590
+
cpu: [ppc64]
591
591
+
os: [linux]
592
592
+
libc: [glibc]
593
593
+
594
594
+
'@img/sharp-libvips-linux-riscv64@1.2.4':
595
595
+
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
596
596
+
cpu: [riscv64]
597
597
+
os: [linux]
598
598
+
libc: [glibc]
599
599
+
600
600
+
'@img/sharp-libvips-linux-s390x@1.2.4':
601
601
+
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
602
602
+
cpu: [s390x]
603
603
+
os: [linux]
604
604
+
libc: [glibc]
605
605
+
606
606
+
'@img/sharp-libvips-linux-x64@1.2.4':
607
607
+
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
608
608
+
cpu: [x64]
609
609
+
os: [linux]
610
610
+
libc: [glibc]
611
611
+
612
612
+
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
613
613
+
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
614
614
+
cpu: [arm64]
615
615
+
os: [linux]
616
616
+
libc: [musl]
617
617
+
618
618
+
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
619
619
+
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
620
620
+
cpu: [x64]
621
621
+
os: [linux]
622
622
+
libc: [musl]
623
623
+
624
624
+
'@img/sharp-linux-arm64@0.34.5':
625
625
+
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
626
626
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
627
627
+
cpu: [arm64]
628
628
+
os: [linux]
629
629
+
libc: [glibc]
630
630
+
631
631
+
'@img/sharp-linux-arm@0.34.5':
632
632
+
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
633
633
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
634
634
+
cpu: [arm]
635
635
+
os: [linux]
636
636
+
libc: [glibc]
637
637
+
638
638
+
'@img/sharp-linux-ppc64@0.34.5':
639
639
+
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
640
640
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
641
641
+
cpu: [ppc64]
642
642
+
os: [linux]
643
643
+
libc: [glibc]
644
644
+
645
645
+
'@img/sharp-linux-riscv64@0.34.5':
646
646
+
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
647
647
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
648
648
+
cpu: [riscv64]
649
649
+
os: [linux]
650
650
+
libc: [glibc]
651
651
+
652
652
+
'@img/sharp-linux-s390x@0.34.5':
653
653
+
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
654
654
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
655
655
+
cpu: [s390x]
656
656
+
os: [linux]
657
657
+
libc: [glibc]
658
658
+
659
659
+
'@img/sharp-linux-x64@0.34.5':
660
660
+
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
661
661
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
662
662
+
cpu: [x64]
663
663
+
os: [linux]
664
664
+
libc: [glibc]
665
665
+
666
666
+
'@img/sharp-linuxmusl-arm64@0.34.5':
667
667
+
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
668
668
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
669
669
+
cpu: [arm64]
670
670
+
os: [linux]
671
671
+
libc: [musl]
672
672
+
673
673
+
'@img/sharp-linuxmusl-x64@0.34.5':
674
674
+
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
675
675
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
676
676
+
cpu: [x64]
677
677
+
os: [linux]
678
678
+
libc: [musl]
679
679
+
680
680
+
'@img/sharp-wasm32@0.34.5':
681
681
+
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
682
682
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
683
683
+
cpu: [wasm32]
684
684
+
685
685
+
'@img/sharp-win32-arm64@0.34.5':
686
686
+
resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
687
687
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
688
688
+
cpu: [arm64]
689
689
+
os: [win32]
690
690
+
691
691
+
'@img/sharp-win32-ia32@0.34.5':
692
692
+
resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
693
693
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
694
694
+
cpu: [ia32]
695
695
+
os: [win32]
696
696
+
697
697
+
'@img/sharp-win32-x64@0.34.5':
698
698
+
resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
699
699
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
700
700
+
cpu: [x64]
701
701
+
os: [win32]
702
702
+
383
703
'@internationalized/date@3.11.0':
384
384
-
resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==, tarball: https://registry.npmjs.org/@internationalized/date/-/date-3.11.0.tgz}
704
704
+
resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==}
385
705
386
706
'@jridgewell/gen-mapping@0.3.13':
387
387
-
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz}
707
707
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
388
708
389
709
'@jridgewell/remapping@2.3.5':
390
390
-
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, tarball: https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz}
710
710
+
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
391
711
392
712
'@jridgewell/resolve-uri@3.1.2':
393
393
-
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz}
713
713
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
394
714
engines: {node: '>=6.0.0'}
395
715
396
716
'@jridgewell/sourcemap-codec@1.5.5':
397
397
-
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz}
717
717
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
398
718
399
719
'@jridgewell/trace-mapping@0.3.31':
400
400
-
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz}
720
720
+
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
721
721
+
722
722
+
'@jridgewell/trace-mapping@0.3.9':
723
723
+
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
401
724
402
725
'@kevincharm/noble-bn254-drand@0.0.1':
403
403
-
resolution: {integrity: sha512-HU5Gmst+nxYx8OYKMWuaJZyXh+9/oqJL/L9F3B4My4/IOZZBqIkZIfHQMuPN6KoFHBni08YOw0sRQqEyHVpnGg==, tarball: https://registry.npmjs.org/@kevincharm/noble-bn254-drand/-/noble-bn254-drand-0.0.1.tgz}
726
726
+
resolution: {integrity: sha512-HU5Gmst+nxYx8OYKMWuaJZyXh+9/oqJL/L9F3B4My4/IOZZBqIkZIfHQMuPN6KoFHBni08YOw0sRQqEyHVpnGg==}
404
727
engines: {node: '>=18'}
405
728
peerDependencies:
406
729
'@noble/curves': ^1.6.0
407
730
408
731
'@noble/curves@1.9.7':
409
409
-
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==, tarball: https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz}
732
732
+
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
410
733
engines: {node: ^14.21.3 || >=16}
411
734
412
735
'@noble/hashes@1.8.0':
413
413
-
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==, tarball: https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz}
736
736
+
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
414
737
engines: {node: ^14.21.3 || >=16}
415
738
416
739
'@number-flow/svelte@0.3.13':
417
417
-
resolution: {integrity: sha512-mvbxDeSFa1o/E4vGhrWuawAFCgcn5qTQ/s++FIoD88es5+JQa/aMQUypTy7qXIreTtTvncpIbkKdw9DMnweaSw==, tarball: https://registry.npmjs.org/@number-flow/svelte/-/svelte-0.3.13.tgz}
740
740
+
resolution: {integrity: sha512-mvbxDeSFa1o/E4vGhrWuawAFCgcn5qTQ/s++FIoD88es5+JQa/aMQUypTy7qXIreTtTvncpIbkKdw9DMnweaSw==}
418
741
peerDependencies:
419
742
svelte: ^4 || ^5
420
743
421
744
'@number-flow/svelte@0.4.0':
422
422
-
resolution: {integrity: sha512-9tnowrlZlBV3IVe3Gm1V7yXSf4Ugag2k7iW45xqb04HXSa1ApEImopvGWAjJpHDvS849o+UCb0YH461Mtde9lA==, tarball: https://registry.npmjs.org/@number-flow/svelte/-/svelte-0.4.0.tgz}
745
745
+
resolution: {integrity: sha512-9tnowrlZlBV3IVe3Gm1V7yXSf4Ugag2k7iW45xqb04HXSa1ApEImopvGWAjJpHDvS849o+UCb0YH461Mtde9lA==}
423
746
peerDependencies:
424
747
svelte: ^4 || ^5
425
748
426
749
'@polka/url@1.0.0-next.29':
427
427
-
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, tarball: https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz}
750
750
+
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
751
751
+
752
752
+
'@poppinss/colors@4.1.6':
753
753
+
resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==}
754
754
+
755
755
+
'@poppinss/dumper@0.6.5':
756
756
+
resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==}
757
757
+
758
758
+
'@poppinss/exception@1.2.3':
759
759
+
resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
428
760
429
761
'@rollup/rollup-android-arm-eabi@4.59.0':
430
430
-
resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz}
762
762
+
resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==}
431
763
cpu: [arm]
432
764
os: [android]
433
765
434
766
'@rollup/rollup-android-arm64@4.59.0':
435
435
-
resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz}
767
767
+
resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==}
436
768
cpu: [arm64]
437
769
os: [android]
438
770
439
771
'@rollup/rollup-darwin-arm64@4.59.0':
440
440
-
resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz}
772
772
+
resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==}
441
773
cpu: [arm64]
442
774
os: [darwin]
443
775
444
776
'@rollup/rollup-darwin-x64@4.59.0':
445
445
-
resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz}
777
777
+
resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==}
446
778
cpu: [x64]
447
779
os: [darwin]
448
780
449
781
'@rollup/rollup-freebsd-arm64@4.59.0':
450
450
-
resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz}
782
782
+
resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==}
451
783
cpu: [arm64]
452
784
os: [freebsd]
453
785
454
786
'@rollup/rollup-freebsd-x64@4.59.0':
455
455
-
resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz}
787
787
+
resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==}
456
788
cpu: [x64]
457
789
os: [freebsd]
458
790
459
791
'@rollup/rollup-linux-arm-gnueabihf@4.59.0':
460
460
-
resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz}
792
792
+
resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
461
793
cpu: [arm]
462
794
os: [linux]
795
795
+
libc: [glibc]
463
796
464
797
'@rollup/rollup-linux-arm-musleabihf@4.59.0':
465
465
-
resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz}
798
798
+
resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
466
799
cpu: [arm]
467
800
os: [linux]
801
801
+
libc: [musl]
468
802
469
803
'@rollup/rollup-linux-arm64-gnu@4.59.0':
470
470
-
resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz}
804
804
+
resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
471
805
cpu: [arm64]
472
806
os: [linux]
807
807
+
libc: [glibc]
473
808
474
809
'@rollup/rollup-linux-arm64-musl@4.59.0':
475
475
-
resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz}
810
810
+
resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
476
811
cpu: [arm64]
477
812
os: [linux]
813
813
+
libc: [musl]
478
814
479
815
'@rollup/rollup-linux-loong64-gnu@4.59.0':
480
480
-
resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz}
816
816
+
resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
481
817
cpu: [loong64]
482
818
os: [linux]
819
819
+
libc: [glibc]
483
820
484
821
'@rollup/rollup-linux-loong64-musl@4.59.0':
485
485
-
resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz}
822
822
+
resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
486
823
cpu: [loong64]
487
824
os: [linux]
825
825
+
libc: [musl]
488
826
489
827
'@rollup/rollup-linux-ppc64-gnu@4.59.0':
490
490
-
resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz}
828
828
+
resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
491
829
cpu: [ppc64]
492
830
os: [linux]
831
831
+
libc: [glibc]
493
832
494
833
'@rollup/rollup-linux-ppc64-musl@4.59.0':
495
495
-
resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz}
834
834
+
resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
496
835
cpu: [ppc64]
497
836
os: [linux]
837
837
+
libc: [musl]
498
838
499
839
'@rollup/rollup-linux-riscv64-gnu@4.59.0':
500
500
-
resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz}
840
840
+
resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
501
841
cpu: [riscv64]
502
842
os: [linux]
843
843
+
libc: [glibc]
503
844
504
845
'@rollup/rollup-linux-riscv64-musl@4.59.0':
505
505
-
resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz}
846
846
+
resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
506
847
cpu: [riscv64]
507
848
os: [linux]
849
849
+
libc: [musl]
508
850
509
851
'@rollup/rollup-linux-s390x-gnu@4.59.0':
510
510
-
resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz}
852
852
+
resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
511
853
cpu: [s390x]
512
854
os: [linux]
855
855
+
libc: [glibc]
513
856
514
857
'@rollup/rollup-linux-x64-gnu@4.59.0':
515
515
-
resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz}
858
858
+
resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
516
859
cpu: [x64]
517
860
os: [linux]
861
861
+
libc: [glibc]
518
862
519
863
'@rollup/rollup-linux-x64-musl@4.59.0':
520
520
-
resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz}
864
864
+
resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
521
865
cpu: [x64]
522
866
os: [linux]
867
867
+
libc: [musl]
523
868
524
869
'@rollup/rollup-openbsd-x64@4.59.0':
525
525
-
resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==, tarball: https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz}
870
870
+
resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
526
871
cpu: [x64]
527
872
os: [openbsd]
528
873
529
874
'@rollup/rollup-openharmony-arm64@4.59.0':
530
530
-
resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==, tarball: https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz}
875
875
+
resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==}
531
876
cpu: [arm64]
532
877
os: [openharmony]
533
878
534
879
'@rollup/rollup-win32-arm64-msvc@4.59.0':
535
535
-
resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz}
880
880
+
resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==}
536
881
cpu: [arm64]
537
882
os: [win32]
538
883
539
884
'@rollup/rollup-win32-ia32-msvc@4.59.0':
540
540
-
resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz}
885
885
+
resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==}
541
886
cpu: [ia32]
542
887
os: [win32]
543
888
544
889
'@rollup/rollup-win32-x64-gnu@4.59.0':
545
545
-
resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz}
890
890
+
resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==}
546
891
cpu: [x64]
547
892
os: [win32]
548
893
549
894
'@rollup/rollup-win32-x64-msvc@4.59.0':
550
550
-
resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz}
895
895
+
resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==}
551
896
cpu: [x64]
552
897
os: [win32]
553
898
899
899
+
'@sindresorhus/is@7.2.0':
900
900
+
resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==}
901
901
+
engines: {node: '>=18'}
902
902
+
903
903
+
'@speed-highlight/core@1.2.14':
904
904
+
resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==}
905
905
+
554
906
'@stablelib/aead@1.0.1':
555
555
-
resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==, tarball: https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz}
907
907
+
resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==}
556
908
557
909
'@stablelib/binary@1.0.1':
558
558
-
resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==, tarball: https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz}
910
910
+
resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==}
559
911
560
912
'@stablelib/chacha20poly1305@1.0.1':
561
561
-
resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==, tarball: https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz}
913
913
+
resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==}
562
914
563
915
'@stablelib/chacha@1.0.1':
564
564
-
resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==, tarball: https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz}
916
916
+
resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==}
565
917
566
918
'@stablelib/constant-time@1.0.1':
567
567
-
resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==, tarball: https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz}
919
919
+
resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==}
568
920
569
921
'@stablelib/int@1.0.1':
570
570
-
resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==, tarball: https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz}
922
922
+
resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==}
571
923
572
924
'@stablelib/poly1305@1.0.1':
573
573
-
resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==, tarball: https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz}
925
925
+
resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==}
574
926
575
927
'@stablelib/wipe@1.0.1':
576
576
-
resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==, tarball: https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz}
928
928
+
resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==}
577
929
578
930
'@standard-schema/spec@1.1.0':
579
579
-
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz}
931
931
+
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
580
932
581
933
'@sveltejs/acorn-typescript@1.0.9':
582
582
-
resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==, tarball: https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz}
934
934
+
resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==}
583
935
peerDependencies:
584
936
acorn: ^8.9.0
585
937
586
586
-
'@sveltejs/adapter-auto@7.0.1':
587
587
-
resolution: {integrity: sha512-dvuPm1E7M9NI/+canIQ6KKQDU2AkEefEZ2Dp7cY6uKoPq9Z/PhOXABe526UdW2mN986gjVkuSLkOYIBnS/M2LQ==, tarball: https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.1.tgz}
938
938
+
'@sveltejs/adapter-cloudflare@7.2.8':
939
939
+
resolution: {integrity: sha512-bIdhY/Fi4AQmqiBdQVKnafH1h9Gw+xbCvHyUu4EouC8rJOU02zwhi14k/FDhQ0mJF1iblIu3m8UNQ8GpGIvIOQ==}
588
940
peerDependencies:
589
941
'@sveltejs/kit': ^2.0.0
942
942
+
wrangler: ^4.0.0
590
943
591
944
'@sveltejs/kit@2.53.4':
592
592
-
resolution: {integrity: sha512-iAIPEahFgDJJyvz8g0jP08KvqnM6JvdW8YfsygZ+pMeMvyM2zssWMltcsotETvjSZ82G3VlitgDtBIvpQSZrTA==, tarball: https://registry.npmjs.org/@sveltejs/kit/-/kit-2.53.4.tgz}
945
945
+
resolution: {integrity: sha512-iAIPEahFgDJJyvz8g0jP08KvqnM6JvdW8YfsygZ+pMeMvyM2zssWMltcsotETvjSZ82G3VlitgDtBIvpQSZrTA==}
593
946
engines: {node: '>=18.13'}
594
947
hasBin: true
595
948
peerDependencies:
···
605
958
optional: true
606
959
607
960
'@sveltejs/vite-plugin-svelte-inspector@5.0.2':
608
608
-
resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz}
961
961
+
resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==}
609
962
engines: {node: ^20.19 || ^22.12 || >=24}
610
963
peerDependencies:
611
964
'@sveltejs/vite-plugin-svelte': ^6.0.0-next.0
···
613
966
vite: ^6.3.0 || ^7.0.0
614
967
615
968
'@sveltejs/vite-plugin-svelte@6.2.4':
616
616
-
resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==, tarball: https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.4.tgz}
969
969
+
resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==}
617
970
engines: {node: ^20.19 || ^22.12 || >=24}
618
971
peerDependencies:
619
972
svelte: ^5.0.0
620
973
vite: ^6.3.0 || ^7.0.0
621
974
622
975
'@swc/helpers@0.5.19':
623
623
-
resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==, tarball: https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz}
976
976
+
resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==}
624
977
625
978
'@tailwindcss/forms@0.5.11':
626
626
-
resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==, tarball: https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz}
979
979
+
resolution: {integrity: sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==}
627
980
peerDependencies:
628
981
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1'
629
982
630
983
'@tailwindcss/node@4.2.1':
631
631
-
resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==, tarball: https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz}
984
984
+
resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==}
632
985
633
986
'@tailwindcss/oxide-android-arm64@4.2.1':
634
634
-
resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz}
987
987
+
resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==}
635
988
engines: {node: '>= 20'}
636
989
cpu: [arm64]
637
990
os: [android]
638
991
639
992
'@tailwindcss/oxide-darwin-arm64@4.2.1':
640
640
-
resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz}
993
993
+
resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==}
641
994
engines: {node: '>= 20'}
642
995
cpu: [arm64]
643
996
os: [darwin]
644
997
645
998
'@tailwindcss/oxide-darwin-x64@4.2.1':
646
646
-
resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz}
999
999
+
resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==}
647
1000
engines: {node: '>= 20'}
648
1001
cpu: [x64]
649
1002
os: [darwin]
650
1003
651
1004
'@tailwindcss/oxide-freebsd-x64@4.2.1':
652
652
-
resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz}
1005
1005
+
resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==}
653
1006
engines: {node: '>= 20'}
654
1007
cpu: [x64]
655
1008
os: [freebsd]
656
1009
657
1010
'@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1':
658
658
-
resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz}
1011
1011
+
resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==}
659
1012
engines: {node: '>= 20'}
660
1013
cpu: [arm]
661
1014
os: [linux]
662
1015
663
1016
'@tailwindcss/oxide-linux-arm64-gnu@4.2.1':
664
664
-
resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz}
1017
1017
+
resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==}
665
1018
engines: {node: '>= 20'}
666
1019
cpu: [arm64]
667
1020
os: [linux]
1021
1021
+
libc: [glibc]
668
1022
669
1023
'@tailwindcss/oxide-linux-arm64-musl@4.2.1':
670
670
-
resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz}
1024
1024
+
resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==}
671
1025
engines: {node: '>= 20'}
672
1026
cpu: [arm64]
673
1027
os: [linux]
1028
1028
+
libc: [musl]
674
1029
675
1030
'@tailwindcss/oxide-linux-x64-gnu@4.2.1':
676
676
-
resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz}
1031
1031
+
resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==}
677
1032
engines: {node: '>= 20'}
678
1033
cpu: [x64]
679
1034
os: [linux]
1035
1035
+
libc: [glibc]
680
1036
681
1037
'@tailwindcss/oxide-linux-x64-musl@4.2.1':
682
682
-
resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz}
1038
1038
+
resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==}
683
1039
engines: {node: '>= 20'}
684
1040
cpu: [x64]
685
1041
os: [linux]
1042
1042
+
libc: [musl]
686
1043
687
1044
'@tailwindcss/oxide-wasm32-wasi@4.2.1':
688
688
-
resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz}
1045
1045
+
resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==}
689
1046
engines: {node: '>=14.0.0'}
690
1047
cpu: [wasm32]
691
1048
bundledDependencies:
···
697
1054
- tslib
698
1055
699
1056
'@tailwindcss/oxide-win32-arm64-msvc@4.2.1':
700
700
-
resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz}
1057
1057
+
resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==}
701
1058
engines: {node: '>= 20'}
702
1059
cpu: [arm64]
703
1060
os: [win32]
704
1061
705
1062
'@tailwindcss/oxide-win32-x64-msvc@4.2.1':
706
706
-
resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==, tarball: https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz}
1063
1063
+
resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==}
707
1064
engines: {node: '>= 20'}
708
1065
cpu: [x64]
709
1066
os: [win32]
710
1067
711
1068
'@tailwindcss/oxide@4.2.1':
712
712
-
resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==, tarball: https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz}
1069
1069
+
resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==}
713
1070
engines: {node: '>= 20'}
714
1071
715
1072
'@tailwindcss/typography@0.5.19':
716
716
-
resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==, tarball: https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz}
1073
1073
+
resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==}
717
1074
peerDependencies:
718
1075
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
719
1076
720
1077
'@tailwindcss/vite@4.2.1':
721
721
-
resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==, tarball: https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.1.tgz}
1078
1078
+
resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==}
722
1079
peerDependencies:
723
1080
vite: ^5.2.0 || ^6 || ^7
724
1081
1082
1082
+
'@types/bun@1.3.9':
1083
1083
+
resolution: {integrity: sha512-KQ571yULOdWJiMH+RIWIOZ7B2RXQGpL1YQrBtLIV3FqDcCu6FsbFUBwhdKUlCKUpS3PJDsHlJ1QKlpxoVR+xtw==}
1084
1084
+
725
1085
'@types/cookie@0.6.0':
726
726
-
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz}
1086
1086
+
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
727
1087
728
1088
'@types/estree@1.0.8':
729
729
-
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz}
1089
1089
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
730
1090
731
1091
'@types/json-schema@7.0.15':
732
732
-
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz}
1092
1092
+
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
733
1093
734
1094
'@types/node@22.19.13':
735
735
-
resolution: {integrity: sha512-akNQMv0wW5uyRpD2v2IEyRSZiR+BeGuoB6L310EgGObO44HSMNT8z1xzio28V8qOrgYaopIDNA18YgdXd+qTiw==, tarball: https://registry.npmjs.org/@types/node/-/node-22.19.13.tgz}
1095
1095
+
resolution: {integrity: sha512-akNQMv0wW5uyRpD2v2IEyRSZiR+BeGuoB6L310EgGObO44HSMNT8z1xzio28V8qOrgYaopIDNA18YgdXd+qTiw==}
736
1096
737
1097
'@types/trusted-types@2.0.7':
738
738
-
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, tarball: https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz}
1098
1098
+
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
739
1099
740
1100
'@typescript-eslint/eslint-plugin@8.56.1':
741
741
-
resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz}
1101
1101
+
resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==}
742
1102
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
743
1103
peerDependencies:
744
1104
'@typescript-eslint/parser': ^8.56.1
···
746
1106
typescript: '>=4.8.4 <6.0.0'
747
1107
748
1108
'@typescript-eslint/parser@8.56.1':
749
749
-
resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz}
1109
1109
+
resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==}
750
1110
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
751
1111
peerDependencies:
752
1112
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
753
1113
typescript: '>=4.8.4 <6.0.0'
754
1114
755
1115
'@typescript-eslint/project-service@8.56.1':
756
756
-
resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==, tarball: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz}
1116
1116
+
resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==}
757
1117
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
758
1118
peerDependencies:
759
1119
typescript: '>=4.8.4 <6.0.0'
760
1120
761
1121
'@typescript-eslint/scope-manager@8.56.1':
762
762
-
resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz}
1122
1122
+
resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==}
763
1123
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
764
1124
765
1125
'@typescript-eslint/tsconfig-utils@8.56.1':
766
766
-
resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==, tarball: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz}
1126
1126
+
resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==}
767
1127
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
768
1128
peerDependencies:
769
1129
typescript: '>=4.8.4 <6.0.0'
770
1130
771
1131
'@typescript-eslint/type-utils@8.56.1':
772
772
-
resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz}
1132
1132
+
resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==}
773
1133
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
774
1134
peerDependencies:
775
1135
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
776
1136
typescript: '>=4.8.4 <6.0.0'
777
1137
778
1138
'@typescript-eslint/types@8.56.1':
779
779
-
resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz}
1139
1139
+
resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==}
780
1140
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
781
1141
782
1142
'@typescript-eslint/typescript-estree@8.56.1':
783
783
-
resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz}
1143
1143
+
resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==}
784
1144
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
785
1145
peerDependencies:
786
1146
typescript: '>=4.8.4 <6.0.0'
787
1147
788
1148
'@typescript-eslint/utils@8.56.1':
789
789
-
resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz}
1149
1149
+
resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==}
790
1150
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
791
1151
peerDependencies:
792
1152
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
793
1153
typescript: '>=4.8.4 <6.0.0'
794
1154
795
1155
'@typescript-eslint/visitor-keys@8.56.1':
796
796
-
resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz}
1156
1156
+
resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==}
797
1157
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
798
1158
1159
1159
+
'@use-gesture/core@10.3.1':
1160
1160
+
resolution: {integrity: sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==}
1161
1161
+
1162
1162
+
'@use-gesture/vanilla@10.3.1':
1163
1163
+
resolution: {integrity: sha512-lT4scGLu59ovA3zmtUonukAGcA0AdOOh+iwNDS05Bsu7Lq9aZToDHhI6D8Q2qvsVraovtsLLYwPrWdG/noMAKw==}
1164
1164
+
799
1165
acorn-jsx@5.3.2:
800
800
-
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz}
1166
1166
+
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
801
1167
peerDependencies:
802
1168
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
803
1169
804
1170
acorn@8.16.0:
805
805
-
resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==, tarball: https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz}
1171
1171
+
resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
806
1172
engines: {node: '>=0.4.0'}
807
1173
hasBin: true
808
1174
809
1175
ajv@6.14.0:
810
810
-
resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==, tarball: https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz}
1176
1176
+
resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
811
1177
812
1178
ansi-styles@4.3.0:
813
813
-
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz}
1179
1179
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
814
1180
engines: {node: '>=8'}
815
1181
816
1182
argparse@2.0.1:
817
817
-
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz}
1183
1183
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
818
1184
819
1185
aria-query@5.3.1:
820
820
-
resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==, tarball: https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz}
1186
1186
+
resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==}
821
1187
engines: {node: '>= 0.4'}
1188
1188
+
1189
1189
+
await-lock@2.2.2:
1190
1190
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
822
1191
823
1192
axobject-query@4.1.0:
824
824
-
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, tarball: https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz}
1193
1193
+
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
825
1194
engines: {node: '>= 0.4'}
826
1195
827
1196
balanced-match@1.0.2:
828
828
-
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz}
1197
1197
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
829
1198
830
1199
balanced-match@4.0.4:
831
831
-
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz}
1200
1200
+
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
832
1201
engines: {node: 18 || 20 || >=22}
833
1202
834
1203
base64-js@1.5.1:
835
835
-
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz}
1204
1204
+
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
836
1205
837
1206
bits-ui@2.16.2:
838
838
-
resolution: {integrity: sha512-bgEpRRF7Ck9nRP1pbuKVxpaSMrz+8Pm0y+dmuvlkrSe+uUwIQECef29y6eslFHM6pCAubUh7STrsTLUUp8fzFQ==, tarball: https://registry.npmjs.org/bits-ui/-/bits-ui-2.16.2.tgz}
1207
1207
+
resolution: {integrity: sha512-bgEpRRF7Ck9nRP1pbuKVxpaSMrz+8Pm0y+dmuvlkrSe+uUwIQECef29y6eslFHM6pCAubUh7STrsTLUUp8fzFQ==}
839
1208
engines: {node: '>=20'}
840
1209
peerDependencies:
841
1210
'@internationalized/date': ^3.8.1
842
1211
svelte: ^5.33.0
843
1212
1213
1213
+
blake3-wasm@2.1.5:
1214
1214
+
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
1215
1215
+
844
1216
brace-expansion@1.1.12:
845
845
-
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz}
1217
1217
+
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
846
1218
847
1219
brace-expansion@5.0.4:
848
848
-
resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz}
1220
1220
+
resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
849
1221
engines: {node: 18 || 20 || >=22}
850
1222
851
1223
buffer@6.0.3:
852
852
-
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, tarball: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz}
1224
1224
+
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
1225
1225
+
1226
1226
+
bun-types@1.3.9:
1227
1227
+
resolution: {integrity: sha512-+UBWWOakIP4Tswh0Bt0QD0alpTY8cb5hvgiYeWCMet9YukHbzuruIEeXC2D7nMJPB12kbh8C7XJykSexEqGKJg==}
853
1228
854
1229
callsites@3.1.0:
855
855
-
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz}
1230
1230
+
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
856
1231
engines: {node: '>=6'}
857
1232
858
1233
chalk@4.1.2:
859
859
-
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz}
1234
1234
+
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
860
1235
engines: {node: '>=10'}
861
1236
862
1237
chokidar@4.0.3:
863
863
-
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz}
1238
1238
+
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
864
1239
engines: {node: '>= 14.16.0'}
865
1240
866
1241
clsx@2.1.1:
867
867
-
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, tarball: https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz}
1242
1242
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
868
1243
engines: {node: '>=6'}
869
1244
870
1245
color-convert@2.0.1:
871
871
-
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz}
1246
1246
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
872
1247
engines: {node: '>=7.0.0'}
873
1248
874
1249
color-name@1.1.4:
875
875
-
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz}
1250
1250
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
876
1251
877
1252
concat-map@0.0.1:
878
878
-
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, tarball: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz}
1253
1253
+
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
879
1254
880
1255
cookie@0.6.0:
881
881
-
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, tarball: https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz}
1256
1256
+
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
882
1257
engines: {node: '>= 0.6'}
883
1258
1259
1259
+
cookie@1.1.1:
1260
1260
+
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
1261
1261
+
engines: {node: '>=18'}
1262
1262
+
1263
1263
+
core-js@3.48.0:
1264
1264
+
resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==}
1265
1265
+
884
1266
cross-spawn@7.0.6:
885
885
-
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz}
1267
1267
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
886
1268
engines: {node: '>= 8'}
887
1269
888
1270
cssesc@3.0.0:
889
889
-
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz}
1271
1271
+
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
890
1272
engines: {node: '>=4'}
891
1273
hasBin: true
892
1274
1275
1275
+
custom-event-polyfill@1.0.7:
1276
1276
+
resolution: {integrity: sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==}
1277
1277
+
893
1278
debug@4.4.3:
894
894
-
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.3.tgz}
1279
1279
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
895
1280
engines: {node: '>=6.0'}
896
1281
peerDependencies:
897
1282
supports-color: '*'
···
900
1285
optional: true
901
1286
902
1287
deep-is@0.1.4:
903
903
-
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz}
1288
1288
+
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
904
1289
905
1290
deepmerge@4.3.1:
906
906
-
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, tarball: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz}
1291
1291
+
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
907
1292
engines: {node: '>=0.10.0'}
908
1293
909
1294
dequal@2.0.3:
910
910
-
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, tarball: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz}
1295
1295
+
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
911
1296
engines: {node: '>=6'}
912
1297
913
1298
detect-libc@2.1.2:
914
914
-
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, tarball: https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz}
1299
1299
+
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
915
1300
engines: {node: '>=8'}
916
1301
917
1302
devalue@5.6.3:
918
918
-
resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==, tarball: https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz}
1303
1303
+
resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==}
919
1304
920
1305
drand-client@1.2.5:
921
921
-
resolution: {integrity: sha512-fytRLLH7hIoSzZScrG06jgv0P30+neUGIhHoCcykWaNDFgy9PLqD/V4I0BouyVOCiWc03wTgRacH9xxZfyiWug==, tarball: https://registry.npmjs.org/drand-client/-/drand-client-1.2.5.tgz}
1306
1306
+
resolution: {integrity: sha512-fytRLLH7hIoSzZScrG06jgv0P30+neUGIhHoCcykWaNDFgy9PLqD/V4I0BouyVOCiWc03wTgRacH9xxZfyiWug==}
922
1307
engines: {node: '>= 10.4.0'}
923
1308
924
1309
drand-client@1.4.2:
925
925
-
resolution: {integrity: sha512-jeNJmrVplfgIA/GVndxxJ5mo8y63BS2pEdNhk1siU4pQ+z/BnxsqRnxjH9ag1ip887s12SEgo0MTZPbQNz27NA==, tarball: https://registry.npmjs.org/drand-client/-/drand-client-1.4.2.tgz}
1310
1310
+
resolution: {integrity: sha512-jeNJmrVplfgIA/GVndxxJ5mo8y63BS2pEdNhk1siU4pQ+z/BnxsqRnxjH9ag1ip887s12SEgo0MTZPbQNz27NA==}
926
1311
engines: {node: '>= 10.4.0'}
1312
1312
+
1313
1313
+
emoji-picker-element@1.29.1:
1314
1314
+
resolution: {integrity: sha512-TOiHzu9Dqib3x4MwcAi3wi3RdyT4SoeB4b15AvH1ks4SBwTl7DeebhZ0d3x6dNi4XfNU7IGRZ7NBQllj0RqwrQ==}
927
1315
928
1316
enhanced-resolve@5.20.0:
929
929
-
resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==, tarball: https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz}
1317
1317
+
resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==}
930
1318
engines: {node: '>=10.13.0'}
931
1319
1320
1320
+
error-stack-parser-es@1.0.5:
1321
1321
+
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
1322
1322
+
932
1323
esbuild@0.27.3:
933
933
-
resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz}
1324
1324
+
resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==}
934
1325
engines: {node: '>=18'}
935
1326
hasBin: true
936
1327
937
1328
escape-string-regexp@4.0.0:
938
938
-
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz}
1329
1329
+
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
939
1330
engines: {node: '>=10'}
940
1331
941
1332
eslint-config-prettier@10.1.8:
942
942
-
resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, tarball: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz}
1333
1333
+
resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
943
1334
hasBin: true
944
1335
peerDependencies:
945
1336
eslint: '>=7.0.0'
946
1337
947
1338
eslint-plugin-svelte@3.15.0:
948
948
-
resolution: {integrity: sha512-QKB7zqfuB8aChOfBTComgDptMf2yxiJx7FE04nneCmtQzgTHvY8UJkuh8J2Rz7KB9FFV9aTHX6r7rdYGvG8T9Q==, tarball: https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.15.0.tgz}
1339
1339
+
resolution: {integrity: sha512-QKB7zqfuB8aChOfBTComgDptMf2yxiJx7FE04nneCmtQzgTHvY8UJkuh8J2Rz7KB9FFV9aTHX6r7rdYGvG8T9Q==}
949
1340
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
950
1341
peerDependencies:
951
1342
eslint: ^8.57.1 || ^9.0.0 || ^10.0.0
···
955
1346
optional: true
956
1347
957
1348
eslint-scope@8.4.0:
958
958
-
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, tarball: https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz}
1349
1349
+
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
959
1350
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
960
1351
961
1352
eslint-visitor-keys@3.4.3:
962
962
-
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz}
1353
1353
+
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
963
1354
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
964
1355
965
1356
eslint-visitor-keys@4.2.1:
966
966
-
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz}
1357
1357
+
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
967
1358
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
968
1359
969
1360
eslint-visitor-keys@5.0.1:
970
970
-
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz}
1361
1361
+
resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
971
1362
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
972
1363
973
1364
eslint@9.39.3:
974
974
-
resolution: {integrity: sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==, tarball: https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz}
1365
1365
+
resolution: {integrity: sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==}
975
1366
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
976
1367
hasBin: true
977
1368
peerDependencies:
···
981
1372
optional: true
982
1373
983
1374
esm-env@1.2.2:
984
984
-
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==, tarball: https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz}
1375
1375
+
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
985
1376
986
1377
espree@10.4.0:
987
987
-
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, tarball: https://registry.npmjs.org/espree/-/espree-10.4.0.tgz}
1378
1378
+
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
988
1379
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
989
1380
990
1381
esquery@1.7.0:
991
991
-
resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, tarball: https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz}
1382
1382
+
resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
992
1383
engines: {node: '>=0.10'}
993
1384
994
1385
esrap@2.2.3:
995
995
-
resolution: {integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==, tarball: https://registry.npmjs.org/esrap/-/esrap-2.2.3.tgz}
1386
1386
+
resolution: {integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==}
996
1387
997
1388
esrecurse@4.3.0:
998
998
-
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz}
1389
1389
+
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
999
1390
engines: {node: '>=4.0'}
1000
1391
1001
1392
estraverse@5.3.0:
1002
1002
-
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz}
1393
1393
+
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1003
1394
engines: {node: '>=4.0'}
1004
1395
1005
1396
esutils@2.0.3:
1006
1006
-
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz}
1397
1397
+
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1007
1398
engines: {node: '>=0.10.0'}
1008
1399
1009
1400
fast-deep-equal@3.1.3:
1010
1010
-
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz}
1401
1401
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1011
1402
1012
1403
fast-json-stable-stringify@2.1.0:
1013
1013
-
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz}
1404
1404
+
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1014
1405
1015
1406
fast-levenshtein@2.0.6:
1016
1016
-
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz}
1407
1407
+
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1017
1408
1018
1409
fdir@6.5.0:
1019
1019
-
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, tarball: https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz}
1410
1410
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
1020
1411
engines: {node: '>=12.0.0'}
1021
1412
peerDependencies:
1022
1413
picomatch: ^3 || ^4
···
1025
1416
optional: true
1026
1417
1027
1418
file-entry-cache@8.0.0:
1028
1028
-
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, tarball: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz}
1419
1419
+
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
1029
1420
engines: {node: '>=16.0.0'}
1030
1421
1031
1422
find-up@5.0.0:
1032
1032
-
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz}
1423
1423
+
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1033
1424
engines: {node: '>=10'}
1034
1425
1035
1426
flat-cache@4.0.1:
1036
1036
-
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, tarball: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz}
1427
1427
+
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
1037
1428
engines: {node: '>=16'}
1038
1429
1039
1430
flatted@3.3.3:
1040
1040
-
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, tarball: https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz}
1431
1431
+
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
1041
1432
1042
1433
fsevents@2.3.3:
1043
1043
-
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz}
1434
1434
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1044
1435
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1045
1436
os: [darwin]
1046
1437
1438
1438
+
get-tsconfig@4.13.6:
1439
1439
+
resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
1440
1440
+
1047
1441
glob-parent@6.0.2:
1048
1048
-
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz}
1442
1442
+
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1049
1443
engines: {node: '>=10.13.0'}
1050
1444
1051
1445
globals@14.0.0:
1052
1052
-
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, tarball: https://registry.npmjs.org/globals/-/globals-14.0.0.tgz}
1446
1446
+
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
1053
1447
engines: {node: '>=18'}
1054
1448
1055
1449
globals@16.5.0:
1056
1056
-
resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==, tarball: https://registry.npmjs.org/globals/-/globals-16.5.0.tgz}
1450
1450
+
resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
1057
1451
engines: {node: '>=18'}
1058
1452
1059
1453
globals@17.4.0:
1060
1060
-
resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==, tarball: https://registry.npmjs.org/globals/-/globals-17.4.0.tgz}
1454
1454
+
resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==}
1061
1455
engines: {node: '>=18'}
1062
1456
1063
1457
graceful-fs@4.2.11:
1064
1064
-
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz}
1458
1458
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1065
1459
1066
1460
has-flag@4.0.0:
1067
1067
-
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz}
1461
1461
+
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1068
1462
engines: {node: '>=8'}
1069
1463
1464
1464
+
hls.js@1.6.15:
1465
1465
+
resolution: {integrity: sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==}
1466
1466
+
1070
1467
ieee754@1.2.1:
1071
1071
-
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz}
1468
1468
+
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
1072
1469
1073
1470
ignore@5.3.2:
1074
1074
-
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz}
1471
1471
+
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1075
1472
engines: {node: '>= 4'}
1076
1473
1077
1474
ignore@7.0.5:
1078
1078
-
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, tarball: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz}
1475
1475
+
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
1079
1476
engines: {node: '>= 4'}
1080
1477
1081
1478
import-fresh@3.3.1:
1082
1082
-
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz}
1479
1479
+
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
1083
1480
engines: {node: '>=6'}
1084
1481
1085
1482
imurmurhash@0.1.4:
1086
1086
-
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz}
1483
1483
+
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1087
1484
engines: {node: '>=0.8.19'}
1088
1485
1089
1486
inline-style-parser@0.2.7:
1090
1090
-
resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==, tarball: https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz}
1487
1487
+
resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
1488
1488
+
1489
1489
+
is-emoji-supported@0.0.5:
1490
1490
+
resolution: {integrity: sha512-WOlXUhDDHxYqcSmFZis+xWhhqXiK2SU0iYiqmth5Ip0FHLZQAt9rKL5ahnilE8/86WH8tZ3bmNNNC+bTzamqlw==}
1091
1491
1092
1492
is-extglob@2.1.1:
1093
1093
-
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz}
1493
1493
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1094
1494
engines: {node: '>=0.10.0'}
1095
1495
1096
1496
is-glob@4.0.3:
1097
1097
-
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz}
1497
1497
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1098
1498
engines: {node: '>=0.10.0'}
1099
1499
1100
1500
is-reference@3.0.3:
1101
1101
-
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==, tarball: https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz}
1501
1501
+
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
1102
1502
1103
1503
isexe@2.0.0:
1104
1104
-
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz}
1504
1504
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1505
1505
+
1506
1506
+
iso-datestring-validator@2.2.2:
1507
1507
+
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
1105
1508
1106
1509
isomorphic-fetch@3.0.0:
1107
1107
-
resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==, tarball: https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz}
1510
1510
+
resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==}
1108
1511
1109
1512
jiti@2.6.1:
1110
1110
-
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==, tarball: https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz}
1513
1513
+
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
1111
1514
hasBin: true
1112
1515
1113
1516
js-tokens@4.0.0:
1114
1114
-
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz}
1517
1517
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1115
1518
1116
1519
js-yaml@4.1.1:
1117
1117
-
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz}
1520
1520
+
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
1118
1521
hasBin: true
1119
1522
1120
1523
jsesc@3.1.0:
1121
1121
-
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, tarball: https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz}
1524
1524
+
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
1122
1525
engines: {node: '>=6'}
1123
1526
hasBin: true
1124
1527
1125
1528
json-buffer@3.0.1:
1126
1126
-
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz}
1529
1529
+
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1127
1530
1128
1531
json-schema-traverse@0.4.1:
1129
1129
-
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz}
1532
1532
+
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1130
1533
1131
1534
json-stable-stringify-without-jsonify@1.0.1:
1132
1132
-
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz}
1535
1535
+
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1133
1536
1134
1537
keyv@4.5.4:
1135
1135
-
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz}
1538
1538
+
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1136
1539
1137
1540
kleur@4.1.5:
1138
1138
-
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, tarball: https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz}
1541
1541
+
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1139
1542
engines: {node: '>=6'}
1140
1543
1141
1544
known-css-properties@0.37.0:
1142
1142
-
resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==, tarball: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz}
1545
1545
+
resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==}
1143
1546
1144
1547
levn@0.4.1:
1145
1145
-
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz}
1548
1548
+
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1146
1549
engines: {node: '>= 0.8.0'}
1147
1550
1148
1551
lightningcss-android-arm64@1.31.1:
1149
1149
-
resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==, tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz}
1552
1552
+
resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==}
1150
1553
engines: {node: '>= 12.0.0'}
1151
1554
cpu: [arm64]
1152
1555
os: [android]
1153
1556
1154
1557
lightningcss-darwin-arm64@1.31.1:
1155
1155
-
resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz}
1558
1558
+
resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==}
1156
1559
engines: {node: '>= 12.0.0'}
1157
1560
cpu: [arm64]
1158
1561
os: [darwin]
1159
1562
1160
1563
lightningcss-darwin-x64@1.31.1:
1161
1161
-
resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz}
1564
1564
+
resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==}
1162
1565
engines: {node: '>= 12.0.0'}
1163
1566
cpu: [x64]
1164
1567
os: [darwin]
1165
1568
1166
1569
lightningcss-freebsd-x64@1.31.1:
1167
1167
-
resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz}
1570
1570
+
resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==}
1168
1571
engines: {node: '>= 12.0.0'}
1169
1572
cpu: [x64]
1170
1573
os: [freebsd]
1171
1574
1172
1575
lightningcss-linux-arm-gnueabihf@1.31.1:
1173
1173
-
resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz}
1576
1576
+
resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==}
1174
1577
engines: {node: '>= 12.0.0'}
1175
1578
cpu: [arm]
1176
1579
os: [linux]
1177
1580
1178
1581
lightningcss-linux-arm64-gnu@1.31.1:
1179
1179
-
resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz}
1582
1582
+
resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
1180
1583
engines: {node: '>= 12.0.0'}
1181
1584
cpu: [arm64]
1182
1585
os: [linux]
1586
1586
+
libc: [glibc]
1183
1587
1184
1588
lightningcss-linux-arm64-musl@1.31.1:
1185
1185
-
resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz}
1589
1589
+
resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
1186
1590
engines: {node: '>= 12.0.0'}
1187
1591
cpu: [arm64]
1188
1592
os: [linux]
1593
1593
+
libc: [musl]
1189
1594
1190
1595
lightningcss-linux-x64-gnu@1.31.1:
1191
1191
-
resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz}
1596
1596
+
resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
1192
1597
engines: {node: '>= 12.0.0'}
1193
1598
cpu: [x64]
1194
1599
os: [linux]
1600
1600
+
libc: [glibc]
1195
1601
1196
1602
lightningcss-linux-x64-musl@1.31.1:
1197
1197
-
resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz}
1603
1603
+
resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
1198
1604
engines: {node: '>= 12.0.0'}
1199
1605
cpu: [x64]
1200
1606
os: [linux]
1607
1607
+
libc: [musl]
1201
1608
1202
1609
lightningcss-win32-arm64-msvc@1.31.1:
1203
1203
-
resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz}
1610
1610
+
resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==}
1204
1611
engines: {node: '>= 12.0.0'}
1205
1612
cpu: [arm64]
1206
1613
os: [win32]
1207
1614
1208
1615
lightningcss-win32-x64-msvc@1.31.1:
1209
1209
-
resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz}
1616
1616
+
resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==}
1210
1617
engines: {node: '>= 12.0.0'}
1211
1618
cpu: [x64]
1212
1619
os: [win32]
1213
1620
1214
1621
lightningcss@1.31.1:
1215
1215
-
resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==, tarball: https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz}
1622
1622
+
resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==}
1216
1623
engines: {node: '>= 12.0.0'}
1217
1624
1218
1625
lilconfig@2.1.0:
1219
1219
-
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, tarball: https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz}
1626
1626
+
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1220
1627
engines: {node: '>=10'}
1221
1628
1629
1629
+
loadjs@4.3.0:
1630
1630
+
resolution: {integrity: sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==}
1631
1631
+
1222
1632
locate-character@3.0.0:
1223
1223
-
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, tarball: https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz}
1633
1633
+
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
1224
1634
1225
1635
locate-path@6.0.0:
1226
1226
-
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz}
1636
1636
+
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1227
1637
engines: {node: '>=10'}
1228
1638
1229
1639
lodash.merge@4.6.2:
1230
1230
-
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, tarball: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz}
1640
1640
+
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1231
1641
1232
1642
lz-string@1.5.0:
1233
1233
-
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, tarball: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz}
1643
1643
+
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
1234
1644
hasBin: true
1235
1645
1236
1646
magic-string@0.30.21:
1237
1237
-
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz}
1647
1647
+
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
1238
1648
1239
1649
mini-svg-data-uri@1.4.4:
1240
1240
-
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, tarball: https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz}
1650
1650
+
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
1651
1651
+
hasBin: true
1652
1652
+
1653
1653
+
miniflare@4.20260305.0:
1654
1654
+
resolution: {integrity: sha512-jVhtKJtiwaZa3rI+WgoLvSJmEazDsoUmAPYRUmEe2VO6VSbvkhbnDRm+dsPbYRatgNIExwrpqG1rv96jHiSb0w==}
1655
1655
+
engines: {node: '>=18.0.0'}
1241
1656
hasBin: true
1242
1657
1243
1658
minimatch@10.2.4:
1244
1244
-
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz}
1659
1659
+
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
1245
1660
engines: {node: 18 || 20 || >=22}
1246
1661
1247
1662
minimatch@3.1.5:
1248
1248
-
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz}
1663
1663
+
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
1249
1664
1250
1665
mode-watcher@1.1.0:
1251
1251
-
resolution: {integrity: sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==, tarball: https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.1.0.tgz}
1666
1666
+
resolution: {integrity: sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==}
1252
1667
peerDependencies:
1253
1668
svelte: ^5.27.0
1254
1669
1255
1670
mri@1.2.0:
1256
1256
-
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, tarball: https://registry.npmjs.org/mri/-/mri-1.2.0.tgz}
1671
1671
+
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1257
1672
engines: {node: '>=4'}
1258
1673
1259
1674
mrmime@2.0.1:
1260
1260
-
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, tarball: https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz}
1675
1675
+
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
1261
1676
engines: {node: '>=10'}
1262
1677
1263
1678
ms@2.1.3:
1264
1264
-
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz}
1679
1679
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1680
1680
+
1681
1681
+
multiformats@9.9.0:
1682
1682
+
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
1265
1683
1266
1684
nanoid@3.3.11:
1267
1267
-
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz}
1685
1685
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1268
1686
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1269
1687
hasBin: true
1270
1688
1689
1689
+
nanoid@5.1.6:
1690
1690
+
resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
1691
1691
+
engines: {node: ^18 || >=20}
1692
1692
+
hasBin: true
1693
1693
+
1271
1694
natural-compare@1.4.0:
1272
1272
-
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz}
1695
1695
+
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1273
1696
1274
1697
node-fetch@2.7.0:
1275
1275
-
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz}
1698
1698
+
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1276
1699
engines: {node: 4.x || >=6.0.0}
1277
1700
peerDependencies:
1278
1701
encoding: ^0.1.0
···
1280
1703
encoding:
1281
1704
optional: true
1282
1705
1706
1706
+
node-gyp-build@4.8.4:
1707
1707
+
resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
1708
1708
+
hasBin: true
1709
1709
+
1283
1710
number-flow@0.5.12:
1284
1284
-
resolution: {integrity: sha512-CIs21h2JkfYG4rfgERaUNAk0Cz+Ef14fNJfSCbGGhgRgconQc9b7rcCQfi9SZ36kNjVXmsl2BrzDbjGtEgumAA==, tarball: https://registry.npmjs.org/number-flow/-/number-flow-0.5.12.tgz}
1711
1711
+
resolution: {integrity: sha512-CIs21h2JkfYG4rfgERaUNAk0Cz+Ef14fNJfSCbGGhgRgconQc9b7rcCQfi9SZ36kNjVXmsl2BrzDbjGtEgumAA==}
1285
1712
1286
1713
number-flow@0.6.0:
1287
1287
-
resolution: {integrity: sha512-K8flNq2Wqus53vjp/btVo3qXFkagF8dIdYavreBfE7hlvFFG/b1HMGEH6nZL+mlrJ+4lbLP9OmPv3t2rmRkpSQ==, tarball: https://registry.npmjs.org/number-flow/-/number-flow-0.6.0.tgz}
1714
1714
+
resolution: {integrity: sha512-K8flNq2Wqus53vjp/btVo3qXFkagF8dIdYavreBfE7hlvFFG/b1HMGEH6nZL+mlrJ+4lbLP9OmPv3t2rmRkpSQ==}
1288
1715
1289
1716
obug@2.1.1:
1290
1290
-
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==, tarball: https://registry.npmjs.org/obug/-/obug-2.1.1.tgz}
1717
1717
+
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
1291
1718
1292
1719
optionator@0.9.4:
1293
1293
-
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz}
1720
1720
+
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1294
1721
engines: {node: '>= 0.8.0'}
1295
1722
1296
1723
p-limit@3.1.0:
1297
1297
-
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz}
1724
1724
+
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1298
1725
engines: {node: '>=10'}
1299
1726
1300
1727
p-locate@5.0.0:
1301
1301
-
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz}
1728
1728
+
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1302
1729
engines: {node: '>=10'}
1303
1730
1304
1731
parent-module@1.0.1:
1305
1305
-
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz}
1732
1732
+
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1306
1733
engines: {node: '>=6'}
1307
1734
1308
1735
path-exists@4.0.0:
1309
1309
-
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz}
1736
1736
+
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1310
1737
engines: {node: '>=8'}
1311
1738
1312
1739
path-key@3.1.1:
1313
1313
-
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz}
1740
1740
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1314
1741
engines: {node: '>=8'}
1315
1742
1743
1743
+
path-to-regexp@6.3.0:
1744
1744
+
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
1745
1745
+
1746
1746
+
pathe@2.0.3:
1747
1747
+
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
1748
1748
+
1316
1749
picocolors@1.1.1:
1317
1317
-
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz}
1750
1750
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1318
1751
1319
1752
picomatch@4.0.3:
1320
1320
-
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz}
1753
1753
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1321
1754
engines: {node: '>=12'}
1322
1755
1756
1756
+
plyr@3.8.4:
1757
1757
+
resolution: {integrity: sha512-DrzLbK9Wol3zeiuZCleD9aUOl0KAaBHR9H6WVVVYPZ4Ya+LYxUFTgSF1jooHcMQCv96Ws96wCaZzIoP3bES8pQ==}
1758
1758
+
1323
1759
postcss-load-config@3.1.4:
1324
1324
-
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, tarball: https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz}
1760
1760
+
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1325
1761
engines: {node: '>= 10'}
1326
1762
peerDependencies:
1327
1763
postcss: '>=8.0.9'
···
1333
1769
optional: true
1334
1770
1335
1771
postcss-safe-parser@7.0.1:
1336
1336
-
resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==, tarball: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz}
1772
1772
+
resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==}
1337
1773
engines: {node: '>=18.0'}
1338
1774
peerDependencies:
1339
1775
postcss: ^8.4.31
1340
1776
1341
1777
postcss-scss@4.0.9:
1342
1342
-
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==, tarball: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz}
1778
1778
+
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
1343
1779
engines: {node: '>=12.0'}
1344
1780
peerDependencies:
1345
1781
postcss: ^8.4.29
1346
1782
1347
1783
postcss-selector-parser@6.0.10:
1348
1348
-
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, tarball: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz}
1784
1784
+
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
1349
1785
engines: {node: '>=4'}
1350
1786
1351
1787
postcss-selector-parser@7.1.1:
1352
1352
-
resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==, tarball: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz}
1788
1788
+
resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
1353
1789
engines: {node: '>=4'}
1354
1790
1355
1791
postcss@8.5.6:
1356
1356
-
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, tarball: https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz}
1792
1792
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
1357
1793
engines: {node: ^10 || ^12 || >=14}
1358
1794
1359
1795
prelude-ls@1.2.1:
1360
1360
-
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz}
1796
1796
+
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1361
1797
engines: {node: '>= 0.8.0'}
1362
1798
1363
1799
prettier-plugin-svelte@3.5.0:
1364
1364
-
resolution: {integrity: sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==, tarball: https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.5.0.tgz}
1800
1800
+
resolution: {integrity: sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==}
1365
1801
peerDependencies:
1366
1802
prettier: ^3.0.0
1367
1803
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
1368
1804
1369
1805
prettier-plugin-tailwindcss@0.7.2:
1370
1370
-
resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==, tarball: https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz}
1806
1806
+
resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==}
1371
1807
engines: {node: '>=20.19'}
1372
1808
peerDependencies:
1373
1809
'@ianvs/prettier-plugin-sort-imports': '*'
···
1422
1858
optional: true
1423
1859
1424
1860
prettier@3.8.1:
1425
1425
-
resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==, tarball: https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz}
1861
1861
+
resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
1426
1862
engines: {node: '>=14'}
1427
1863
hasBin: true
1428
1864
1429
1865
punycode@2.3.1:
1430
1430
-
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz}
1866
1866
+
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1431
1867
engines: {node: '>=6'}
1432
1868
1869
1869
+
rangetouch@2.0.1:
1870
1870
+
resolution: {integrity: sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==}
1871
1871
+
1433
1872
readdirp@4.1.2:
1434
1434
-
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz}
1873
1873
+
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1435
1874
engines: {node: '>= 14.18.0'}
1436
1875
1876
1876
+
regexparam@3.0.0:
1877
1877
+
resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==}
1878
1878
+
engines: {node: '>=8'}
1879
1879
+
1437
1880
resolve-from@4.0.0:
1438
1438
-
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz}
1881
1881
+
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1439
1882
engines: {node: '>=4'}
1440
1883
1884
1884
+
resolve-pkg-maps@1.0.0:
1885
1885
+
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
1886
1886
+
1441
1887
rollup@4.59.0:
1442
1442
-
resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==, tarball: https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz}
1888
1888
+
resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==}
1443
1889
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1444
1890
hasBin: true
1445
1891
1446
1892
runed@0.23.4:
1447
1447
-
resolution: {integrity: sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==, tarball: https://registry.npmjs.org/runed/-/runed-0.23.4.tgz}
1893
1893
+
resolution: {integrity: sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==}
1448
1894
peerDependencies:
1449
1895
svelte: ^5.7.0
1450
1896
1451
1897
runed@0.25.0:
1452
1452
-
resolution: {integrity: sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==, tarball: https://registry.npmjs.org/runed/-/runed-0.25.0.tgz}
1898
1898
+
resolution: {integrity: sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==}
1453
1899
peerDependencies:
1454
1900
svelte: ^5.7.0
1455
1901
1456
1902
runed@0.28.0:
1457
1457
-
resolution: {integrity: sha512-k2xx7RuO9hWcdd9f+8JoBeqWtYrm5CALfgpkg2YDB80ds/QE4w0qqu34A7fqiAwiBBSBQOid7TLxwxVC27ymWQ==, tarball: https://registry.npmjs.org/runed/-/runed-0.28.0.tgz}
1903
1903
+
resolution: {integrity: sha512-k2xx7RuO9hWcdd9f+8JoBeqWtYrm5CALfgpkg2YDB80ds/QE4w0qqu34A7fqiAwiBBSBQOid7TLxwxVC27ymWQ==}
1458
1904
peerDependencies:
1459
1905
svelte: ^5.7.0
1460
1906
1461
1907
runed@0.35.1:
1462
1462
-
resolution: {integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==, tarball: https://registry.npmjs.org/runed/-/runed-0.35.1.tgz}
1908
1908
+
resolution: {integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==}
1463
1909
peerDependencies:
1464
1910
'@sveltejs/kit': ^2.21.0
1465
1911
svelte: ^5.7.0
···
1468
1914
optional: true
1469
1915
1470
1916
sade@1.8.1:
1471
1471
-
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, tarball: https://registry.npmjs.org/sade/-/sade-1.8.1.tgz}
1917
1917
+
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
1472
1918
engines: {node: '>=6'}
1473
1919
1474
1920
semver@7.7.4:
1475
1475
-
resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, tarball: https://registry.npmjs.org/semver/-/semver-7.7.4.tgz}
1921
1921
+
resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
1476
1922
engines: {node: '>=10'}
1477
1923
hasBin: true
1478
1924
1479
1925
set-cookie-parser@3.0.1:
1480
1480
-
resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==, tarball: https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.0.1.tgz}
1926
1926
+
resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==}
1927
1927
+
1928
1928
+
sharp@0.34.5:
1929
1929
+
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
1930
1930
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1481
1931
1482
1932
shebang-command@2.0.0:
1483
1483
-
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz}
1933
1933
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1484
1934
engines: {node: '>=8'}
1485
1935
1486
1936
shebang-regex@3.0.0:
1487
1487
-
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz}
1937
1937
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1488
1938
engines: {node: '>=8'}
1489
1939
1490
1940
sirv@3.0.2:
1491
1491
-
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==, tarball: https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz}
1941
1941
+
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
1492
1942
engines: {node: '>=18'}
1493
1943
1494
1944
source-map-js@1.2.1:
1495
1495
-
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz}
1945
1945
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1496
1946
engines: {node: '>=0.10.0'}
1497
1947
1498
1948
strip-json-comments@3.1.1:
1499
1499
-
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz}
1949
1949
+
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1500
1950
engines: {node: '>=8'}
1501
1951
1502
1952
style-to-object@1.0.14:
1503
1503
-
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==, tarball: https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz}
1953
1953
+
resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
1954
1954
+
1955
1955
+
supports-color@10.2.2:
1956
1956
+
resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
1957
1957
+
engines: {node: '>=18'}
1504
1958
1505
1959
supports-color@7.2.0:
1506
1506
-
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz}
1960
1960
+
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1507
1961
engines: {node: '>=8'}
1508
1962
1509
1963
svelte-check@4.4.4:
1510
1510
-
resolution: {integrity: sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==, tarball: https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.4.tgz}
1964
1964
+
resolution: {integrity: sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==}
1511
1965
engines: {node: '>= 18.0.0'}
1512
1966
hasBin: true
1513
1967
peerDependencies:
···
1515
1969
typescript: '>=5.0.0'
1516
1970
1517
1971
svelte-eslint-parser@1.5.1:
1518
1518
-
resolution: {integrity: sha512-UbY7DYoDg+x4AKLUcX5xWuEWylgmm8ZD2Z89YT/AK6Wm/ckeMTnOMwr6AVC99znXbRC26xzWEPhSgmB62E07Gg==, tarball: https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.5.1.tgz}
1972
1972
+
resolution: {integrity: sha512-UbY7DYoDg+x4AKLUcX5xWuEWylgmm8ZD2Z89YT/AK6Wm/ckeMTnOMwr6AVC99znXbRC26xzWEPhSgmB62E07Gg==}
1519
1973
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.30.2}
1520
1974
peerDependencies:
1521
1975
svelte: ^3.37.0 || ^4.0.0 || ^5.0.0
···
1524
1978
optional: true
1525
1979
1526
1980
svelte-sonner@1.0.7:
1527
1527
-
resolution: {integrity: sha512-1EUFYmd7q/xfs2qCHwJzGPh9n5VJ3X6QjBN10fof2vxgy8fYE7kVfZ7uGnd7i6fQaWIr5KvXcwYXE/cmTEjk5A==, tarball: https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-1.0.7.tgz}
1981
1981
+
resolution: {integrity: sha512-1EUFYmd7q/xfs2qCHwJzGPh9n5VJ3X6QjBN10fof2vxgy8fYE7kVfZ7uGnd7i6fQaWIr5KvXcwYXE/cmTEjk5A==}
1528
1982
peerDependencies:
1529
1983
svelte: ^5.0.0
1530
1984
1531
1985
svelte-toolbelt@0.10.6:
1532
1532
-
resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==, tarball: https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz}
1986
1986
+
resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==}
1533
1987
engines: {node: '>=18', pnpm: '>=8.7.0'}
1534
1988
peerDependencies:
1535
1989
svelte: ^5.30.2
1536
1990
1537
1991
svelte-toolbelt@0.7.1:
1538
1538
-
resolution: {integrity: sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==, tarball: https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz}
1992
1992
+
resolution: {integrity: sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==}
1539
1993
engines: {node: '>=18', pnpm: '>=8.7.0'}
1540
1994
peerDependencies:
1541
1995
svelte: ^5.0.0
1542
1996
1543
1997
svelte@5.53.6:
1544
1544
-
resolution: {integrity: sha512-lP5DGF3oDDI9fhHcSpaBiJEkFLuS16h92DhM1L5K1lFm0WjOmUh1i2sNkBBk8rkxJRpob0dBE75jRfUzGZUOGA==, tarball: https://registry.npmjs.org/svelte/-/svelte-5.53.6.tgz}
1998
1998
+
resolution: {integrity: sha512-lP5DGF3oDDI9fhHcSpaBiJEkFLuS16h92DhM1L5K1lFm0WjOmUh1i2sNkBBk8rkxJRpob0dBE75jRfUzGZUOGA==}
1545
1999
engines: {node: '>=18'}
1546
2000
1547
2001
tabbable@6.4.0:
1548
1548
-
resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==, tarball: https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz}
2002
2002
+
resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==}
1549
2003
1550
2004
tailwind-merge@3.5.0:
1551
1551
-
resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==, tarball: https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz}
2005
2005
+
resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==}
1552
2006
1553
2007
tailwind-variants@3.2.2:
1554
1554
-
resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==, tarball: https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz}
2008
2008
+
resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==}
1555
2009
engines: {node: '>=16.x', pnpm: '>=7.x'}
1556
2010
peerDependencies:
1557
2011
tailwind-merge: '>=3.0.0'
···
1561
2015
optional: true
1562
2016
1563
2017
tailwindcss@4.2.1:
1564
1564
-
resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==, tarball: https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz}
2018
2018
+
resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==}
1565
2019
1566
2020
tapable@2.3.0:
1567
1567
-
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==, tarball: https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz}
2021
2021
+
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
1568
2022
engines: {node: '>=6'}
1569
2023
1570
2024
tinyglobby@0.2.15:
1571
1571
-
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, tarball: https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz}
2025
2025
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
1572
2026
engines: {node: '>=12.0.0'}
1573
2027
2028
2028
+
tlds@1.261.0:
2029
2029
+
resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==}
2030
2030
+
hasBin: true
2031
2031
+
1574
2032
tlock-js@0.9.0:
1575
1575
-
resolution: {integrity: sha512-qxBJQ2mP/opLKjqFbbr64uCYs4Y/wQb8ogFRAhYuHE1AO/sIY0iU0PFV4hqZ0HTorMTpQgbjgdjmTUpigrGp3A==, tarball: https://registry.npmjs.org/tlock-js/-/tlock-js-0.9.0.tgz}
2033
2033
+
resolution: {integrity: sha512-qxBJQ2mP/opLKjqFbbr64uCYs4Y/wQb8ogFRAhYuHE1AO/sIY0iU0PFV4hqZ0HTorMTpQgbjgdjmTUpigrGp3A==}
1576
2034
engines: {node: '>= 16.0.0'}
1577
2035
1578
2036
totalist@3.0.1:
1579
1579
-
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, tarball: https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz}
2037
2037
+
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
1580
2038
engines: {node: '>=6'}
1581
2039
1582
2040
tr46@0.0.3:
1583
1583
-
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, tarball: https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz}
2041
2041
+
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
1584
2042
1585
2043
ts-api-utils@2.4.0:
1586
1586
-
resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==, tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz}
2044
2044
+
resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
1587
2045
engines: {node: '>=18.12'}
1588
2046
peerDependencies:
1589
2047
typescript: '>=4.8.4'
1590
2048
1591
2049
tslib@2.8.1:
1592
1592
-
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz}
2050
2050
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
2051
2051
+
2052
2052
+
tsx@4.21.0:
2053
2053
+
resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
2054
2054
+
engines: {node: '>=18.0.0'}
2055
2055
+
hasBin: true
1593
2056
1594
2057
type-check@0.4.0:
1595
1595
-
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz}
2058
2058
+
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1596
2059
engines: {node: '>= 0.8.0'}
1597
2060
1598
2061
typescript-eslint@8.56.1:
1599
1599
-
resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==, tarball: https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz}
2062
2062
+
resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==}
1600
2063
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1601
2064
peerDependencies:
1602
2065
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
1603
2066
typescript: '>=4.8.4 <6.0.0'
1604
2067
1605
2068
typescript@5.9.3:
1606
1606
-
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, tarball: https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz}
2069
2069
+
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
1607
2070
engines: {node: '>=14.17'}
1608
2071
hasBin: true
1609
2072
2073
2073
+
uint8arrays@3.0.0:
2074
2074
+
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
2075
2075
+
1610
2076
undici-types@6.21.0:
1611
1611
-
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz}
2077
2077
+
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
2078
2078
+
2079
2079
+
undici@7.18.2:
2080
2080
+
resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==}
2081
2081
+
engines: {node: '>=20.18.1'}
2082
2082
+
2083
2083
+
unenv@2.0.0-rc.24:
2084
2084
+
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
2085
2085
+
2086
2086
+
unicode-segmenter@0.14.5:
2087
2087
+
resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==}
1612
2088
1613
2089
uri-js@4.4.1:
1614
1614
-
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz}
2090
2090
+
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2091
2091
+
2092
2092
+
url-polyfill@1.1.14:
2093
2093
+
resolution: {integrity: sha512-p4f3TTAG6ADVF3mwbXw7hGw+QJyw5CnNGvYh5fCuQQZIiuKUswqcznyV3pGDP9j0TSmC4UvRKm8kl1QsX1diiQ==}
1615
2094
1616
2095
util-deprecate@1.0.2:
1617
1617
-
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz}
2096
2096
+
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2097
2097
+
2098
2098
+
valibot@1.2.0:
2099
2099
+
resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==}
2100
2100
+
peerDependencies:
2101
2101
+
typescript: '>=5'
2102
2102
+
peerDependenciesMeta:
2103
2103
+
typescript:
2104
2104
+
optional: true
1618
2105
1619
2106
vite@7.3.1:
1620
1620
-
resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, tarball: https://registry.npmjs.org/vite/-/vite-7.3.1.tgz}
2107
2107
+
resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
1621
2108
engines: {node: ^20.19.0 || >=22.12.0}
1622
2109
hasBin: true
1623
2110
peerDependencies:
···
1657
2144
optional: true
1658
2145
1659
2146
vitefu@1.1.2:
1660
1660
-
resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==, tarball: https://registry.npmjs.org/vitefu/-/vitefu-1.1.2.tgz}
2147
2147
+
resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==}
1661
2148
peerDependencies:
1662
2149
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0
1663
2150
peerDependenciesMeta:
···
1665
2152
optional: true
1666
2153
1667
2154
webidl-conversions@3.0.1:
1668
1668
-
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz}
2155
2155
+
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
1669
2156
1670
2157
whatwg-fetch@3.6.20:
1671
1671
-
resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, tarball: https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz}
2158
2158
+
resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
1672
2159
1673
2160
whatwg-url@5.0.0:
1674
1674
-
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, tarball: https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz}
2161
2161
+
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
1675
2162
1676
2163
which@2.0.2:
1677
1677
-
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz}
2164
2164
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1678
2165
engines: {node: '>= 8'}
1679
2166
hasBin: true
1680
2167
1681
2168
word-wrap@1.2.5:
1682
1682
-
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz}
2169
2169
+
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1683
2170
engines: {node: '>=0.10.0'}
1684
2171
2172
2172
+
workerd@1.20260305.0:
2173
2173
+
resolution: {integrity: sha512-JkhfCLU+w+KbQmZ9k49IcDYc78GBo7eG8Mir8E2+KVjR7otQAmpcLlsous09YLh8WQ3Bt3Mi6/WMStvMAPukeA==}
2174
2174
+
engines: {node: '>=16'}
2175
2175
+
hasBin: true
2176
2176
+
2177
2177
+
worktop@0.8.0-next.18:
2178
2178
+
resolution: {integrity: sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==}
2179
2179
+
engines: {node: '>=12'}
2180
2180
+
2181
2181
+
wrangler@4.69.0:
2182
2182
+
resolution: {integrity: sha512-EmVfIM65I5b4ITHe3Y9R7zQyf4NUBQ1leStakMlWiVR9n6VlDwuEltyQI2l3i0JciDnWyR3uqe+T6C08ivniTQ==}
2183
2183
+
engines: {node: '>=20.0.0'}
2184
2184
+
hasBin: true
2185
2185
+
peerDependencies:
2186
2186
+
'@cloudflare/workers-types': ^4.20260305.0
2187
2187
+
peerDependenciesMeta:
2188
2188
+
'@cloudflare/workers-types':
2189
2189
+
optional: true
2190
2190
+
2191
2191
+
ws@8.18.0:
2192
2192
+
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
2193
2193
+
engines: {node: '>=10.0.0'}
2194
2194
+
peerDependencies:
2195
2195
+
bufferutil: ^4.0.1
2196
2196
+
utf-8-validate: '>=5.0.2'
2197
2197
+
peerDependenciesMeta:
2198
2198
+
bufferutil:
2199
2199
+
optional: true
2200
2200
+
utf-8-validate:
2201
2201
+
optional: true
2202
2202
+
1685
2203
yaml@1.10.2:
1686
1686
-
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, tarball: https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz}
2204
2204
+
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1687
2205
engines: {node: '>= 6'}
1688
2206
1689
2207
yocto-queue@0.1.0:
1690
1690
-
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz}
2208
2208
+
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1691
2209
engines: {node: '>=10'}
1692
2210
2211
2211
+
youch-core@0.3.3:
2212
2212
+
resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
2213
2213
+
2214
2214
+
youch@4.1.0-beta.10:
2215
2215
+
resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
2216
2216
+
1693
2217
zimmerframe@1.1.4:
1694
1694
-
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==, tarball: https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz}
2218
2218
+
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
2219
2219
+
2220
2220
+
zod@3.25.76:
2221
2221
+
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
1695
2222
1696
2223
snapshots:
1697
2224
2225
2225
+
'@atcute/atproto@3.1.10':
2226
2226
+
dependencies:
2227
2227
+
'@atcute/lexicons': 1.2.9
2228
2228
+
2229
2229
+
'@atcute/bluesky@3.2.19':
2230
2230
+
dependencies:
2231
2231
+
'@atcute/atproto': 3.1.10
2232
2232
+
'@atcute/lexicons': 1.2.9
2233
2233
+
2234
2234
+
'@atcute/client@4.2.1':
2235
2235
+
dependencies:
2236
2236
+
'@atcute/identity': 1.1.3
2237
2237
+
'@atcute/lexicons': 1.2.9
2238
2238
+
2239
2239
+
'@atcute/identity-resolver@1.2.2(@atcute/identity@1.1.3)':
2240
2240
+
dependencies:
2241
2241
+
'@atcute/identity': 1.1.3
2242
2242
+
'@atcute/lexicons': 1.2.9
2243
2243
+
'@atcute/util-fetch': 1.0.5
2244
2244
+
'@badrap/valita': 0.4.6
2245
2245
+
2246
2246
+
'@atcute/identity@1.1.3':
2247
2247
+
dependencies:
2248
2248
+
'@atcute/lexicons': 1.2.9
2249
2249
+
'@badrap/valita': 0.4.6
2250
2250
+
2251
2251
+
'@atcute/lexicons@1.2.9':
2252
2252
+
dependencies:
2253
2253
+
'@atcute/uint8array': 1.1.1
2254
2254
+
'@atcute/util-text': 1.1.1
2255
2255
+
'@standard-schema/spec': 1.1.0
2256
2256
+
esm-env: 1.2.2
2257
2257
+
2258
2258
+
'@atcute/multibase@1.1.8':
2259
2259
+
dependencies:
2260
2260
+
'@atcute/uint8array': 1.1.1
2261
2261
+
2262
2262
+
'@atcute/oauth-crypto@0.1.0':
2263
2263
+
dependencies:
2264
2264
+
'@atcute/multibase': 1.1.8
2265
2265
+
'@atcute/uint8array': 1.1.1
2266
2266
+
'@badrap/valita': 0.4.6
2267
2267
+
nanoid: 5.1.6
2268
2268
+
2269
2269
+
'@atcute/oauth-keyset@0.1.0':
2270
2270
+
dependencies:
2271
2271
+
'@atcute/oauth-crypto': 0.1.0
2272
2272
+
2273
2273
+
'@atcute/oauth-node-client@1.1.0':
2274
2274
+
dependencies:
2275
2275
+
'@atcute/client': 4.2.1
2276
2276
+
'@atcute/identity': 1.1.3
2277
2277
+
'@atcute/identity-resolver': 1.2.2(@atcute/identity@1.1.3)
2278
2278
+
'@atcute/lexicons': 1.2.9
2279
2279
+
'@atcute/oauth-crypto': 0.1.0
2280
2280
+
'@atcute/oauth-keyset': 0.1.0
2281
2281
+
'@atcute/oauth-types': 0.1.1
2282
2282
+
'@atcute/util-fetch': 1.0.5
2283
2283
+
'@badrap/valita': 0.4.6
2284
2284
+
nanoid: 5.1.6
2285
2285
+
2286
2286
+
'@atcute/oauth-types@0.1.1':
2287
2287
+
dependencies:
2288
2288
+
'@atcute/identity': 1.1.3
2289
2289
+
'@atcute/lexicons': 1.2.9
2290
2290
+
'@atcute/oauth-keyset': 0.1.0
2291
2291
+
'@badrap/valita': 0.4.6
2292
2292
+
2293
2293
+
'@atcute/tid@1.1.2':
2294
2294
+
dependencies:
2295
2295
+
'@atcute/time-ms': 1.2.3
2296
2296
+
2297
2297
+
'@atcute/time-ms@1.2.3':
2298
2298
+
dependencies:
2299
2299
+
'@types/bun': 1.3.9
2300
2300
+
node-gyp-build: 4.8.4
2301
2301
+
2302
2302
+
'@atcute/uint8array@1.1.1': {}
2303
2303
+
2304
2304
+
'@atcute/util-fetch@1.0.5':
2305
2305
+
dependencies:
2306
2306
+
'@badrap/valita': 0.4.6
2307
2307
+
2308
2308
+
'@atcute/util-text@1.1.1':
2309
2309
+
dependencies:
2310
2310
+
unicode-segmenter: 0.14.5
2311
2311
+
2312
2312
+
'@atproto/api@0.18.21':
2313
2313
+
dependencies:
2314
2314
+
'@atproto/common-web': 0.4.17
2315
2315
+
'@atproto/lexicon': 0.6.1
2316
2316
+
'@atproto/syntax': 0.4.3
2317
2317
+
'@atproto/xrpc': 0.7.7
2318
2318
+
await-lock: 2.2.2
2319
2319
+
multiformats: 9.9.0
2320
2320
+
tlds: 1.261.0
2321
2321
+
zod: 3.25.76
2322
2322
+
2323
2323
+
'@atproto/common-web@0.4.17':
2324
2324
+
dependencies:
2325
2325
+
'@atproto/lex-data': 0.0.12
2326
2326
+
'@atproto/lex-json': 0.0.12
2327
2327
+
'@atproto/syntax': 0.4.3
2328
2328
+
zod: 3.25.76
2329
2329
+
2330
2330
+
'@atproto/lex-data@0.0.12':
2331
2331
+
dependencies:
2332
2332
+
multiformats: 9.9.0
2333
2333
+
tslib: 2.8.1
2334
2334
+
uint8arrays: 3.0.0
2335
2335
+
unicode-segmenter: 0.14.5
2336
2336
+
2337
2337
+
'@atproto/lex-json@0.0.12':
2338
2338
+
dependencies:
2339
2339
+
'@atproto/lex-data': 0.0.12
2340
2340
+
tslib: 2.8.1
2341
2341
+
2342
2342
+
'@atproto/lexicon@0.6.1':
2343
2343
+
dependencies:
2344
2344
+
'@atproto/common-web': 0.4.17
2345
2345
+
'@atproto/syntax': 0.4.3
2346
2346
+
iso-datestring-validator: 2.2.2
2347
2347
+
multiformats: 9.9.0
2348
2348
+
zod: 3.25.76
2349
2349
+
2350
2350
+
'@atproto/syntax@0.4.3':
2351
2351
+
dependencies:
2352
2352
+
tslib: 2.8.1
2353
2353
+
2354
2354
+
'@atproto/xrpc@0.7.7':
2355
2355
+
dependencies:
2356
2356
+
'@atproto/lexicon': 0.6.1
2357
2357
+
zod: 3.25.76
2358
2358
+
1698
2359
'@babel/code-frame@7.29.0':
1699
2360
dependencies:
1700
2361
'@babel/helper-validator-identifier': 7.28.5
···
1742
2403
'@babel/helper-string-parser': 7.27.1
1743
2404
'@babel/helper-validator-identifier': 7.28.5
1744
2405
2406
2406
+
'@badrap/valita@0.4.6': {}
2407
2407
+
2408
2408
+
'@cloudflare/kv-asset-handler@0.4.2': {}
2409
2409
+
2410
2410
+
'@cloudflare/unenv-preset@2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260305.0)':
2411
2411
+
dependencies:
2412
2412
+
unenv: 2.0.0-rc.24
2413
2413
+
optionalDependencies:
2414
2414
+
workerd: 1.20260305.0
2415
2415
+
2416
2416
+
'@cloudflare/workerd-darwin-64@1.20260305.0':
2417
2417
+
optional: true
2418
2418
+
2419
2419
+
'@cloudflare/workerd-darwin-arm64@1.20260305.0':
2420
2420
+
optional: true
2421
2421
+
2422
2422
+
'@cloudflare/workerd-linux-64@1.20260305.0':
2423
2423
+
optional: true
2424
2424
+
2425
2425
+
'@cloudflare/workerd-linux-arm64@1.20260305.0':
2426
2426
+
optional: true
2427
2427
+
2428
2428
+
'@cloudflare/workerd-windows-64@1.20260305.0':
2429
2429
+
optional: true
2430
2430
+
2431
2431
+
'@cloudflare/workers-types@4.20260301.1': {}
2432
2432
+
2433
2433
+
'@cspotcode/source-map-support@0.8.1':
2434
2434
+
dependencies:
2435
2435
+
'@jridgewell/trace-mapping': 0.3.9
2436
2436
+
2437
2437
+
'@emnapi/runtime@1.8.1':
2438
2438
+
dependencies:
2439
2439
+
tslib: 2.8.1
2440
2440
+
optional: true
2441
2441
+
1745
2442
'@esbuild/aix-ppc64@0.27.3':
1746
2443
optional: true
1747
2444
···
1887
2584
1888
2585
'@floating-ui/utils@0.2.10': {}
1889
2586
1890
1890
-
'@foxui/core@0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(tailwindcss@4.2.1)':
2587
2587
+
'@foxui/core@0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)':
1891
2588
dependencies:
1892
2589
'@number-flow/svelte': 0.3.13(svelte@5.53.6)
1893
1893
-
bits-ui: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
2590
2590
+
bits-ui: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
1894
2591
clsx: 2.1.1
1895
2592
mode-watcher: 1.1.0(svelte@5.53.6)
1896
2593
svelte: 5.53.6
···
1902
2599
- '@internationalized/date'
1903
2600
- '@sveltejs/kit'
1904
2601
1905
1905
-
'@foxui/time@0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(tailwindcss@4.2.1)':
2602
2602
+
'@foxui/social@0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)':
1906
2603
dependencies:
1907
1907
-
'@foxui/core': 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(tailwindcss@4.2.1)
2604
2604
+
'@atproto/api': 0.18.21
2605
2605
+
'@foxui/core': 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
2606
2606
+
'@foxui/time': 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
2607
2607
+
'@use-gesture/vanilla': 10.3.1
2608
2608
+
bits-ui: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
2609
2609
+
emoji-picker-element: 1.29.1
2610
2610
+
hls.js: 1.6.15
2611
2611
+
is-emoji-supported: 0.0.5
2612
2612
+
plyr: 3.8.4
2613
2613
+
svelte: 5.53.6
2614
2614
+
tailwindcss: 4.2.1
2615
2615
+
transitivePeerDependencies:
2616
2616
+
- '@internationalized/date'
2617
2617
+
- '@sveltejs/kit'
2618
2618
+
2619
2619
+
'@foxui/time@0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)':
2620
2620
+
dependencies:
2621
2621
+
'@foxui/core': 0.5.1(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(tailwindcss@4.2.1)
1908
2622
'@number-flow/svelte': 0.3.13(svelte@5.53.6)
1909
1909
-
bits-ui: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
2623
2623
+
bits-ui: 2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
1910
2624
svelte: 5.53.6
1911
2625
tailwindcss: 4.2.1
1912
2626
transitivePeerDependencies:
···
1924
2638
1925
2639
'@humanwhocodes/retry@0.4.3': {}
1926
2640
2641
2641
+
'@img/colour@1.1.0': {}
2642
2642
+
2643
2643
+
'@img/sharp-darwin-arm64@0.34.5':
2644
2644
+
optionalDependencies:
2645
2645
+
'@img/sharp-libvips-darwin-arm64': 1.2.4
2646
2646
+
optional: true
2647
2647
+
2648
2648
+
'@img/sharp-darwin-x64@0.34.5':
2649
2649
+
optionalDependencies:
2650
2650
+
'@img/sharp-libvips-darwin-x64': 1.2.4
2651
2651
+
optional: true
2652
2652
+
2653
2653
+
'@img/sharp-libvips-darwin-arm64@1.2.4':
2654
2654
+
optional: true
2655
2655
+
2656
2656
+
'@img/sharp-libvips-darwin-x64@1.2.4':
2657
2657
+
optional: true
2658
2658
+
2659
2659
+
'@img/sharp-libvips-linux-arm64@1.2.4':
2660
2660
+
optional: true
2661
2661
+
2662
2662
+
'@img/sharp-libvips-linux-arm@1.2.4':
2663
2663
+
optional: true
2664
2664
+
2665
2665
+
'@img/sharp-libvips-linux-ppc64@1.2.4':
2666
2666
+
optional: true
2667
2667
+
2668
2668
+
'@img/sharp-libvips-linux-riscv64@1.2.4':
2669
2669
+
optional: true
2670
2670
+
2671
2671
+
'@img/sharp-libvips-linux-s390x@1.2.4':
2672
2672
+
optional: true
2673
2673
+
2674
2674
+
'@img/sharp-libvips-linux-x64@1.2.4':
2675
2675
+
optional: true
2676
2676
+
2677
2677
+
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
2678
2678
+
optional: true
2679
2679
+
2680
2680
+
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
2681
2681
+
optional: true
2682
2682
+
2683
2683
+
'@img/sharp-linux-arm64@0.34.5':
2684
2684
+
optionalDependencies:
2685
2685
+
'@img/sharp-libvips-linux-arm64': 1.2.4
2686
2686
+
optional: true
2687
2687
+
2688
2688
+
'@img/sharp-linux-arm@0.34.5':
2689
2689
+
optionalDependencies:
2690
2690
+
'@img/sharp-libvips-linux-arm': 1.2.4
2691
2691
+
optional: true
2692
2692
+
2693
2693
+
'@img/sharp-linux-ppc64@0.34.5':
2694
2694
+
optionalDependencies:
2695
2695
+
'@img/sharp-libvips-linux-ppc64': 1.2.4
2696
2696
+
optional: true
2697
2697
+
2698
2698
+
'@img/sharp-linux-riscv64@0.34.5':
2699
2699
+
optionalDependencies:
2700
2700
+
'@img/sharp-libvips-linux-riscv64': 1.2.4
2701
2701
+
optional: true
2702
2702
+
2703
2703
+
'@img/sharp-linux-s390x@0.34.5':
2704
2704
+
optionalDependencies:
2705
2705
+
'@img/sharp-libvips-linux-s390x': 1.2.4
2706
2706
+
optional: true
2707
2707
+
2708
2708
+
'@img/sharp-linux-x64@0.34.5':
2709
2709
+
optionalDependencies:
2710
2710
+
'@img/sharp-libvips-linux-x64': 1.2.4
2711
2711
+
optional: true
2712
2712
+
2713
2713
+
'@img/sharp-linuxmusl-arm64@0.34.5':
2714
2714
+
optionalDependencies:
2715
2715
+
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
2716
2716
+
optional: true
2717
2717
+
2718
2718
+
'@img/sharp-linuxmusl-x64@0.34.5':
2719
2719
+
optionalDependencies:
2720
2720
+
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
2721
2721
+
optional: true
2722
2722
+
2723
2723
+
'@img/sharp-wasm32@0.34.5':
2724
2724
+
dependencies:
2725
2725
+
'@emnapi/runtime': 1.8.1
2726
2726
+
optional: true
2727
2727
+
2728
2728
+
'@img/sharp-win32-arm64@0.34.5':
2729
2729
+
optional: true
2730
2730
+
2731
2731
+
'@img/sharp-win32-ia32@0.34.5':
2732
2732
+
optional: true
2733
2733
+
2734
2734
+
'@img/sharp-win32-x64@0.34.5':
2735
2735
+
optional: true
2736
2736
+
1927
2737
'@internationalized/date@3.11.0':
1928
2738
dependencies:
1929
2739
'@swc/helpers': 0.5.19
···
1943
2753
'@jridgewell/sourcemap-codec@1.5.5': {}
1944
2754
1945
2755
'@jridgewell/trace-mapping@0.3.31':
2756
2756
+
dependencies:
2757
2757
+
'@jridgewell/resolve-uri': 3.1.2
2758
2758
+
'@jridgewell/sourcemap-codec': 1.5.5
2759
2759
+
2760
2760
+
'@jridgewell/trace-mapping@0.3.9':
1946
2761
dependencies:
1947
2762
'@jridgewell/resolve-uri': 3.1.2
1948
2763
'@jridgewell/sourcemap-codec': 1.5.5
···
1971
2786
1972
2787
'@polka/url@1.0.0-next.29': {}
1973
2788
2789
2789
+
'@poppinss/colors@4.1.6':
2790
2790
+
dependencies:
2791
2791
+
kleur: 4.1.5
2792
2792
+
2793
2793
+
'@poppinss/dumper@0.6.5':
2794
2794
+
dependencies:
2795
2795
+
'@poppinss/colors': 4.1.6
2796
2796
+
'@sindresorhus/is': 7.2.0
2797
2797
+
supports-color: 10.2.2
2798
2798
+
2799
2799
+
'@poppinss/exception@1.2.3': {}
2800
2800
+
1974
2801
'@rollup/rollup-android-arm-eabi@4.59.0':
1975
2802
optional: true
1976
2803
···
2046
2873
'@rollup/rollup-win32-x64-msvc@4.59.0':
2047
2874
optional: true
2048
2875
2876
2876
+
'@sindresorhus/is@7.2.0': {}
2877
2877
+
2878
2878
+
'@speed-highlight/core@1.2.14': {}
2879
2879
+
2049
2880
'@stablelib/aead@1.0.1': {}
2050
2881
2051
2882
'@stablelib/binary@1.0.1':
···
2083
2914
dependencies:
2084
2915
acorn: 8.16.0
2085
2916
2086
2086
-
'@sveltejs/adapter-auto@7.0.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))':
2917
2917
+
'@sveltejs/adapter-cloudflare@7.2.8(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(wrangler@4.69.0(@cloudflare/workers-types@4.20260301.1))':
2087
2918
dependencies:
2088
2088
-
'@sveltejs/kit': 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
2919
2919
+
'@cloudflare/workers-types': 4.20260301.1
2920
2920
+
'@sveltejs/kit': 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2921
2921
+
worktop: 0.8.0-next.18
2922
2922
+
wrangler: 4.69.0(@cloudflare/workers-types@4.20260301.1)
2089
2923
2090
2090
-
'@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))':
2924
2924
+
'@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))':
2091
2925
dependencies:
2092
2926
'@standard-schema/spec': 1.1.0
2093
2927
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
2094
2094
-
'@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
2928
2928
+
'@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2095
2929
'@types/cookie': 0.6.0
2096
2930
acorn: 8.16.0
2097
2931
cookie: 0.6.0
···
2103
2937
set-cookie-parser: 3.0.1
2104
2938
sirv: 3.0.2
2105
2939
svelte: 5.53.6
2106
2106
-
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
2940
2940
+
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
2107
2941
optionalDependencies:
2108
2942
typescript: 5.9.3
2109
2943
2110
2110
-
'@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))':
2944
2944
+
'@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))':
2111
2945
dependencies:
2112
2112
-
'@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
2946
2946
+
'@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2113
2947
obug: 2.1.1
2114
2948
svelte: 5.53.6
2115
2115
-
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
2949
2949
+
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
2116
2950
2117
2117
-
'@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))':
2951
2951
+
'@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))':
2118
2952
dependencies:
2119
2119
-
'@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
2953
2953
+
'@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2120
2954
deepmerge: 4.3.1
2121
2955
magic-string: 0.30.21
2122
2956
obug: 2.1.1
2123
2957
svelte: 5.53.6
2124
2124
-
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
2125
2125
-
vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
2958
2958
+
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
2959
2959
+
vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2126
2960
2127
2961
'@swc/helpers@0.5.19':
2128
2962
dependencies:
···
2199
3033
postcss-selector-parser: 6.0.10
2200
3034
tailwindcss: 4.2.1
2201
3035
2202
2202
-
'@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))':
3036
3036
+
'@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))':
2203
3037
dependencies:
2204
3038
'@tailwindcss/node': 4.2.1
2205
3039
'@tailwindcss/oxide': 4.2.1
2206
3040
tailwindcss: 4.2.1
2207
2207
-
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
3041
3041
+
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
3042
3042
+
3043
3043
+
'@types/bun@1.3.9':
3044
3044
+
dependencies:
3045
3045
+
bun-types: 1.3.9
2208
3046
2209
3047
'@types/cookie@0.6.0': {}
2210
3048
···
2309
3147
'@typescript-eslint/types': 8.56.1
2310
3148
eslint-visitor-keys: 5.0.1
2311
3149
3150
3150
+
'@use-gesture/core@10.3.1': {}
3151
3151
+
3152
3152
+
'@use-gesture/vanilla@10.3.1':
3153
3153
+
dependencies:
3154
3154
+
'@use-gesture/core': 10.3.1
3155
3155
+
2312
3156
acorn-jsx@5.3.2(acorn@8.16.0):
2313
3157
dependencies:
2314
3158
acorn: 8.16.0
···
2330
3174
2331
3175
aria-query@5.3.1: {}
2332
3176
3177
3177
+
await-lock@2.2.2: {}
3178
3178
+
2333
3179
axobject-query@4.1.0: {}
2334
3180
2335
3181
balanced-match@1.0.2: {}
···
2338
3184
2339
3185
base64-js@1.5.1: {}
2340
3186
2341
2341
-
bits-ui@2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6):
3187
3187
+
bits-ui@2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6):
2342
3188
dependencies:
2343
3189
'@floating-ui/core': 1.7.4
2344
3190
'@floating-ui/dom': 1.7.5
2345
3191
'@internationalized/date': 3.11.0
2346
3192
esm-env: 1.2.2
2347
2347
-
runed: 0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
3193
3193
+
runed: 0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
2348
3194
svelte: 5.53.6
2349
2349
-
svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
3195
3195
+
svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
2350
3196
tabbable: 6.4.0
2351
3197
transitivePeerDependencies:
2352
3198
- '@sveltejs/kit'
3199
3199
+
3200
3200
+
blake3-wasm@2.1.5: {}
2353
3201
2354
3202
brace-expansion@1.1.12:
2355
3203
dependencies:
···
2364
3212
dependencies:
2365
3213
base64-js: 1.5.1
2366
3214
ieee754: 1.2.1
3215
3215
+
3216
3216
+
bun-types@1.3.9:
3217
3217
+
dependencies:
3218
3218
+
'@types/node': 22.19.13
2367
3219
2368
3220
callsites@3.1.0: {}
2369
3221
···
2388
3240
2389
3241
cookie@0.6.0: {}
2390
3242
3243
3243
+
cookie@1.1.1: {}
3244
3244
+
3245
3245
+
core-js@3.48.0: {}
3246
3246
+
2391
3247
cross-spawn@7.0.6:
2392
3248
dependencies:
2393
3249
path-key: 3.1.1
···
2395
3251
which: 2.0.2
2396
3252
2397
3253
cssesc@3.0.0: {}
3254
3254
+
3255
3255
+
custom-event-polyfill@1.0.7: {}
2398
3256
2399
3257
debug@4.4.3:
2400
3258
dependencies:
···
2427
3285
transitivePeerDependencies:
2428
3286
- encoding
2429
3287
3288
3288
+
emoji-picker-element@1.29.1: {}
3289
3289
+
2430
3290
enhanced-resolve@5.20.0:
2431
3291
dependencies:
2432
3292
graceful-fs: 4.2.11
2433
3293
tapable: 2.3.0
3294
3294
+
3295
3295
+
error-stack-parser-es@1.0.5: {}
2434
3296
2435
3297
esbuild@0.27.3:
2436
3298
optionalDependencies:
···
2590
3452
fsevents@2.3.3:
2591
3453
optional: true
2592
3454
3455
3455
+
get-tsconfig@4.13.6:
3456
3456
+
dependencies:
3457
3457
+
resolve-pkg-maps: 1.0.0
3458
3458
+
2593
3459
glob-parent@6.0.2:
2594
3460
dependencies:
2595
3461
is-glob: 4.0.3
···
2604
3470
2605
3471
has-flag@4.0.0: {}
2606
3472
3473
3473
+
hls.js@1.6.15: {}
3474
3474
+
2607
3475
ieee754@1.2.1: {}
2608
3476
2609
3477
ignore@5.3.2: {}
···
2619
3487
2620
3488
inline-style-parser@0.2.7: {}
2621
3489
3490
3490
+
is-emoji-supported@0.0.5: {}
3491
3491
+
2622
3492
is-extglob@2.1.1: {}
2623
3493
2624
3494
is-glob@4.0.3:
···
2630
3500
'@types/estree': 1.0.8
2631
3501
2632
3502
isexe@2.0.0: {}
3503
3503
+
3504
3504
+
iso-datestring-validator@2.2.2: {}
2633
3505
2634
3506
isomorphic-fetch@3.0.0:
2635
3507
dependencies:
···
2718
3590
2719
3591
lilconfig@2.1.0: {}
2720
3592
3593
3593
+
loadjs@4.3.0: {}
3594
3594
+
2721
3595
locate-character@3.0.0: {}
2722
3596
2723
3597
locate-path@6.0.0:
···
2734
3608
2735
3609
mini-svg-data-uri@1.4.4: {}
2736
3610
3611
3611
+
miniflare@4.20260305.0:
3612
3612
+
dependencies:
3613
3613
+
'@cspotcode/source-map-support': 0.8.1
3614
3614
+
sharp: 0.34.5
3615
3615
+
undici: 7.18.2
3616
3616
+
workerd: 1.20260305.0
3617
3617
+
ws: 8.18.0
3618
3618
+
youch: 4.1.0-beta.10
3619
3619
+
transitivePeerDependencies:
3620
3620
+
- bufferutil
3621
3621
+
- utf-8-validate
3622
3622
+
2737
3623
minimatch@10.2.4:
2738
3624
dependencies:
2739
3625
brace-expansion: 5.0.4
···
2754
3640
2755
3641
ms@2.1.3: {}
2756
3642
3643
3643
+
multiformats@9.9.0: {}
3644
3644
+
2757
3645
nanoid@3.3.11: {}
3646
3646
+
3647
3647
+
nanoid@5.1.6: {}
2758
3648
2759
3649
natural-compare@1.4.0: {}
2760
3650
···
2762
3652
dependencies:
2763
3653
whatwg-url: 5.0.0
2764
3654
3655
3655
+
node-gyp-build@4.8.4: {}
3656
3656
+
2765
3657
number-flow@0.5.12:
2766
3658
dependencies:
2767
3659
esm-env: 1.2.2
···
2796
3688
path-exists@4.0.0: {}
2797
3689
2798
3690
path-key@3.1.1: {}
3691
3691
+
3692
3692
+
path-to-regexp@6.3.0: {}
3693
3693
+
3694
3694
+
pathe@2.0.3: {}
2799
3695
2800
3696
picocolors@1.1.1: {}
2801
3697
2802
3698
picomatch@4.0.3: {}
2803
3699
3700
3700
+
plyr@3.8.4:
3701
3701
+
dependencies:
3702
3702
+
core-js: 3.48.0
3703
3703
+
custom-event-polyfill: 1.0.7
3704
3704
+
loadjs: 4.3.0
3705
3705
+
rangetouch: 2.0.1
3706
3706
+
url-polyfill: 1.1.14
3707
3707
+
2804
3708
postcss-load-config@3.1.4(postcss@8.5.6):
2805
3709
dependencies:
2806
3710
lilconfig: 2.1.0
···
2849
3753
2850
3754
punycode@2.3.1: {}
2851
3755
3756
3756
+
rangetouch@2.0.1: {}
3757
3757
+
2852
3758
readdirp@4.1.2: {}
2853
3759
3760
3760
+
regexparam@3.0.0: {}
3761
3761
+
2854
3762
resolve-from@4.0.0: {}
3763
3763
+
3764
3764
+
resolve-pkg-maps@1.0.0: {}
2855
3765
2856
3766
rollup@4.59.0:
2857
3767
dependencies:
···
2899
3809
esm-env: 1.2.2
2900
3810
svelte: 5.53.6
2901
3811
2902
2902
-
runed@0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6):
3812
3812
+
runed@0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6):
2903
3813
dependencies:
2904
3814
dequal: 2.0.3
2905
3815
esm-env: 1.2.2
2906
3816
lz-string: 1.5.0
2907
3817
svelte: 5.53.6
2908
3818
optionalDependencies:
2909
2909
-
'@sveltejs/kit': 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1))
3819
3819
+
'@sveltejs/kit': 2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0))
2910
3820
2911
3821
sade@1.8.1:
2912
3822
dependencies:
···
2916
3826
2917
3827
set-cookie-parser@3.0.1: {}
2918
3828
3829
3829
+
sharp@0.34.5:
3830
3830
+
dependencies:
3831
3831
+
'@img/colour': 1.1.0
3832
3832
+
detect-libc: 2.1.2
3833
3833
+
semver: 7.7.4
3834
3834
+
optionalDependencies:
3835
3835
+
'@img/sharp-darwin-arm64': 0.34.5
3836
3836
+
'@img/sharp-darwin-x64': 0.34.5
3837
3837
+
'@img/sharp-libvips-darwin-arm64': 1.2.4
3838
3838
+
'@img/sharp-libvips-darwin-x64': 1.2.4
3839
3839
+
'@img/sharp-libvips-linux-arm': 1.2.4
3840
3840
+
'@img/sharp-libvips-linux-arm64': 1.2.4
3841
3841
+
'@img/sharp-libvips-linux-ppc64': 1.2.4
3842
3842
+
'@img/sharp-libvips-linux-riscv64': 1.2.4
3843
3843
+
'@img/sharp-libvips-linux-s390x': 1.2.4
3844
3844
+
'@img/sharp-libvips-linux-x64': 1.2.4
3845
3845
+
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
3846
3846
+
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
3847
3847
+
'@img/sharp-linux-arm': 0.34.5
3848
3848
+
'@img/sharp-linux-arm64': 0.34.5
3849
3849
+
'@img/sharp-linux-ppc64': 0.34.5
3850
3850
+
'@img/sharp-linux-riscv64': 0.34.5
3851
3851
+
'@img/sharp-linux-s390x': 0.34.5
3852
3852
+
'@img/sharp-linux-x64': 0.34.5
3853
3853
+
'@img/sharp-linuxmusl-arm64': 0.34.5
3854
3854
+
'@img/sharp-linuxmusl-x64': 0.34.5
3855
3855
+
'@img/sharp-wasm32': 0.34.5
3856
3856
+
'@img/sharp-win32-arm64': 0.34.5
3857
3857
+
'@img/sharp-win32-ia32': 0.34.5
3858
3858
+
'@img/sharp-win32-x64': 0.34.5
3859
3859
+
2919
3860
shebang-command@2.0.0:
2920
3861
dependencies:
2921
3862
shebang-regex: 3.0.0
···
2935
3876
style-to-object@1.0.14:
2936
3877
dependencies:
2937
3878
inline-style-parser: 0.2.7
3879
3879
+
3880
3880
+
supports-color@10.2.2: {}
2938
3881
2939
3882
supports-color@7.2.0:
2940
3883
dependencies:
···
2969
3912
runed: 0.28.0(svelte@5.53.6)
2970
3913
svelte: 5.53.6
2971
3914
2972
2972
-
svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6):
3915
3915
+
svelte-toolbelt@0.10.6(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6):
2973
3916
dependencies:
2974
3917
clsx: 2.1.1
2975
2975
-
runed: 0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.6)
3918
3918
+
runed: 0.35.1(@sveltejs/kit@2.53.4(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.6)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)))(svelte@5.53.6)
2976
3919
style-to-object: 1.0.14
2977
3920
svelte: 5.53.6
2978
3921
transitivePeerDependencies:
···
3023
3966
fdir: 6.5.0(picomatch@4.0.3)
3024
3967
picomatch: 4.0.3
3025
3968
3969
3969
+
tlds@1.261.0: {}
3970
3970
+
3026
3971
tlock-js@0.9.0:
3027
3972
dependencies:
3028
3973
'@noble/curves': 1.9.7
···
3043
3988
3044
3989
tslib@2.8.1: {}
3045
3990
3991
3991
+
tsx@4.21.0:
3992
3992
+
dependencies:
3993
3993
+
esbuild: 0.27.3
3994
3994
+
get-tsconfig: 4.13.6
3995
3995
+
optionalDependencies:
3996
3996
+
fsevents: 2.3.3
3997
3997
+
3046
3998
type-check@0.4.0:
3047
3999
dependencies:
3048
4000
prelude-ls: 1.2.1
···
3060
4012
3061
4013
typescript@5.9.3: {}
3062
4014
4015
4015
+
uint8arrays@3.0.0:
4016
4016
+
dependencies:
4017
4017
+
multiformats: 9.9.0
4018
4018
+
3063
4019
undici-types@6.21.0: {}
3064
4020
4021
4021
+
undici@7.18.2: {}
4022
4022
+
4023
4023
+
unenv@2.0.0-rc.24:
4024
4024
+
dependencies:
4025
4025
+
pathe: 2.0.3
4026
4026
+
4027
4027
+
unicode-segmenter@0.14.5: {}
4028
4028
+
3065
4029
uri-js@4.4.1:
3066
4030
dependencies:
3067
4031
punycode: 2.3.1
3068
4032
4033
4033
+
url-polyfill@1.1.14: {}
4034
4034
+
3069
4035
util-deprecate@1.0.2: {}
3070
4036
3071
3071
-
vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1):
4037
4037
+
valibot@1.2.0(typescript@5.9.3):
4038
4038
+
optionalDependencies:
4039
4039
+
typescript: 5.9.3
4040
4040
+
4041
4041
+
vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0):
3072
4042
dependencies:
3073
4043
esbuild: 0.27.3
3074
4044
fdir: 6.5.0(picomatch@4.0.3)
···
3081
4051
fsevents: 2.3.3
3082
4052
jiti: 2.6.1
3083
4053
lightningcss: 1.31.1
4054
4054
+
tsx: 4.21.0
3084
4055
3085
3085
-
vitefu@1.1.2(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)):
4056
4056
+
vitefu@1.1.2(vite@7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)):
3086
4057
optionalDependencies:
3087
3087
-
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)
4058
4058
+
vite: 7.3.1(@types/node@22.19.13)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)
3088
4059
3089
4060
webidl-conversions@3.0.1: {}
3090
4061
···
3101
4072
3102
4073
word-wrap@1.2.5: {}
3103
4074
4075
4075
+
workerd@1.20260305.0:
4076
4076
+
optionalDependencies:
4077
4077
+
'@cloudflare/workerd-darwin-64': 1.20260305.0
4078
4078
+
'@cloudflare/workerd-darwin-arm64': 1.20260305.0
4079
4079
+
'@cloudflare/workerd-linux-64': 1.20260305.0
4080
4080
+
'@cloudflare/workerd-linux-arm64': 1.20260305.0
4081
4081
+
'@cloudflare/workerd-windows-64': 1.20260305.0
4082
4082
+
4083
4083
+
worktop@0.8.0-next.18:
4084
4084
+
dependencies:
4085
4085
+
mrmime: 2.0.1
4086
4086
+
regexparam: 3.0.0
4087
4087
+
4088
4088
+
wrangler@4.69.0(@cloudflare/workers-types@4.20260301.1):
4089
4089
+
dependencies:
4090
4090
+
'@cloudflare/kv-asset-handler': 0.4.2
4091
4091
+
'@cloudflare/unenv-preset': 2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260305.0)
4092
4092
+
blake3-wasm: 2.1.5
4093
4093
+
esbuild: 0.27.3
4094
4094
+
miniflare: 4.20260305.0
4095
4095
+
path-to-regexp: 6.3.0
4096
4096
+
unenv: 2.0.0-rc.24
4097
4097
+
workerd: 1.20260305.0
4098
4098
+
optionalDependencies:
4099
4099
+
'@cloudflare/workers-types': 4.20260301.1
4100
4100
+
fsevents: 2.3.3
4101
4101
+
transitivePeerDependencies:
4102
4102
+
- bufferutil
4103
4103
+
- utf-8-validate
4104
4104
+
4105
4105
+
ws@8.18.0: {}
4106
4106
+
3104
4107
yaml@1.10.2: {}
3105
4108
3106
4109
yocto-queue@0.1.0: {}
3107
4110
4111
4111
+
youch-core@0.3.3:
4112
4112
+
dependencies:
4113
4113
+
'@poppinss/exception': 1.2.3
4114
4114
+
error-stack-parser-es: 1.0.5
4115
4115
+
4116
4116
+
youch@4.1.0-beta.10:
4117
4117
+
dependencies:
4118
4118
+
'@poppinss/colors': 4.1.6
4119
4119
+
'@poppinss/dumper': 0.6.5
4120
4120
+
'@speed-highlight/core': 1.2.14
4121
4121
+
cookie: 1.1.1
4122
4122
+
youch-core: 0.3.3
4123
4123
+
3108
4124
zimmerframe@1.1.4: {}
4125
4125
+
4126
4126
+
zod@3.25.76: {}
···
1
1
+
import type { OAuthSession } from '@atcute/oauth-node-client';
2
2
+
import type { Client } from '@atcute/client';
3
3
+
import type { Did } from '@atcute/lexicons';
4
4
+
1
5
// See https://svelte.dev/docs/kit/types#app.d.ts
2
6
// for information about these interfaces
3
7
declare global {
4
8
namespace App {
5
9
// interface Error {}
6
6
-
// interface Locals {}
10
10
+
interface Locals {
11
11
+
session: OAuthSession | null;
12
12
+
client: Client | null;
13
13
+
did: Did | null;
14
14
+
}
7
15
// interface PageData {}
8
16
// interface PageState {}
9
9
-
// interface Platform {}
17
17
+
interface Platform {
18
18
+
env: {
19
19
+
OAUTH_SESSIONS: KVNamespace;
20
20
+
OAUTH_STATES: KVNamespace;
21
21
+
CLIENT_ASSERTION_KEY: string;
22
22
+
COOKIE_SECRET: string;
23
23
+
OAUTH_PUBLIC_URL: string;
24
24
+
PROFILE_CACHE?: KVNamespace;
25
25
+
};
26
26
+
}
10
27
}
11
28
}
12
29
13
30
export {};
31
31
+
32
32
+
import type {} from '@atcute/atproto';
33
33
+
import type {} from '@atcute/bluesky';
···
1
1
+
import type { Handle } from '@sveltejs/kit';
2
2
+
import { restoreSession } from '$lib/atproto/server/session';
3
3
+
4
4
+
export const handle: Handle = async ({ event, resolve }) => {
5
5
+
const { session, client, did } = await restoreSession(event.cookies, event.platform?.env);
6
6
+
event.locals.session = session;
7
7
+
event.locals.client = client;
8
8
+
event.locals.did = did;
9
9
+
return resolve(event);
10
10
+
};
···
1
1
+
import { AppBskyActorDefs } from '@atcute/bluesky';
2
2
+
import type { ActorIdentifier, Did } from '@atcute/lexicons';
3
3
+
import { page } from '$app/state';
4
4
+
import { ALLOW_SIGNUP, REDIRECT_TO_LAST_PAGE_ON_LOGIN } from './settings';
5
5
+
6
6
+
export const user = {
7
7
+
get profile() {
8
8
+
return (page.data?.profile as AppBskyActorDefs.ProfileViewDetailed | null) ?? null;
9
9
+
},
10
10
+
get isLoggedIn() {
11
11
+
return !!page.data?.did;
12
12
+
},
13
13
+
get did() {
14
14
+
return (page.data?.did as Did | null) ?? null;
15
15
+
}
16
16
+
};
17
17
+
18
18
+
function saveReturnTo() {
19
19
+
if (REDIRECT_TO_LAST_PAGE_ON_LOGIN) {
20
20
+
document.cookie = `oauth_return_to=${encodeURIComponent(window.location.pathname + window.location.search)};path=/;max-age=600;samesite=lax`;
21
21
+
}
22
22
+
}
23
23
+
24
24
+
export async function login(handle: string) {
25
25
+
if (handle.startsWith('did:')) {
26
26
+
if (handle.length < 6) throw new Error('DID must be at least 6 characters');
27
27
+
} else if (handle.includes('.') && handle.length > 3) {
28
28
+
handle = (handle.startsWith('@') ? handle.slice(1) : handle) as ActorIdentifier;
29
29
+
if (handle.length < 4) throw new Error('Handle must be at least 4 characters');
30
30
+
} else if (handle.length > 3) {
31
31
+
handle = ((handle.startsWith('@') ? handle.slice(1) : handle) +
32
32
+
'.bsky.social') as ActorIdentifier;
33
33
+
} else {
34
34
+
throw new Error('Please provide a valid handle or DID.');
35
35
+
}
36
36
+
37
37
+
const { oauthLogin } = await import('./server/oauth.remote');
38
38
+
const { url } = await oauthLogin({ handle });
39
39
+
saveReturnTo();
40
40
+
window.location.assign(url);
41
41
+
42
42
+
// Wait for navigation (prevents UI flash)
43
43
+
await new Promise((_resolve, reject) => {
44
44
+
window.addEventListener('pageshow', () => reject(new Error('user aborted the login request')), {
45
45
+
once: true
46
46
+
});
47
47
+
});
48
48
+
}
49
49
+
50
50
+
export async function signup() {
51
51
+
if (!ALLOW_SIGNUP) throw new Error('Signup is not enabled');
52
52
+
53
53
+
const { oauthLogin } = await import('./server/oauth.remote');
54
54
+
const { url } = await oauthLogin({ signup: true });
55
55
+
saveReturnTo();
56
56
+
window.location.assign(url);
57
57
+
58
58
+
await new Promise((_resolve, reject) => {
59
59
+
window.addEventListener('pageshow', () => reject(new Error('user aborted the signup request')), {
60
60
+
once: true
61
61
+
});
62
62
+
});
63
63
+
}
64
64
+
65
65
+
export async function logout() {
66
66
+
try {
67
67
+
const { oauthLogout } = await import('./server/oauth.remote');
68
68
+
await oauthLogout();
69
69
+
} catch (e) {
70
70
+
console.error('Error logging out:', e);
71
71
+
}
72
72
+
73
73
+
// Full reload to clear server session state
74
74
+
window.location.href = '/';
75
75
+
}
···
1
1
+
import { getCDNImageBlobUrl, uploadBlob } from './methods';
2
2
+
3
3
+
export function compressImage(
4
4
+
file: File | Blob,
5
5
+
maxSize: number = 900 * 1024,
6
6
+
maxDimension: number = 2048
7
7
+
): Promise<{
8
8
+
blob: Blob;
9
9
+
aspectRatio: {
10
10
+
width: number;
11
11
+
height: number;
12
12
+
};
13
13
+
}> {
14
14
+
return new Promise((resolve, reject) => {
15
15
+
const img = new Image();
16
16
+
const reader = new FileReader();
17
17
+
18
18
+
reader.onload = (e) => {
19
19
+
if (!e.target?.result) {
20
20
+
return reject(new Error('Failed to read file.'));
21
21
+
}
22
22
+
img.src = e.target.result as string;
23
23
+
};
24
24
+
25
25
+
reader.onerror = (err) => reject(err);
26
26
+
reader.readAsDataURL(file);
27
27
+
28
28
+
img.onload = () => {
29
29
+
let width = img.width;
30
30
+
let height = img.height;
31
31
+
32
32
+
// If image is already small enough, return original
33
33
+
if (file.size <= maxSize) {
34
34
+
console.log('skipping compression+resizing, already small enough');
35
35
+
return resolve({
36
36
+
blob: file,
37
37
+
aspectRatio: {
38
38
+
width,
39
39
+
height
40
40
+
}
41
41
+
});
42
42
+
}
43
43
+
44
44
+
if (width > maxDimension || height > maxDimension) {
45
45
+
if (width > height) {
46
46
+
height = Math.round((maxDimension / width) * height);
47
47
+
width = maxDimension;
48
48
+
} else {
49
49
+
width = Math.round((maxDimension / height) * width);
50
50
+
height = maxDimension;
51
51
+
}
52
52
+
}
53
53
+
54
54
+
// Create a canvas to draw the image
55
55
+
const canvas = document.createElement('canvas');
56
56
+
canvas.width = width;
57
57
+
canvas.height = height;
58
58
+
const ctx = canvas.getContext('2d');
59
59
+
if (!ctx) return reject(new Error('Failed to get canvas context.'));
60
60
+
ctx.drawImage(img, 0, 0, width, height);
61
61
+
62
62
+
// Use WebP for both compression and transparency support
63
63
+
let quality = 0.9;
64
64
+
65
65
+
function attemptCompression() {
66
66
+
canvas.toBlob(
67
67
+
(blob) => {
68
68
+
if (!blob) {
69
69
+
return reject(new Error('Compression failed.'));
70
70
+
}
71
71
+
if (blob.size <= maxSize || quality < 0.3) {
72
72
+
resolve({
73
73
+
blob,
74
74
+
aspectRatio: {
75
75
+
width,
76
76
+
height
77
77
+
}
78
78
+
});
79
79
+
} else {
80
80
+
quality -= 0.1;
81
81
+
attemptCompression();
82
82
+
}
83
83
+
},
84
84
+
'image/webp',
85
85
+
quality
86
86
+
);
87
87
+
}
88
88
+
89
89
+
attemptCompression();
90
90
+
};
91
91
+
92
92
+
img.onerror = (err) => reject(err);
93
93
+
});
94
94
+
}
95
95
+
96
96
+
export async function checkAndUploadImage(
97
97
+
recordWithImage: Record<string, any>,
98
98
+
key: string = 'image',
99
99
+
// e.g. /api/image-proxy?url=
100
100
+
imageProxy?: string
101
101
+
) {
102
102
+
if (!recordWithImage[key]) return;
103
103
+
104
104
+
// Already uploaded as blob
105
105
+
if (typeof recordWithImage[key] === 'object' && recordWithImage[key].$type === 'blob') {
106
106
+
return;
107
107
+
}
108
108
+
109
109
+
if (typeof recordWithImage[key] === 'string' && imageProxy) {
110
110
+
const proxyUrl = imageProxy + encodeURIComponent(recordWithImage[key]);
111
111
+
const response = await fetch(proxyUrl);
112
112
+
if (!response.ok) {
113
113
+
throw Error('failed to get image from image proxy');
114
114
+
}
115
115
+
116
116
+
const blob = await response.blob();
117
117
+
const compressedBlob = await compressImage(blob);
118
118
+
119
119
+
recordWithImage[key] = await uploadBlob({ blob: compressedBlob.blob });
120
120
+
121
121
+
return;
122
122
+
}
123
123
+
124
124
+
if (recordWithImage[key]?.blob) {
125
125
+
if (recordWithImage[key].objectUrl) {
126
126
+
URL.revokeObjectURL(recordWithImage[key].objectUrl);
127
127
+
}
128
128
+
const compressedBlob = await compressImage(recordWithImage[key].blob);
129
129
+
recordWithImage[key] = await uploadBlob({ blob: compressedBlob.blob });
130
130
+
}
131
131
+
}
132
132
+
133
133
+
export function getImageFromRecord(
134
134
+
recordWithImage: Record<string, any> | undefined,
135
135
+
did: string,
136
136
+
key: string = 'image'
137
137
+
): string | undefined {
138
138
+
if (!recordWithImage?.[key]) return;
139
139
+
140
140
+
if (typeof recordWithImage[key] === 'object' && recordWithImage[key].$type === 'blob') {
141
141
+
return getCDNImageBlobUrl({ did, blob: recordWithImage[key] });
142
142
+
}
143
143
+
144
144
+
if (recordWithImage[key].objectUrl) return recordWithImage[key].objectUrl;
145
145
+
146
146
+
if (recordWithImage[key].blob) {
147
147
+
recordWithImage[key].objectUrl = URL.createObjectURL(recordWithImage[key].blob);
148
148
+
return recordWithImage[key].objectUrl;
149
149
+
}
150
150
+
151
151
+
return recordWithImage[key];
152
152
+
}
···
1
1
+
export { user, login, signup, logout } from './auth.svelte';
2
2
+
3
3
+
export {
4
4
+
parseUri,
5
5
+
resolveHandle,
6
6
+
actorToDid,
7
7
+
getPDS,
8
8
+
getDetailedProfile,
9
9
+
getClient,
10
10
+
listRecords,
11
11
+
getRecord,
12
12
+
putRecord,
13
13
+
deleteRecord,
14
14
+
uploadBlob,
15
15
+
describeRepo,
16
16
+
getBlobURL,
17
17
+
getCDNImageBlobUrl,
18
18
+
searchActorsTypeahead,
19
19
+
createTID
20
20
+
} from './methods';
···
1
1
+
import { parseResourceUri, type Did, type Handle } from '@atcute/lexicons';
2
2
+
import { isDid } from '@atcute/lexicons/syntax';
3
3
+
import { user } from './auth.svelte';
4
4
+
import { DOH_RESOLVER, type AllowedCollection } from './settings';
5
5
+
import {
6
6
+
CompositeDidDocumentResolver,
7
7
+
CompositeHandleResolver,
8
8
+
DohJsonHandleResolver,
9
9
+
PlcDidDocumentResolver,
10
10
+
WebDidDocumentResolver,
11
11
+
WellKnownHandleResolver
12
12
+
} from '@atcute/identity-resolver';
13
13
+
import { Client, simpleFetchHandler } from '@atcute/client';
14
14
+
import { type AppBskyActorDefs } from '@atcute/bluesky';
15
15
+
16
16
+
export type Collection = `${string}.${string}.${string}`;
17
17
+
import * as TID from '@atcute/tid';
18
18
+
19
19
+
/**
20
20
+
* Parses an AT Protocol URI into its components.
21
21
+
*/
22
22
+
export function parseUri(uri: string) {
23
23
+
const parts = parseResourceUri(uri);
24
24
+
if (!parts.ok) return;
25
25
+
return parts.value;
26
26
+
}
27
27
+
28
28
+
/**
29
29
+
* Resolves a handle to a DID using DNS and HTTP methods.
30
30
+
*/
31
31
+
export async function resolveHandle({ handle }: { handle: Handle }) {
32
32
+
const handleResolver = new CompositeHandleResolver({
33
33
+
methods: {
34
34
+
dns: new DohJsonHandleResolver({ dohUrl: DOH_RESOLVER }),
35
35
+
http: new WellKnownHandleResolver()
36
36
+
}
37
37
+
});
38
38
+
39
39
+
const data = await handleResolver.resolve(handle);
40
40
+
return data;
41
41
+
}
42
42
+
43
43
+
/**
44
44
+
* Returns a DID given a handle or DID string.
45
45
+
*/
46
46
+
export async function actorToDid(actor: string): Promise<Did> {
47
47
+
if (isDid(actor)) return actor;
48
48
+
return await resolveHandle({ handle: actor as Handle });
49
49
+
}
50
50
+
51
51
+
const didResolver = new CompositeDidDocumentResolver({
52
52
+
methods: {
53
53
+
plc: new PlcDidDocumentResolver(),
54
54
+
web: new WebDidDocumentResolver()
55
55
+
}
56
56
+
});
57
57
+
58
58
+
/**
59
59
+
* Gets the PDS (Personal Data Server) URL for a given DID.
60
60
+
*/
61
61
+
export async function getPDS(did: Did) {
62
62
+
const doc = await didResolver.resolve(did as Did<'plc'> | Did<'web'>);
63
63
+
if (!doc.service) throw new Error('No PDS found');
64
64
+
for (const service of doc.service) {
65
65
+
if (service.id === '#atproto_pds') {
66
66
+
return service.serviceEndpoint.toString();
67
67
+
}
68
68
+
}
69
69
+
}
70
70
+
71
71
+
/**
72
72
+
* Fetches a detailed Bluesky profile for a user.
73
73
+
*/
74
74
+
export async function getDetailedProfile(data?: { did?: Did; client?: Client }) {
75
75
+
data ??= {};
76
76
+
data.did ??= user.did ?? undefined;
77
77
+
78
78
+
if (!data.did) throw new Error('Error getting detailed profile: no did');
79
79
+
80
80
+
data.client ??= new Client({
81
81
+
handler: simpleFetchHandler({ service: 'https://public.api.bsky.app' })
82
82
+
});
83
83
+
84
84
+
const response = await data.client.get('app.bsky.actor.getProfile', {
85
85
+
params: { actor: data.did }
86
86
+
});
87
87
+
88
88
+
if (!response.ok) return;
89
89
+
90
90
+
return response.data;
91
91
+
}
92
92
+
93
93
+
/**
94
94
+
* Creates an AT Protocol client for a user's PDS.
95
95
+
*/
96
96
+
export async function getClient({ did }: { did: Did }) {
97
97
+
const pds = await getPDS(did);
98
98
+
if (!pds) throw new Error('PDS not found');
99
99
+
100
100
+
const client = new Client({
101
101
+
handler: simpleFetchHandler({ service: pds })
102
102
+
});
103
103
+
104
104
+
return client;
105
105
+
}
106
106
+
107
107
+
/**
108
108
+
* Lists records from a repository collection with pagination support.
109
109
+
*/
110
110
+
export async function listRecords({
111
111
+
did,
112
112
+
collection,
113
113
+
cursor,
114
114
+
limit = 100,
115
115
+
client
116
116
+
}: {
117
117
+
did?: Did;
118
118
+
collection: `${string}.${string}.${string}`;
119
119
+
cursor?: string;
120
120
+
limit?: number;
121
121
+
client?: Client;
122
122
+
}) {
123
123
+
did ??= user.did ?? undefined;
124
124
+
if (!collection) {
125
125
+
throw new Error('Missing parameters for listRecords');
126
126
+
}
127
127
+
if (!did) {
128
128
+
throw new Error('Missing did for listRecords');
129
129
+
}
130
130
+
131
131
+
client ??= await getClient({ did });
132
132
+
133
133
+
const allRecords = [];
134
134
+
135
135
+
let currentCursor = cursor;
136
136
+
do {
137
137
+
const response = await client.get('com.atproto.repo.listRecords', {
138
138
+
params: {
139
139
+
repo: did,
140
140
+
collection,
141
141
+
limit: !limit || limit > 100 ? 100 : limit,
142
142
+
cursor: currentCursor
143
143
+
}
144
144
+
});
145
145
+
146
146
+
if (!response.ok) {
147
147
+
return allRecords;
148
148
+
}
149
149
+
150
150
+
allRecords.push(...response.data.records);
151
151
+
currentCursor = response.data.cursor;
152
152
+
} while (currentCursor && (!limit || allRecords.length < limit));
153
153
+
154
154
+
return allRecords;
155
155
+
}
156
156
+
157
157
+
/**
158
158
+
* Fetches a single record from a repository.
159
159
+
*/
160
160
+
export async function getRecord({
161
161
+
did,
162
162
+
collection,
163
163
+
rkey = 'self',
164
164
+
client
165
165
+
}: {
166
166
+
did?: Did;
167
167
+
collection: Collection;
168
168
+
rkey?: string;
169
169
+
client?: Client;
170
170
+
}) {
171
171
+
did ??= user.did ?? undefined;
172
172
+
173
173
+
if (!collection) {
174
174
+
throw new Error('Missing parameters for getRecord');
175
175
+
}
176
176
+
if (!did) {
177
177
+
throw new Error('Missing did for getRecord');
178
178
+
}
179
179
+
180
180
+
client ??= await getClient({ did });
181
181
+
182
182
+
const record = await client.get('com.atproto.repo.getRecord', {
183
183
+
params: {
184
184
+
repo: did,
185
185
+
collection,
186
186
+
rkey
187
187
+
}
188
188
+
});
189
189
+
190
190
+
return JSON.parse(JSON.stringify(record.data));
191
191
+
}
192
192
+
193
193
+
/**
194
194
+
* Creates or updates a record via remote function.
195
195
+
*/
196
196
+
export async function putRecord({
197
197
+
collection,
198
198
+
rkey = 'self',
199
199
+
record
200
200
+
}: {
201
201
+
collection: AllowedCollection;
202
202
+
rkey?: string;
203
203
+
record: Record<string, unknown>;
204
204
+
}) {
205
205
+
if (!user.did) throw new Error('Not logged in');
206
206
+
207
207
+
const { putRecord: putRecordRemote } = await import('./server/repo.remote');
208
208
+
const data = await putRecordRemote({ collection, rkey, record });
209
209
+
return { ok: true, data };
210
210
+
}
211
211
+
212
212
+
/**
213
213
+
* Deletes a record via remote function.
214
214
+
*/
215
215
+
export async function deleteRecord({
216
216
+
collection,
217
217
+
rkey = 'self'
218
218
+
}: {
219
219
+
collection: AllowedCollection;
220
220
+
rkey: string;
221
221
+
}) {
222
222
+
if (!user.did) throw new Error('Not logged in');
223
223
+
224
224
+
const { deleteRecord: deleteRecordRemote } = await import('./server/repo.remote');
225
225
+
const data = await deleteRecordRemote({ collection, rkey });
226
226
+
return data.ok;
227
227
+
}
228
228
+
229
229
+
/**
230
230
+
* Uploads a blob via remote function.
231
231
+
*/
232
232
+
export async function uploadBlob({ blob }: { blob: Blob }) {
233
233
+
if (!user.did) throw new Error("Can't upload blob: Not logged in");
234
234
+
235
235
+
const { uploadBlob: uploadBlobRemote } = await import('./server/repo.remote');
236
236
+
return await uploadBlobRemote({ blob });
237
237
+
}
238
238
+
239
239
+
/**
240
240
+
* Gets metadata about a repository.
241
241
+
*/
242
242
+
export async function describeRepo({ client, did }: { client?: Client; did?: Did }) {
243
243
+
did ??= user.did ?? undefined;
244
244
+
if (!did) {
245
245
+
throw new Error('Error describeRepo: No did');
246
246
+
}
247
247
+
client ??= await getClient({ did });
248
248
+
249
249
+
const repo = await client.get('com.atproto.repo.describeRepo', {
250
250
+
params: {
251
251
+
repo: did
252
252
+
}
253
253
+
});
254
254
+
if (!repo.ok) return;
255
255
+
256
256
+
return repo.data;
257
257
+
}
258
258
+
259
259
+
/**
260
260
+
* Constructs a URL to fetch a blob directly from a user's PDS.
261
261
+
*/
262
262
+
export async function getBlobURL({
263
263
+
did,
264
264
+
blob
265
265
+
}: {
266
266
+
did: Did;
267
267
+
blob: {
268
268
+
$type: 'blob';
269
269
+
ref: {
270
270
+
$link: string;
271
271
+
};
272
272
+
};
273
273
+
}) {
274
274
+
const pds = await getPDS(did);
275
275
+
return `${pds}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${blob.ref.$link}`;
276
276
+
}
277
277
+
278
278
+
/**
279
279
+
* Constructs a Bluesky CDN URL for an image blob.
280
280
+
*/
281
281
+
export function getCDNImageBlobUrl({
282
282
+
did,
283
283
+
blob
284
284
+
}: {
285
285
+
did?: string;
286
286
+
blob: {
287
287
+
$type: 'blob';
288
288
+
ref: {
289
289
+
$link: string;
290
290
+
};
291
291
+
};
292
292
+
}) {
293
293
+
did ??= user.did ?? undefined;
294
294
+
295
295
+
return `https://cdn.bsky.app/img/feed_thumbnail/plain/${did}/${blob.ref.$link}@webp`;
296
296
+
}
297
297
+
298
298
+
/**
299
299
+
* Searches for actors with typeahead/autocomplete functionality.
300
300
+
*/
301
301
+
export async function searchActorsTypeahead(
302
302
+
q: string,
303
303
+
limit: number = 10,
304
304
+
host?: string
305
305
+
): Promise<{ actors: AppBskyActorDefs.ProfileViewBasic[]; q: string }> {
306
306
+
host ??= 'https://public.api.bsky.app';
307
307
+
308
308
+
const client = new Client({
309
309
+
handler: simpleFetchHandler({ service: host })
310
310
+
});
311
311
+
312
312
+
const response = await client.get('app.bsky.actor.searchActorsTypeahead', {
313
313
+
params: {
314
314
+
q,
315
315
+
limit
316
316
+
}
317
317
+
});
318
318
+
319
319
+
if (!response.ok) return { actors: [], q };
320
320
+
321
321
+
return { actors: response.data.actors, q };
322
322
+
}
323
323
+
324
324
+
/**
325
325
+
* Return a TID based on current time
326
326
+
*/
327
327
+
export function createTID() {
328
328
+
return TID.now();
329
329
+
}
···
1
1
+
import { generateClientAssertionKey } from '@atcute/oauth-node-client';
2
2
+
3
3
+
const key = await generateClientAssertionKey('main-key');
4
4
+
console.log(JSON.stringify(key));
···
1
1
+
import { randomBytes } from 'node:crypto';
2
2
+
3
3
+
console.log(randomBytes(32).toString('base64url'));
···
1
1
+
import { existsSync } from 'node:fs';
2
2
+
import { copyFile, readFile, writeFile } from 'node:fs/promises';
3
3
+
import { resolve } from 'node:path';
4
4
+
import { randomBytes } from 'node:crypto';
5
5
+
6
6
+
import { generateClientAssertionKey } from '@atcute/oauth-node-client';
7
7
+
8
8
+
const cwd = process.cwd();
9
9
+
const examplePath = resolve(cwd, '.env.example');
10
10
+
const envPath = resolve(cwd, '.env');
11
11
+
12
12
+
if (!existsSync(envPath)) {
13
13
+
if (!existsSync(examplePath)) {
14
14
+
throw new Error(`missing .env.example (expected at ${examplePath})`);
15
15
+
}
16
16
+
await copyFile(examplePath, envPath);
17
17
+
console.log(`created ${envPath}`);
18
18
+
}
19
19
+
20
20
+
const upsertVar = (input: string, key: string, value: string): string => {
21
21
+
const line = `${key}=${value}`;
22
22
+
const re = new RegExp(`^${key}=.*$`, 'm');
23
23
+
24
24
+
if (re.test(input)) {
25
25
+
const match = input.match(re);
26
26
+
const current = match ? match[0].slice(key.length + 1).trim() : '';
27
27
+
// Only overwrite if empty/placeholder
28
28
+
if (current === '' || current === "''" || current === '""' || current.includes('...')) {
29
29
+
return input.replace(re, line);
30
30
+
}
31
31
+
return input;
32
32
+
}
33
33
+
34
34
+
const suffix = input.endsWith('\n') || input.length === 0 ? '' : '\n';
35
35
+
return `${input}${suffix}${line}\n`;
36
36
+
};
37
37
+
38
38
+
let vars = await readFile(envPath, 'utf8');
39
39
+
40
40
+
const secret = randomBytes(32).toString('base64url');
41
41
+
vars = upsertVar(vars, 'COOKIE_SECRET', secret);
42
42
+
43
43
+
const jwk = await generateClientAssertionKey('main-key');
44
44
+
vars = upsertVar(vars, 'CLIENT_ASSERTION_KEY', JSON.stringify(jwk));
45
45
+
46
46
+
await writeFile(envPath, vars);
47
47
+
console.log(`updated ${envPath}`);
···
1
1
+
import type { Store } from '@atcute/oauth-node-client';
2
2
+
3
3
+
export class KVStore<K extends string, V> implements Store<K, V> {
4
4
+
private kv: KVNamespace;
5
5
+
private expirationTtl?: number;
6
6
+
7
7
+
constructor(kv: KVNamespace, options?: { expirationTtl?: number }) {
8
8
+
this.kv = kv;
9
9
+
this.expirationTtl = options?.expirationTtl;
10
10
+
}
11
11
+
12
12
+
async get(key: K): Promise<V | undefined> {
13
13
+
const value = await this.kv.get(key, 'text');
14
14
+
if (value === null) return undefined;
15
15
+
return JSON.parse(value) as V;
16
16
+
}
17
17
+
18
18
+
async set(key: K, value: V): Promise<void> {
19
19
+
await this.kv.put(key, JSON.stringify(value), {
20
20
+
expirationTtl: this.expirationTtl
21
21
+
});
22
22
+
}
23
23
+
24
24
+
async delete(key: K): Promise<void> {
25
25
+
await this.kv.delete(key);
26
26
+
}
27
27
+
28
28
+
async clear(): Promise<void> {
29
29
+
let cursor: string | undefined;
30
30
+
do {
31
31
+
const result = await this.kv.list({ cursor });
32
32
+
for (const key of result.keys) {
33
33
+
await this.kv.delete(key.name);
34
34
+
}
35
35
+
cursor = result.list_complete ? undefined : result.cursor;
36
36
+
} while (cursor);
37
37
+
}
38
38
+
}
···
1
1
+
import * as v from 'valibot';
2
2
+
import { error } from '@sveltejs/kit';
3
3
+
import { command, getRequestEvent } from '$app/server';
4
4
+
import { createOAuthClient } from './oauth';
5
5
+
import { getSignedCookie } from './signed-cookie';
6
6
+
import { scopes, signUpPDS } from '../settings';
7
7
+
import type { ActorIdentifier, Did } from '@atcute/lexicons';
8
8
+
9
9
+
export const oauthLogin = command(
10
10
+
v.object({
11
11
+
handle: v.optional(v.pipe(v.string(), v.minLength(3))),
12
12
+
signup: v.optional(v.boolean())
13
13
+
}),
14
14
+
async (input) => {
15
15
+
const { platform } = getRequestEvent();
16
16
+
17
17
+
try {
18
18
+
const oauth = createOAuthClient(platform?.env);
19
19
+
20
20
+
const target = input.signup
21
21
+
? ({ type: 'pds', serviceUrl: signUpPDS } as const)
22
22
+
: ({ type: 'account', identifier: input.handle as ActorIdentifier } as const);
23
23
+
24
24
+
const { url } = await oauth.authorize({
25
25
+
target,
26
26
+
scope: scopes.join(' '),
27
27
+
prompt: input.signup ? 'create' : undefined
28
28
+
});
29
29
+
30
30
+
return { url: url.toString() };
31
31
+
} catch (e) {
32
32
+
if (e && typeof e === 'object' && 'status' in e) throw e; // re-throw SvelteKit errors
33
33
+
const message = e instanceof Error ? e.message : 'Login failed';
34
34
+
error(400, message);
35
35
+
}
36
36
+
}
37
37
+
);
38
38
+
39
39
+
export const oauthLogout = command(async () => {
40
40
+
const { cookies, platform } = getRequestEvent();
41
41
+
const did = getSignedCookie(cookies, 'did') as Did | null;
42
42
+
43
43
+
if (did) {
44
44
+
try {
45
45
+
const oauth = createOAuthClient(platform?.env);
46
46
+
await oauth.revoke(did);
47
47
+
} catch (e) {
48
48
+
console.error('Error revoking session:', e);
49
49
+
}
50
50
+
}
51
51
+
52
52
+
cookies.delete('did', { path: '/' });
53
53
+
cookies.delete('scope', { path: '/' });
54
54
+
55
55
+
return { ok: true };
56
56
+
});
···
1
1
+
import {
2
2
+
OAuthClient,
3
3
+
MemoryStore,
4
4
+
type ClientAssertionPrivateJwk,
5
5
+
type OAuthClientStores,
6
6
+
type OAuthSession,
7
7
+
type StoredSession,
8
8
+
type StoredState
9
9
+
} from '@atcute/oauth-node-client';
10
10
+
import type { Did } from '@atcute/lexicons';
11
11
+
import {
12
12
+
CompositeDidDocumentResolver,
13
13
+
CompositeHandleResolver,
14
14
+
DohJsonHandleResolver,
15
15
+
LocalActorResolver,
16
16
+
PlcDidDocumentResolver,
17
17
+
WebDidDocumentResolver,
18
18
+
WellKnownHandleResolver
19
19
+
} from '@atcute/identity-resolver';
20
20
+
import { KVStore } from './kv-store';
21
21
+
import { DOH_RESOLVER, REDIRECT_PATH, scopes } from '../settings';
22
22
+
import { dev } from '$app/environment';
23
23
+
24
24
+
function createActorResolver() {
25
25
+
return new LocalActorResolver({
26
26
+
handleResolver: new CompositeHandleResolver({
27
27
+
methods: {
28
28
+
dns: new DohJsonHandleResolver({ dohUrl: DOH_RESOLVER }),
29
29
+
http: new WellKnownHandleResolver()
30
30
+
}
31
31
+
}),
32
32
+
didDocumentResolver: new CompositeDidDocumentResolver({
33
33
+
methods: {
34
34
+
plc: new PlcDidDocumentResolver(),
35
35
+
web: new WebDidDocumentResolver()
36
36
+
}
37
37
+
})
38
38
+
});
39
39
+
}
40
40
+
41
41
+
function createStores(env?: App.Platform['env']): OAuthClientStores {
42
42
+
if (env?.OAUTH_SESSIONS && env?.OAUTH_STATES) {
43
43
+
return {
44
44
+
sessions: new KVStore<Did, StoredSession>(env.OAUTH_SESSIONS),
45
45
+
states: new KVStore<string, StoredState>(env.OAUTH_STATES, { expirationTtl: 600 })
46
46
+
};
47
47
+
}
48
48
+
// Fallback to in-memory stores (dev without wrangler)
49
49
+
return {
50
50
+
sessions: new MemoryStore<Did, StoredSession>(),
51
51
+
states: new MemoryStore<string, StoredState>({ ttl: 600_000 })
52
52
+
};
53
53
+
}
54
54
+
55
55
+
export function createOAuthClient(env?: App.Platform['env']): OAuthClient {
56
56
+
const actorResolver = createActorResolver();
57
57
+
const stores = createStores(env);
58
58
+
59
59
+
if (dev && !env?.OAUTH_PUBLIC_URL) {
60
60
+
// Dev without tunnel: loopback public client (no keyset).
61
61
+
// Omit client_id — the library builds it automatically from redirect_uris + scope.
62
62
+
// redirect_uris must use 127.0.0.1 (not localhost).
63
63
+
return new OAuthClient({
64
64
+
metadata: {
65
65
+
redirect_uris: [`http://127.0.0.1:5183${REDIRECT_PATH}`],
66
66
+
scope: scopes
67
67
+
},
68
68
+
actorResolver,
69
69
+
stores
70
70
+
});
71
71
+
}
72
72
+
73
73
+
// Confidential client (production, or dev with tunnel via OAUTH_PUBLIC_URL)
74
74
+
if (!env?.OAUTH_PUBLIC_URL) {
75
75
+
throw new Error('OAUTH_PUBLIC_URL is not set');
76
76
+
}
77
77
+
if (!env.CLIENT_ASSERTION_KEY) {
78
78
+
throw new Error('CLIENT_ASSERTION_KEY secret is not set. Run: pnpm env:generate-key');
79
79
+
}
80
80
+
const site = env.OAUTH_PUBLIC_URL;
81
81
+
const key: ClientAssertionPrivateJwk = JSON.parse(env.CLIENT_ASSERTION_KEY);
82
82
+
83
83
+
return new OAuthClient({
84
84
+
metadata: {
85
85
+
client_id: site + '/oauth-client-metadata.json',
86
86
+
redirect_uris: [site + REDIRECT_PATH],
87
87
+
scope: scopes,
88
88
+
jwks_uri: site + '/oauth/jwks.json'
89
89
+
},
90
90
+
keyset: [key],
91
91
+
actorResolver,
92
92
+
stores
93
93
+
});
94
94
+
}
95
95
+
96
96
+
export type { OAuthSession };
···
1
1
+
import type { Did } from '@atcute/lexicons';
2
2
+
import { getDetailedProfile, describeRepo } from '../methods';
3
3
+
4
4
+
const PROFILE_CACHE_TTL = 60 * 60; // 1 hour
5
5
+
6
6
+
/**
7
7
+
* Loads a user's profile, with optional KV caching.
8
8
+
* Falls back to a fresh fetch if the cache KV doesn't exist or on cache miss.
9
9
+
* Returns undefined if the profile can't be loaded.
10
10
+
*/
11
11
+
export async function loadProfile(did: Did, profileCache?: KVNamespace) {
12
12
+
// Try cache first
13
13
+
if (profileCache) {
14
14
+
try {
15
15
+
const cached = await profileCache.get(did, 'json');
16
16
+
if (cached) return cached as Record<string, unknown>;
17
17
+
} catch {
18
18
+
// Cache read failed, continue to fresh fetch
19
19
+
}
20
20
+
}
21
21
+
22
22
+
const profile = await fetchProfile(did);
23
23
+
24
24
+
// Write to cache (fire-and-forget)
25
25
+
if (profileCache && profile) {
26
26
+
profileCache
27
27
+
.put(did, JSON.stringify(profile), { expirationTtl: PROFILE_CACHE_TTL })
28
28
+
.catch(() => {});
29
29
+
}
30
30
+
31
31
+
return profile;
32
32
+
}
33
33
+
34
34
+
async function fetchProfile(did: Did) {
35
35
+
try {
36
36
+
let profile = await getDetailedProfile({ did });
37
37
+
38
38
+
if (!profile || profile.handle === 'handle.invalid') {
39
39
+
const repo = await describeRepo({ did });
40
40
+
profile = {
41
41
+
did,
42
42
+
handle: repo?.handle || 'handle.invalid'
43
43
+
} as typeof profile;
44
44
+
}
45
45
+
46
46
+
return profile;
47
47
+
} catch (e) {
48
48
+
console.error('Failed to load profile:', e);
49
49
+
return undefined;
50
50
+
}
51
51
+
}
···
1
1
+
import { error } from '@sveltejs/kit';
2
2
+
import { command, getRequestEvent } from '$app/server';
3
3
+
import * as v from 'valibot';
4
4
+
import { collections } from '../settings';
5
5
+
6
6
+
// Validate collection format and check against allowed list from settings
7
7
+
const collectionSchema = v.pipe(
8
8
+
v.string(),
9
9
+
v.regex(/^[a-zA-Z][a-zA-Z0-9-]*(\.[a-zA-Z][a-zA-Z0-9-]*){2,}$/),
10
10
+
v.check((c) => collections.includes(c as (typeof collections)[number]), 'Collection not in allowed list')
11
11
+
);
12
12
+
13
13
+
// AT Protocol rkey: TID, 'self', or other valid record keys (alphanumeric, dash, underscore, dot)
14
14
+
const rkeySchema = v.optional(v.pipe(v.string(), v.regex(/^[a-zA-Z0-9._:~-]{1,512}$/)));
15
15
+
16
16
+
export const putRecord = command(
17
17
+
v.object({
18
18
+
collection: collectionSchema,
19
19
+
rkey: rkeySchema,
20
20
+
record: v.record(v.string(), v.unknown())
21
21
+
}),
22
22
+
async (input) => {
23
23
+
const { locals } = getRequestEvent();
24
24
+
if (!locals.client || !locals.did) error(401, 'Not authenticated');
25
25
+
26
26
+
const response = await locals.client.post('com.atproto.repo.putRecord', {
27
27
+
input: {
28
28
+
collection: input.collection as `${string}.${string}.${string}`,
29
29
+
repo: locals.did,
30
30
+
rkey: input.rkey || 'self',
31
31
+
record: input.record
32
32
+
}
33
33
+
});
34
34
+
35
35
+
return response.data;
36
36
+
}
37
37
+
);
38
38
+
39
39
+
export const deleteRecord = command(
40
40
+
v.object({
41
41
+
collection: collectionSchema,
42
42
+
rkey: rkeySchema
43
43
+
}),
44
44
+
async (input) => {
45
45
+
const { locals } = getRequestEvent();
46
46
+
if (!locals.client || !locals.did) error(401, 'Not authenticated');
47
47
+
48
48
+
const response = await locals.client.post('com.atproto.repo.deleteRecord', {
49
49
+
input: {
50
50
+
collection: input.collection as `${string}.${string}.${string}`,
51
51
+
repo: locals.did,
52
52
+
rkey: input.rkey || 'self'
53
53
+
}
54
54
+
});
55
55
+
56
56
+
return { ok: response.ok };
57
57
+
}
58
58
+
);
59
59
+
60
60
+
export const uploadBlob = command(
61
61
+
v.object({
62
62
+
blob: v.instance(Blob)
63
63
+
}),
64
64
+
async (input) => {
65
65
+
const { locals } = getRequestEvent();
66
66
+
if (!locals.client || !locals.did) error(401, 'Not authenticated');
67
67
+
68
68
+
const response = await locals.client.post('com.atproto.repo.uploadBlob', {
69
69
+
params: { repo: locals.did },
70
70
+
input: input.blob
71
71
+
});
72
72
+
73
73
+
if (!response.ok) error(500, 'Upload failed');
74
74
+
75
75
+
return response.data.blob as {
76
76
+
$type: 'blob';
77
77
+
ref: { $link: string };
78
78
+
mimeType: string;
79
79
+
size: number;
80
80
+
};
81
81
+
}
82
82
+
);
···
1
1
+
import type { Cookies } from '@sveltejs/kit';
2
2
+
import { Client } from '@atcute/client';
3
3
+
import type { Did } from '@atcute/lexicons';
4
4
+
import type { OAuthSession } from '@atcute/oauth-node-client';
5
5
+
import { createOAuthClient } from './oauth';
6
6
+
import { getSignedCookie } from './signed-cookie';
7
7
+
import { scopes } from '../settings';
8
8
+
9
9
+
export type SessionLocals = {
10
10
+
session: OAuthSession | null;
11
11
+
client: Client | null;
12
12
+
did: Did | null;
13
13
+
};
14
14
+
15
15
+
/**
16
16
+
* Restores an OAuth session from the signed `did` cookie.
17
17
+
* Returns session locals to be assigned to `event.locals`.
18
18
+
* Deletes the cookie if the session can't be restored.
19
19
+
*/
20
20
+
export async function restoreSession(
21
21
+
cookies: Cookies,
22
22
+
env?: App.Platform['env']
23
23
+
): Promise<SessionLocals> {
24
24
+
const did = getSignedCookie(cookies, 'did') as Did | null;
25
25
+
26
26
+
if (!did) {
27
27
+
return { session: null, client: null, did: null };
28
28
+
}
29
29
+
30
30
+
// If permissions changed since login, invalidate the session
31
31
+
const savedScope = getSignedCookie(cookies, 'scope');
32
32
+
if (savedScope !== null && savedScope !== scopes.join(' ')) {
33
33
+
cookies.delete('did', { path: '/' });
34
34
+
cookies.delete('scope', { path: '/' });
35
35
+
return { session: null, client: null, did: null };
36
36
+
}
37
37
+
38
38
+
try {
39
39
+
const oauth = createOAuthClient(env);
40
40
+
const session = await oauth.restore(did);
41
41
+
42
42
+
return {
43
43
+
session,
44
44
+
client: new Client({ handler: session }),
45
45
+
did
46
46
+
};
47
47
+
} catch (e) {
48
48
+
console.error('Failed to restore session:', e);
49
49
+
cookies.delete('did', { path: '/' });
50
50
+
cookies.delete('scope', { path: '/' });
51
51
+
return { session: null, client: null, did: null };
52
52
+
}
53
53
+
}
···
1
1
+
import { createHmac, timingSafeEqual } from 'node:crypto';
2
2
+
3
3
+
import type { Cookies } from '@sveltejs/kit';
4
4
+
5
5
+
import { env } from '$env/dynamic/private';
6
6
+
import { dev } from '$app/environment';
7
7
+
8
8
+
const SEPARATOR = '.';
9
9
+
10
10
+
function getSecret(): string {
11
11
+
const secret = env.COOKIE_SECRET;
12
12
+
if (secret) return secret;
13
13
+
if (dev) return 'dev-cookie-secret-not-for-production';
14
14
+
throw new Error('COOKIE_SECRET is not set');
15
15
+
}
16
16
+
17
17
+
function toBase64Url(bytes: Uint8Array): string {
18
18
+
let binary = '';
19
19
+
for (const byte of bytes) binary += String.fromCharCode(byte);
20
20
+
return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
21
21
+
}
22
22
+
23
23
+
function fromBase64Url(str: string): Uint8Array {
24
24
+
const padded = str + '='.repeat((4 - (str.length % 4)) % 4);
25
25
+
const base64 = padded.replace(/-/g, '+').replace(/_/g, '/');
26
26
+
const binary = atob(base64);
27
27
+
const bytes = new Uint8Array(binary.length);
28
28
+
for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
29
29
+
return bytes;
30
30
+
}
31
31
+
32
32
+
function hmacSha256(data: string): Uint8Array {
33
33
+
return createHmac('sha256', getSecret()).update(data).digest();
34
34
+
}
35
35
+
36
36
+
export function getSignedCookie(cookies: Cookies, name: string): string | null {
37
37
+
const signed = cookies.get(name);
38
38
+
if (!signed) return null;
39
39
+
40
40
+
const idx = signed.lastIndexOf(SEPARATOR);
41
41
+
if (idx === -1) return null;
42
42
+
43
43
+
const value = signed.slice(0, idx);
44
44
+
const sig = signed.slice(idx + 1);
45
45
+
46
46
+
let expected: Uint8Array;
47
47
+
let got: Uint8Array;
48
48
+
try {
49
49
+
expected = hmacSha256(value);
50
50
+
got = fromBase64Url(sig);
51
51
+
} catch {
52
52
+
return null;
53
53
+
}
54
54
+
55
55
+
if (got.length !== expected.length || !timingSafeEqual(got, expected)) return null;
56
56
+
57
57
+
return value;
58
58
+
}
59
59
+
60
60
+
export function setSignedCookie(
61
61
+
cookies: Cookies,
62
62
+
name: string,
63
63
+
value: string,
64
64
+
options: Parameters<Cookies['set']>[2]
65
65
+
): void {
66
66
+
const sig = toBase64Url(hmacSha256(value));
67
67
+
const signed = `${value}${SEPARATOR}${sig}`;
68
68
+
cookies.set(name, signed, options);
69
69
+
}
···
1
1
+
import { dev } from '$app/environment';
2
2
+
import { scope } from '@atcute/oauth-node-client';
3
3
+
4
4
+
// writable collections
5
5
+
export const collections = ['dev.flo-bit.test.timelock'] as const;
6
6
+
7
7
+
export type AllowedCollection = (typeof collections)[number];
8
8
+
9
9
+
// OAuth scope
10
10
+
export const scopes = ['atproto', scope.repo({ collection: [...collections] })];
11
11
+
12
12
+
// set to true to allow signup, false for login-only
13
13
+
export const ALLOW_SIGNUP = false;
14
14
+
15
15
+
// PDS to use for signup
16
16
+
const devPDS = 'https://bsky.social/';
17
17
+
const prodPDS = 'https://bsky.social/';
18
18
+
export const signUpPDS = dev ? devPDS : prodPDS;
19
19
+
20
20
+
export const REDIRECT_PATH = '/oauth/callback';
21
21
+
22
22
+
// redirect the user back to the page they were on before login
23
23
+
export const REDIRECT_TO_LAST_PAGE_ON_LOGIN = true;
24
24
+
25
25
+
export const DOH_RESOLVER = 'https://mozilla.cloudflare-dns.com/dns-query';
···
1
1
-
import { browser } from '$app/environment';
2
2
-
3
3
-
export interface Secret {
4
4
-
id: string;
5
5
-
title: string;
6
6
-
ciphertext: string;
7
7
-
createdAt: string;
8
8
-
unlockAt: string;
9
9
-
}
10
10
-
11
11
-
const STORAGE_KEY = 'timelocked-secrets';
12
12
-
13
13
-
function loadSecrets(): Secret[] {
14
14
-
if (!browser) return [];
15
15
-
const raw = localStorage.getItem(STORAGE_KEY);
16
16
-
if (!raw) return [];
17
17
-
try {
18
18
-
return JSON.parse(raw) as Secret[];
19
19
-
} catch {
20
20
-
return [];
21
21
-
}
22
22
-
}
23
23
-
24
24
-
function saveSecrets(secrets: Secret[]) {
25
25
-
if (!browser) return;
26
26
-
localStorage.setItem(STORAGE_KEY, JSON.stringify(secrets));
27
27
-
}
28
28
-
29
29
-
let secrets = $state<Secret[]>(loadSecrets());
30
30
-
31
31
-
export function getSecrets(): Secret[] {
32
32
-
return secrets;
33
33
-
}
34
34
-
35
35
-
export function addSecret(secret: Secret) {
36
36
-
secrets = [...secrets, secret];
37
37
-
saveSecrets(secrets);
38
38
-
}
39
39
-
40
40
-
export function removeSecret(id: string) {
41
41
-
secrets = secrets.filter((s) => s.id !== id);
42
42
-
saveSecrets(secrets);
43
43
-
}
···
1
1
+
import { json } from '@sveltejs/kit';
2
2
+
import { createOAuthClient } from '$lib/atproto/server/oauth';
3
3
+
import type { RequestHandler } from './$types';
4
4
+
5
5
+
export const GET: RequestHandler = async ({ platform }) => {
6
6
+
const oauth = createOAuthClient(platform?.env);
7
7
+
return json(oauth.metadata);
8
8
+
};
···
1
1
+
import { redirect } from '@sveltejs/kit';
2
2
+
import { createOAuthClient } from '$lib/atproto/server/oauth';
3
3
+
import { setSignedCookie } from '$lib/atproto/server/signed-cookie';
4
4
+
import { scopes } from '$lib/atproto/settings';
5
5
+
import { dev } from '$app/environment';
6
6
+
import type { RequestHandler } from './$types';
7
7
+
8
8
+
export const GET: RequestHandler = async ({ url, platform, cookies }) => {
9
9
+
const oauth = createOAuthClient(platform?.env);
10
10
+
11
11
+
let did: string;
12
12
+
13
13
+
// oauth.callback() validates the state parameter (CSRF protection) and
14
14
+
// exchanges the authorization code for tokens via the token endpoint.
15
15
+
try {
16
16
+
const { session } = await oauth.callback(url.searchParams);
17
17
+
did = session.did;
18
18
+
19
19
+
const cookieOpts = {
20
20
+
path: '/',
21
21
+
httpOnly: true,
22
22
+
secure: !dev,
23
23
+
sameSite: 'lax' as const,
24
24
+
maxAge: 60 * 60 * 24 * 180 // 180 days
25
25
+
};
26
26
+
27
27
+
setSignedCookie(cookies, 'did', session.did, cookieOpts);
28
28
+
setSignedCookie(cookies, 'scope', scopes.join(' '), cookieOpts);
29
29
+
} catch (e) {
30
30
+
console.error('OAuth callback failed:', e);
31
31
+
redirect(303, '/?error=auth_failed');
32
32
+
}
33
33
+
34
34
+
const returnTo = cookies.get('oauth_return_to');
35
35
+
if (returnTo) {
36
36
+
cookies.delete('oauth_return_to', { path: '/' });
37
37
+
const decoded = decodeURIComponent(returnTo);
38
38
+
if (decoded.startsWith('/') && !decoded.startsWith('//') && decoded !== '/') {
39
39
+
redirect(303, decoded);
40
40
+
}
41
41
+
}
42
42
+
43
43
+
redirect(303, `/${encodeURIComponent(did)}`);
44
44
+
};
···
1
1
+
import { json } from '@sveltejs/kit';
2
2
+
import { createOAuthClient } from '$lib/atproto/server/oauth';
3
3
+
import type { RequestHandler } from './$types';
4
4
+
5
5
+
export const GET: RequestHandler = async ({ platform }) => {
6
6
+
const oauth = createOAuthClient(platform?.env);
7
7
+
return json(oauth.jwks ?? { keys: [] });
8
8
+
};
···
1
1
+
import type { LayoutServerLoad } from './$types';
2
2
+
import { loadProfile } from '$lib/atproto/server/profile';
3
3
+
4
4
+
export const load: LayoutServerLoad = async ({ locals, platform }) => {
5
5
+
if (!locals.did) return { did: null, profile: null };
6
6
+
const profile = await loadProfile(locals.did, platform?.env?.PROFILE_CACHE);
7
7
+
return { did: locals.did, profile };
8
8
+
};
···
2
2
import './layout.css';
3
3
import favicon from '$lib/assets/favicon.svg';
4
4
import { ThemeToggle } from '@foxui/core';
5
5
+
import { AtprotoLoginModal } from '@foxui/social';
6
6
+
import { login, user, logout } from '$lib/atproto';
5
7
6
8
let { children } = $props();
7
9
</script>
···
10
12
<div class="fixed top-4 left-4 z-50">
11
13
<ThemeToggle />
12
14
</div>
15
15
+
{#if user.isLoggedIn}
16
16
+
<div class="fixed top-4 right-4 z-50 flex items-center gap-3">
17
17
+
<a
18
18
+
href="/{user.profile?.handle ?? user.did}"
19
19
+
class="text-sm font-medium text-base-600 transition-colors hover:text-base-900 dark:text-base-400 dark:hover:text-base-100"
20
20
+
>
21
21
+
{user.profile?.handle ?? user.did}
22
22
+
</a>
23
23
+
<button
24
24
+
onclick={() => logout()}
25
25
+
class="cursor-pointer rounded-lg border border-base-200 bg-base-100 px-3 py-1.5 text-sm font-medium text-base-700 transition-colors hover:bg-base-200 dark:border-base-700 dark:bg-base-800 dark:text-base-300 dark:hover:bg-base-700"
26
26
+
>
27
27
+
Sign Out
28
28
+
</button>
29
29
+
</div>
30
30
+
{/if}
13
31
{@render children()}
32
32
+
<AtprotoLoginModal
33
33
+
login={async (handle) => {
34
34
+
await login(handle);
35
35
+
return true;
36
36
+
}}
37
37
+
/>
···
1
1
+
import type { PageServerLoad } from './$types';
2
2
+
import { describeRepo } from '$lib/atproto/methods';
3
3
+
import type { Did } from '@atcute/lexicons';
4
4
+
5
5
+
const COLLECTION = 'dev.flo-bit.test.timelock';
6
6
+
const API_URL = `https://ufos-api.microcosm.blue/records?collection=${COLLECTION}`;
7
7
+
8
8
+
export const load: PageServerLoad = async ({ fetch }) => {
9
9
+
try {
10
10
+
const res = await fetch(API_URL);
11
11
+
if (!res.ok) return { recentSecrets: [] };
12
12
+
13
13
+
const records = (await res.json()) as Array<{
14
14
+
did: string;
15
15
+
rkey: string;
16
16
+
record: {
17
17
+
title: string;
18
18
+
createdAt: string;
19
19
+
unlockAt: string;
20
20
+
};
21
21
+
time_us: number;
22
22
+
}>;
23
23
+
24
24
+
// Resolve unique DIDs to handles
25
25
+
const uniqueDids = [...new Set(records.map((r) => r.did))];
26
26
+
const handleMap = new Map<string, string>();
27
27
+
28
28
+
await Promise.all(
29
29
+
uniqueDids.map(async (did) => {
30
30
+
try {
31
31
+
const repo = await describeRepo({ did: did as Did });
32
32
+
handleMap.set(did, repo?.handle ?? did);
33
33
+
} catch {
34
34
+
handleMap.set(did, did);
35
35
+
}
36
36
+
})
37
37
+
);
38
38
+
39
39
+
const recentSecrets = records.map((r) => ({
40
40
+
did: r.did,
41
41
+
handle: handleMap.get(r.did) ?? r.did,
42
42
+
title: r.record.title,
43
43
+
createdAt: r.record.createdAt,
44
44
+
unlockAt: r.record.unlockAt
45
45
+
}));
46
46
+
47
47
+
return { recentSecrets };
48
48
+
} catch {
49
49
+
return { recentSecrets: [] };
50
50
+
}
51
51
+
};
···
1
1
<script lang="ts">
2
2
-
import { getSecrets, removeSecret } from '$lib/secrets.svelte';
3
3
-
import { decrypt } from '$lib/timelock';
4
4
-
import Countdown from '$lib/components/Countdown.svelte';
2
2
+
import { user } from '$lib/atproto';
3
3
+
import { atProtoLoginModalState } from '@foxui/social';
5
4
import { RelativeTime } from '@foxui/time';
6
6
-
import DecryptEffect from '$lib/components/DecryptEffect.svelte';
7
5
8
8
-
let now = $state(Date.now());
6
6
+
let { data } = $props();
7
7
+
</script>
9
8
10
10
-
$effect(() => {
11
11
-
const id = setInterval(() => {
12
12
-
now = Date.now();
13
13
-
}, 1000);
14
14
-
return () => clearInterval(id);
15
15
-
});
16
16
-
17
17
-
let secrets = $derived(
18
18
-
getSecrets()
19
19
-
.slice()
20
20
-
.sort((a, b) => new Date(a.unlockAt).getTime() - new Date(b.unlockAt).getTime())
21
21
-
);
22
22
-
23
23
-
let decryptedMap: Record<string, string> = $state({});
24
24
-
let loadingMap: Record<string, boolean> = $state({});
25
25
-
let errorMap: Record<string, string> = $state({});
26
26
-
27
27
-
function isUnlockable(unlockAt: string): boolean {
28
28
-
return new Date(unlockAt).getTime() <= now;
29
29
-
}
30
30
-
31
31
-
async function handleDecrypt(id: string, ciphertext: string) {
32
32
-
loadingMap[id] = true;
33
33
-
errorMap[id] = '';
34
34
-
decryptedMap[id] = '';
35
35
-
36
36
-
try {
37
37
-
const plaintext = await decrypt(ciphertext);
38
38
-
decryptedMap[id] = plaintext;
39
39
-
} catch (e) {
40
40
-
errorMap[id] = e instanceof Error ? e.message : 'Decryption failed. You might need to wait longer.';
41
41
-
} finally {
42
42
-
loadingMap[id] = false;
43
43
-
}
44
44
-
}
9
9
+
<div class="min-h-screen bg-base-50 dark:bg-base-950">
10
10
+
<div class="flex min-h-[60vh] items-center justify-center">
11
11
+
<div class="mx-auto max-w-2xl px-4 text-center">
12
12
+
<div class="mb-6 inline-flex h-16 w-16 items-center justify-center rounded-2xl bg-accent-100 dark:bg-accent-900/30">
13
13
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-accent-600 dark:text-accent-400" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
14
14
+
<rect width="18" height="11" x="3" y="11" rx="2" ry="2" />
15
15
+
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
16
16
+
</svg>
17
17
+
</div>
45
18
46
46
-
function handleRemove(id: string) {
47
47
-
removeSecret(id);
48
48
-
delete decryptedMap[id];
49
49
-
delete loadingMap[id];
50
50
-
delete errorMap[id];
51
51
-
}
52
52
-
</script>
19
19
+
<h1 class="mb-4 text-5xl font-bold tracking-tight text-base-900 dark:text-base-100">
20
20
+
Timelocked Secrets
21
21
+
</h1>
53
22
54
54
-
<div class="min-h-screen bg-base-50 text-base-900 dark:bg-base-950 dark:text-base-100">
55
55
-
<div class="mx-auto max-w-3xl px-4 py-20">
56
56
-
<header class="mb-8 flex items-center justify-between">
57
57
-
<h1 class="text-3xl font-bold tracking-tight">Timelocked Secrets</h1>
58
58
-
<a
59
59
-
href="/create"
60
60
-
class="rounded-lg bg-accent-600 px-4 py-2 text-center text-sm font-medium text-white transition-colors hover:bg-accent-700 focus:outline-none focus:ring-2 focus:ring-accent-500 focus:ring-offset-2 dark:focus:ring-offset-base-950"
61
61
-
>
62
62
-
New Secret
63
63
-
</a>
64
64
-
</header>
23
23
+
<p class="mb-8 text-lg text-base-600 dark:text-base-400">
24
24
+
Encrypt messages that can only be decrypted after a specific time. Powered by
25
25
+
<a href="https://drand.love" class="text-accent-600 hover:text-accent-700 dark:text-accent-400 dark:hover:text-accent-300" target="_blank" rel="noopener noreferrer">drand</a>
26
26
+
timelock encryption and stored on the
27
27
+
<a href="https://atproto.com" class="text-accent-600 hover:text-accent-700 dark:text-accent-400 dark:hover:text-accent-300" target="_blank" rel="noopener noreferrer">AT Protocol</a>.
28
28
+
</p>
65
29
66
66
-
{#if secrets.length === 0}
67
67
-
<div class="rounded-xl border border-base-200 bg-base-100 p-12 text-center dark:border-base-800 dark:bg-base-900">
68
68
-
<p class="mb-1 text-lg font-medium text-base-600 dark:text-base-400">No secrets yet</p>
69
69
-
<p class="mb-6 text-sm text-base-500 dark:text-base-500">
70
70
-
Create your first timelocked secret to get started.
71
71
-
</p>
30
30
+
{#if user.isLoggedIn}
72
31
<a
73
73
-
href="/create"
74
74
-
class="inline-block rounded-lg bg-accent-600 px-5 py-2.5 text-sm font-medium text-white transition-colors hover:bg-accent-700"
32
32
+
href="/{user.profile?.handle ?? user.did}"
33
33
+
class="cursor-pointer inline-block rounded-xl bg-accent-600 px-8 py-3 text-lg font-semibold text-white shadow-lg transition-colors hover:bg-accent-700 focus:outline-none focus:ring-2 focus:ring-accent-500 focus:ring-offset-2 dark:focus:ring-offset-base-950"
75
34
>
76
76
-
Create a Secret
35
35
+
Show my secrets
77
36
</a>
78
78
-
</div>
79
79
-
{:else}
80
80
-
<div class="space-y-4">
81
81
-
{#each secrets as secret (secret.id)}
82
82
-
<div class="rounded-xl border border-base-200 bg-base-100 p-5 dark:border-base-800 dark:bg-base-900">
83
83
-
<div class="flex items-start justify-between gap-4">
84
84
-
<div class="min-w-0 flex-1">
85
85
-
<h2 class="truncate text-lg font-semibold text-base-900 dark:text-base-100">
86
86
-
{secret.title}
87
87
-
</h2>
88
88
-
<p class="mt-1 text-sm text-base-500 dark:text-base-400">
89
89
-
Created <RelativeTime date={new Date(secret.createdAt)} locale="en" /> ago
90
90
-
</p>
91
91
-
</div>
92
92
-
<div class="flex shrink-0 items-center gap-2">
93
93
-
{#if isUnlockable(secret.unlockAt)}
94
94
-
<span class="inline-flex items-center rounded-full bg-accent-100 px-2.5 py-0.5 text-xs font-medium text-accent-800 dark:bg-accent-900/30 dark:text-accent-400">
95
95
-
Unlockable
96
96
-
</span>
97
97
-
{/if}
98
98
-
<button
99
99
-
onclick={() => handleRemove(secret.id)}
100
100
-
class="rounded-md p-1.5 text-base-400 transition-colors hover:bg-base-200 hover:text-base-600 dark:text-base-500 dark:hover:bg-base-800 dark:hover:text-base-300"
101
101
-
aria-label="Delete secret"
102
102
-
>
103
103
-
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
104
104
-
<path fill-rule="evenodd" d="M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z" clip-rule="evenodd" />
105
105
-
</svg>
106
106
-
</button>
107
107
-
</div>
108
108
-
</div>
37
37
+
{:else}
38
38
+
<button
39
39
+
onclick={() => atProtoLoginModalState.show()}
40
40
+
class="cursor-pointer rounded-xl bg-accent-600 px-8 py-3 text-lg font-semibold text-white shadow-lg transition-colors hover:bg-accent-700 focus:outline-none focus:ring-2 focus:ring-accent-500 focus:ring-offset-2 dark:focus:ring-offset-base-950"
41
41
+
>
42
42
+
Sign in with AT Protocol
43
43
+
</button>
44
44
+
{/if}
45
45
+
</div>
46
46
+
</div>
109
47
110
110
-
<div class="relative mt-3">
111
111
-
{#if loadingMap[secret.id] || decryptedMap[secret.id]}
112
112
-
<div class="h-48 overflow-y-auto rounded-lg bg-base-50 p-4 dark:bg-base-800">
113
113
-
<pre class="whitespace-pre-wrap wrap-break-word font-mono text-sm text-base-800 dark:text-base-200"><DecryptEffect ciphertext={secret.ciphertext} text={decryptedMap[secret.id] || ''} /></pre>
114
114
-
</div>
115
115
-
{:else}
116
116
-
<div class="relative h-48 overflow-hidden rounded-lg">
117
117
-
<pre class="h-full overflow-hidden whitespace-pre-wrap wrap-break-word bg-base-50 p-4 font-mono text-sm text-base-800 select-none dark:bg-base-800 dark:text-base-200">{secret.ciphertext}</pre>
118
118
-
119
119
-
<div class="absolute inset-0 flex items-center justify-center rounded-lg bg-base-200/90 dark:bg-base-950/85">
120
120
-
{#if !isUnlockable(secret.unlockAt)}
121
121
-
<Countdown targetDate={secret.unlockAt} class="text-xl sm:text-5xl text-base-900 dark:text-white gap-2 sm:gap-8" />
122
122
-
{:else if errorMap[secret.id]}
123
123
-
<div class="flex flex-col items-center gap-2">
124
124
-
<p class="text-sm text-red-600 dark:text-red-300">{errorMap[secret.id]}</p>
125
125
-
<button
126
126
-
onclick={() => handleDecrypt(secret.id, secret.ciphertext)}
127
127
-
class="rounded-lg bg-accent-600 px-5 py-2.5 text-base font-semibold text-white transition-colors hover:bg-accent-700"
128
128
-
>
129
129
-
Retry
130
130
-
</button>
131
131
-
</div>
132
132
-
{:else}
133
133
-
<button
134
134
-
onclick={() => handleDecrypt(secret.id, secret.ciphertext)}
135
135
-
class="rounded-lg bg-accent-600 px-6 py-3 text-lg font-semibold text-white shadow-lg transition-colors hover:bg-accent-700"
136
136
-
>
137
137
-
Decrypt
138
138
-
</button>
139
139
-
{/if}
140
140
-
</div>
141
141
-
</div>
142
142
-
{/if}
48
48
+
{#if data.recentSecrets && data.recentSecrets.length > 0}
49
49
+
<div class="mx-auto max-w-3xl px-4 pb-20">
50
50
+
<h2 class="mb-4 text-lg font-semibold text-base-700 dark:text-base-300">
51
51
+
Recently Created
52
52
+
</h2>
53
53
+
<div class="space-y-2">
54
54
+
{#each data.recentSecrets as secret}
55
55
+
<a
56
56
+
href="/{secret.handle}"
57
57
+
class="group flex items-center justify-between rounded-xl border border-base-200 bg-base-100 px-5 py-4 transition-colors hover:border-accent-300 hover:bg-accent-50/50 dark:border-base-800 dark:bg-base-900 dark:hover:border-accent-700 dark:hover:bg-accent-950/30"
58
58
+
>
59
59
+
<div class="min-w-0 flex-1">
60
60
+
<p class="truncate font-medium text-base-900 dark:text-base-100">
61
61
+
{secret.title}
62
62
+
</p>
63
63
+
<p class="mt-0.5 text-sm text-base-500 dark:text-base-400">
64
64
+
by <span class="text-accent-600 dark:text-accent-400">{secret.handle}</span>
65
65
+
·
66
66
+
<RelativeTime date={new Date(secret.createdAt)} locale="en" /> ago
67
67
+
</p>
143
68
</div>
144
144
-
</div>
69
69
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 shrink-0 text-base-400 transition-colors group-hover:text-accent-500 dark:text-base-600" viewBox="0 0 20 20" fill="currentColor">
70
70
+
<path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd" />
71
71
+
</svg>
72
72
+
</a>
145
73
{/each}
146
74
</div>
147
147
-
{/if}
148
148
-
</div>
75
75
+
</div>
76
76
+
{/if}
149
77
</div>
···
1
1
+
import type { PageServerLoad } from './$types';
2
2
+
import { listRecords, actorToDid, getClient, describeRepo } from '$lib/atproto/methods';
3
3
+
4
4
+
const COLLECTION = 'dev.flo-bit.test.timelock';
5
5
+
6
6
+
export const load: PageServerLoad = async ({ params }) => {
7
7
+
try {
8
8
+
const did = await actorToDid(params.actor);
9
9
+
const client = await getClient({ did });
10
10
+
11
11
+
const [records, repo] = await Promise.all([
12
12
+
listRecords({ did, collection: COLLECTION, client }),
13
13
+
describeRepo({ did, client })
14
14
+
]);
15
15
+
16
16
+
const handle = repo?.handle ?? params.actor;
17
17
+
18
18
+
const secrets = records.map((r) => ({
19
19
+
uri: r.uri,
20
20
+
rkey: r.uri.split('/').pop()!,
21
21
+
title: (r.value as Record<string, unknown>).title as string,
22
22
+
ciphertext: (r.value as Record<string, unknown>).ciphertext as string,
23
23
+
createdAt: (r.value as Record<string, unknown>).createdAt as string,
24
24
+
unlockAt: (r.value as Record<string, unknown>).unlockAt as string
25
25
+
}));
26
26
+
27
27
+
return { secrets, actorDid: did, handle, actor: params.actor };
28
28
+
} catch {
29
29
+
return { secrets: [], actorDid: null, handle: null, actor: params.actor };
30
30
+
}
31
31
+
};
···
1
1
+
<script lang="ts">
2
2
+
import { decrypt } from '$lib/timelock';
3
3
+
import { deleteRecord, user } from '$lib/atproto';
4
4
+
import Countdown from '$lib/components/Countdown.svelte';
5
5
+
import { RelativeTime } from '@foxui/time';
6
6
+
import DecryptEffect from '$lib/components/DecryptEffect.svelte';
7
7
+
import { invalidateAll } from '$app/navigation';
8
8
+
9
9
+
let { data } = $props();
10
10
+
11
11
+
let now = $state(Date.now());
12
12
+
13
13
+
$effect(() => {
14
14
+
const id = setInterval(() => {
15
15
+
now = Date.now();
16
16
+
}, 1000);
17
17
+
return () => clearInterval(id);
18
18
+
});
19
19
+
20
20
+
let secrets = $derived(
21
21
+
data.secrets
22
22
+
.slice()
23
23
+
.sort((a, b) => new Date(a.unlockAt).getTime() - new Date(b.unlockAt).getTime())
24
24
+
);
25
25
+
26
26
+
let isOwner = $derived(user.isLoggedIn && user.did === data.actorDid);
27
27
+
28
28
+
let decryptedMap: Record<string, string> = $state({});
29
29
+
let loadingMap: Record<string, boolean> = $state({});
30
30
+
let errorMap: Record<string, string> = $state({});
31
31
+
32
32
+
function isUnlockable(unlockAt: string): boolean {
33
33
+
return new Date(unlockAt).getTime() <= now;
34
34
+
}
35
35
+
36
36
+
async function handleDecrypt(rkey: string, ciphertext: string) {
37
37
+
loadingMap[rkey] = true;
38
38
+
errorMap[rkey] = '';
39
39
+
decryptedMap[rkey] = '';
40
40
+
41
41
+
try {
42
42
+
const plaintext = await decrypt(ciphertext);
43
43
+
decryptedMap[rkey] = plaintext;
44
44
+
} catch (e) {
45
45
+
errorMap[rkey] = e instanceof Error ? e.message : 'Decryption failed. You might need to wait longer.';
46
46
+
} finally {
47
47
+
loadingMap[rkey] = false;
48
48
+
}
49
49
+
}
50
50
+
51
51
+
async function handleRemove(rkey: string) {
52
52
+
try {
53
53
+
await deleteRecord({ collection: 'dev.flo-bit.test.timelock', rkey });
54
54
+
delete decryptedMap[rkey];
55
55
+
delete loadingMap[rkey];
56
56
+
delete errorMap[rkey];
57
57
+
await invalidateAll();
58
58
+
} catch (e) {
59
59
+
console.error('Failed to delete record:', e);
60
60
+
}
61
61
+
}
62
62
+
</script>
63
63
+
64
64
+
<div class="min-h-screen bg-base-50 text-base-900 dark:bg-base-950 dark:text-base-100">
65
65
+
<div class="mx-auto max-w-3xl px-4 py-20">
66
66
+
<header class="mb-8 flex items-center justify-between">
67
67
+
<h1 class="text-3xl font-bold tracking-tight">
68
68
+
{#if data.actorDid}
69
69
+
{data.handle}
70
70
+
{:else}
71
71
+
User not found
72
72
+
{/if}
73
73
+
</h1>
74
74
+
{#if isOwner}
75
75
+
<a
76
76
+
href="/{data.actor}/create"
77
77
+
class="rounded-lg bg-accent-600 px-4 py-2 text-center text-sm font-medium text-white transition-colors hover:bg-accent-700 focus:outline-none focus:ring-2 focus:ring-accent-500 focus:ring-offset-2 dark:focus:ring-offset-base-950"
78
78
+
>
79
79
+
New Secret
80
80
+
</a>
81
81
+
{/if}
82
82
+
</header>
83
83
+
84
84
+
{#if !data.actorDid}
85
85
+
<div class="rounded-xl border border-base-200 bg-base-100 p-12 text-center dark:border-base-800 dark:bg-base-900">
86
86
+
<p class="text-lg font-medium text-base-600 dark:text-base-400">Could not find this user.</p>
87
87
+
</div>
88
88
+
{:else if secrets.length === 0}
89
89
+
<div class="rounded-xl border border-base-200 bg-base-100 p-12 text-center dark:border-base-800 dark:bg-base-900">
90
90
+
<p class="mb-1 text-lg font-medium text-base-600 dark:text-base-400">No secrets yet</p>
91
91
+
<p class="text-sm text-base-500 dark:text-base-500">
92
92
+
{#if isOwner}
93
93
+
Create your first timelocked secret to get started.
94
94
+
{:else}
95
95
+
This user hasn't created any timelocked secrets.
96
96
+
{/if}
97
97
+
</p>
98
98
+
{#if isOwner}
99
99
+
<a
100
100
+
href="/{data.actor}/create"
101
101
+
class="mt-6 inline-block rounded-lg bg-accent-600 px-5 py-2.5 text-sm font-medium text-white transition-colors hover:bg-accent-700"
102
102
+
>
103
103
+
Create a Secret
104
104
+
</a>
105
105
+
{/if}
106
106
+
</div>
107
107
+
{:else}
108
108
+
<div class="space-y-4">
109
109
+
{#each secrets as secret (secret.rkey)}
110
110
+
<div class="rounded-xl border border-base-200 bg-base-100 p-5 dark:border-base-800 dark:bg-base-900">
111
111
+
<div class="flex items-start justify-between gap-4">
112
112
+
<div class="min-w-0 flex-1">
113
113
+
<h2 class="truncate text-lg font-semibold text-base-900 dark:text-base-100">
114
114
+
{secret.title}
115
115
+
</h2>
116
116
+
<p class="mt-1 text-sm text-base-500 dark:text-base-400">
117
117
+
Created <RelativeTime date={new Date(secret.createdAt)} locale="en" /> ago
118
118
+
</p>
119
119
+
</div>
120
120
+
<div class="flex shrink-0 items-center gap-2">
121
121
+
{#if isUnlockable(secret.unlockAt)}
122
122
+
<span class="inline-flex items-center rounded-full bg-accent-100 px-2.5 py-0.5 text-xs font-medium text-accent-800 dark:bg-accent-900/30 dark:text-accent-400">
123
123
+
Unlockable
124
124
+
</span>
125
125
+
{/if}
126
126
+
{#if isOwner}
127
127
+
<button
128
128
+
onclick={() => handleRemove(secret.rkey)}
129
129
+
class="cursor-pointer rounded-md p-1.5 text-base-400 transition-colors hover:bg-base-200 hover:text-base-600 dark:text-base-500 dark:hover:bg-base-800 dark:hover:text-base-300"
130
130
+
aria-label="Delete secret"
131
131
+
>
132
132
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
133
133
+
<path fill-rule="evenodd" d="M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z" clip-rule="evenodd" />
134
134
+
</svg>
135
135
+
</button>
136
136
+
{/if}
137
137
+
</div>
138
138
+
</div>
139
139
+
140
140
+
<div class="relative mt-3">
141
141
+
{#if loadingMap[secret.rkey] || decryptedMap[secret.rkey]}
142
142
+
<div class="h-48 overflow-y-auto rounded-lg bg-base-50 p-4 dark:bg-base-800">
143
143
+
<pre class="whitespace-pre-wrap wrap-break-word font-mono text-sm text-base-800 dark:text-base-200"><DecryptEffect ciphertext={secret.ciphertext} text={decryptedMap[secret.rkey] || ''} /></pre>
144
144
+
</div>
145
145
+
{:else}
146
146
+
<div class="relative h-48 overflow-hidden rounded-lg">
147
147
+
<pre class="h-full overflow-hidden whitespace-pre-wrap wrap-break-word bg-base-50 p-4 font-mono text-sm text-base-800 select-none dark:bg-base-800 dark:text-base-200">{secret.ciphertext}</pre>
148
148
+
149
149
+
<div class="absolute inset-0 flex items-center justify-center rounded-lg bg-base-200/90 dark:bg-base-950/85">
150
150
+
{#if !isUnlockable(secret.unlockAt)}
151
151
+
<Countdown targetDate={secret.unlockAt} class="text-xl sm:text-5xl text-base-900 dark:text-white gap-2 sm:gap-8" />
152
152
+
{:else if errorMap[secret.rkey]}
153
153
+
<div class="flex flex-col items-center gap-2">
154
154
+
<p class="text-sm text-red-600 dark:text-red-300">{errorMap[secret.rkey]}</p>
155
155
+
<button
156
156
+
onclick={() => handleDecrypt(secret.rkey, secret.ciphertext)}
157
157
+
class="cursor-pointer rounded-lg bg-accent-600 px-5 py-2.5 text-base font-semibold text-white transition-colors hover:bg-accent-700"
158
158
+
>
159
159
+
Retry
160
160
+
</button>
161
161
+
</div>
162
162
+
{:else}
163
163
+
<button
164
164
+
onclick={() => handleDecrypt(secret.rkey, secret.ciphertext)}
165
165
+
class="cursor-pointer rounded-lg bg-accent-600 px-6 py-3 text-lg font-semibold text-white shadow-lg transition-colors hover:bg-accent-700"
166
166
+
>
167
167
+
Decrypt
168
168
+
</button>
169
169
+
{/if}
170
170
+
</div>
171
171
+
</div>
172
172
+
{/if}
173
173
+
</div>
174
174
+
</div>
175
175
+
{/each}
176
176
+
</div>
177
177
+
{/if}
178
178
+
</div>
179
179
+
</div>
···
1
1
<script lang="ts">
2
2
import { goto } from '$app/navigation';
3
3
+
import { page } from '$app/state';
3
4
import DateTimePicker from '$lib/components/DateTimePicker/DateTimePicker.svelte';
4
5
import { encrypt } from '$lib/timelock';
5
5
-
import { addSecret } from '$lib/secrets.svelte';
6
6
+
import { putRecord, createTID, user } from '$lib/atproto';
7
7
+
8
8
+
// Redirect if not logged in or not the owner
9
9
+
$effect(() => {
10
10
+
if (!user.isLoggedIn) {
11
11
+
goto('/');
12
12
+
}
13
13
+
});
6
14
7
15
function formatDateTimeLocal(ms: number): string {
8
16
const d = new Date(ms);
···
28
36
{ label: '10 years', offsetMs: 10 * 365 * 24 * 60 * 60 * 1000 }
29
37
];
30
38
31
31
-
// Track the active preset offset (null = manual mode)
32
39
let activePresetMs: number | null = $state(presets[0].offsetMs);
33
40
34
34
-
// When a preset is active, keep unlockAt = now + offset (updates every second)
35
41
let now = $state(Date.now());
36
42
$effect(() => {
37
43
const id = setInterval(() => {
···
42
48
43
49
let unlockAt = $state(formatDateTimeLocal(Date.now() + presets[0].offsetMs));
44
50
45
45
-
// When a preset is active, continuously update unlockAt from now + offset
46
51
$effect(() => {
47
52
if (activePresetMs !== null) {
48
53
unlockAt = formatDateTimeLocal(now + activePresetMs);
···
56
61
}
57
62
58
63
function onManualDateChange() {
59
59
-
// User interacted with the picker directly — deselect preset
60
64
activePresetMs = null;
61
65
}
62
66
···
66
70
encrypting = true;
67
71
68
72
try {
69
69
-
// Use exact millisecond timestamp for preset, parsed string for manual
70
73
const unlockAtMs =
71
74
activePresetMs !== null ? Date.now() + activePresetMs : new Date(unlockAt).getTime();
72
75
const unlockAtDate = new Date(unlockAtMs);
73
76
const ciphertext = await encrypt(content, unlockAtMs);
74
77
75
75
-
addSecret({
76
76
-
id: crypto.randomUUID(),
77
77
-
title,
78
78
-
ciphertext,
79
79
-
createdAt: new Date().toISOString(),
80
80
-
unlockAt: unlockAtDate.toISOString()
78
78
+
await putRecord({
79
79
+
collection: 'dev.flo-bit.test.timelock',
80
80
+
rkey: createTID(),
81
81
+
record: {
82
82
+
title,
83
83
+
ciphertext,
84
84
+
createdAt: new Date().toISOString(),
85
85
+
unlockAt: unlockAtDate.toISOString()
86
86
+
}
81
87
});
82
88
83
83
-
await goto('/');
89
89
+
await goto(`/${page.params.actor}`);
84
90
} catch (err) {
85
91
error = err instanceof Error ? err.message : 'Encryption failed. Please try again.';
86
92
} finally {
···
92
98
<div class="min-h-screen bg-base-50 px-4 py-20 dark:bg-base-950">
93
99
<div class="mx-auto max-w-xl">
94
100
<a
95
95
-
href="/"
101
101
+
href="/{page.params.actor}"
96
102
class="mb-6 inline-flex items-center gap-1.5 text-sm font-medium text-base-500 transition-colors hover:text-base-700 dark:text-base-400 dark:hover:text-base-200"
97
103
>
98
104
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
···
172
178
<button
173
179
type="submit"
174
180
disabled={encrypting}
175
175
-
class="w-full rounded-lg bg-accent-600 px-4 py-2.5 text-sm font-semibold text-white shadow-sm transition-colors hover:bg-accent-700 disabled:cursor-not-allowed disabled:bg-accent-600/50"
181
181
+
class="cursor-pointer w-full rounded-lg bg-accent-600 px-4 py-2.5 text-sm font-semibold text-white shadow-sm transition-colors hover:bg-accent-700 disabled:cursor-not-allowed disabled:bg-accent-600/50"
176
182
>
177
183
{#if encrypting}
178
184
<span class="inline-flex items-center gap-2">
···
1
1
-
import adapter from '@sveltejs/adapter-auto';
1
1
+
import adapter from '@sveltejs/adapter-cloudflare';
2
2
3
3
/** @type {import('@sveltejs/kit').Config} */
4
4
const config = {
5
5
kit: {
6
6
-
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
7
7
-
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
8
8
-
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
9
9
-
adapter: adapter()
6
6
+
adapter: adapter(),
7
7
+
experimental: {
8
8
+
remoteFunctions: true
9
9
+
}
10
10
}
11
11
};
12
12
···
10
10
"skipLibCheck": true,
11
11
"sourceMap": true,
12
12
"strict": true,
13
13
-
"moduleResolution": "bundler"
13
13
+
"moduleResolution": "bundler",
14
14
+
"types": ["@cloudflare/workers-types"]
14
15
}
15
16
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
16
17
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
···
2
2
import { sveltekit } from '@sveltejs/kit/vite';
3
3
import { defineConfig } from 'vite';
4
4
5
5
-
export default defineConfig({ plugins: [tailwindcss(), sveltekit()] });
5
5
+
export default defineConfig({
6
6
+
plugins: [tailwindcss(), sveltekit()],
7
7
+
server: {
8
8
+
host: '127.0.0.1',
9
9
+
port: 5183
10
10
+
}
11
11
+
});
···
1
1
+
{
2
2
+
"name": "atproto-timelocked-secrets",
3
3
+
"compatibility_date": "2025-01-01",
4
4
+
"compatibility_flags": ["nodejs_compat_v2"],
5
5
+
"kv_namespaces": [
6
6
+
{ "binding": "OAUTH_SESSIONS", "id": "TODO" },
7
7
+
{ "binding": "OAUTH_STATES", "id": "TODO" }
8
8
+
]
9
9
+
}