forge
login
or
join now
lukeacl.com
/
atproto-did-web
star
0
fork
atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
this repo has no description
star
0
fork
atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
overview
issues
pulls
pipelines
Commit.
lukeacl
1 year ago
1328b693
+2935
16 changed files
expand all
collapse all
unified
split
.gitignore
README.md
index.html
package.json
pnpm-lock.yaml
postcss.config.js
src
components
layout.tsx
index.css
index.tsx
pages
did-web.tsx
vite-env.d.ts
tailwind.config.js
tsconfig.app.json
tsconfig.json
tsconfig.node.json
vite.config.ts
+24
.gitignore
reviewed
···
1
1
+
# Logs
2
2
+
logs
3
3
+
*.log
4
4
+
npm-debug.log*
5
5
+
yarn-debug.log*
6
6
+
yarn-error.log*
7
7
+
pnpm-debug.log*
8
8
+
lerna-debug.log*
9
9
+
10
10
+
node_modules
11
11
+
dist
12
12
+
dist-ssr
13
13
+
*.local
14
14
+
15
15
+
# Editor directories and files
16
16
+
.vscode/*
17
17
+
!.vscode/extensions.json
18
18
+
.idea
19
19
+
.DS_Store
20
20
+
*.suo
21
21
+
*.ntvs*
22
22
+
*.njsproj
23
23
+
*.sln
24
24
+
*.sw?
+1
README.md
reviewed
···
1
1
+
# atproto-did-web
+24
index.html
reviewed
···
1
1
+
<!doctype html>
2
2
+
<html lang="en">
3
3
+
<head>
4
4
+
<script
5
5
+
async
6
6
+
src="https://www.googletagmanager.com/gtag/js?id=G-9LDRND7V6M"
7
7
+
></script>
8
8
+
<script>
9
9
+
window.dataLayer = window.dataLayer || [];
10
10
+
function gtag() {
11
11
+
dataLayer.push(arguments);
12
12
+
}
13
13
+
gtag("js", new Date());
14
14
+
gtag("config", "G-9LDRND7V6M");
15
15
+
</script>
16
16
+
<meta charset="UTF-8" />
17
17
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
18
18
+
<title>ATProto - did:web</title>
19
19
+
</head>
20
20
+
<body>
21
21
+
<div id="root"></div>
22
22
+
<script type="module" src="/src/index.tsx"></script>
23
23
+
</body>
24
24
+
</html>
+27
package.json
reviewed
···
1
1
+
{
2
2
+
"name": "atproto-did-web",
3
3
+
"private": true,
4
4
+
"version": "0.0.1",
5
5
+
"type": "module",
6
6
+
"scripts": {
7
7
+
"dev": "vite",
8
8
+
"build": "tsc -b && vite build",
9
9
+
"preview": "vite preview",
10
10
+
"preinstall": "npx only-allow pnpm"
11
11
+
},
12
12
+
"dependencies": {
13
13
+
"@atproto/api": "^0.13.18",
14
14
+
"@atproto/crypto": "^0.4.2",
15
15
+
"@solidjs/router": "^0.15.1",
16
16
+
"solid-js": "^1.9.3",
17
17
+
"uint8arrays": "^5.1.0"
18
18
+
},
19
19
+
"devDependencies": {
20
20
+
"autoprefixer": "^10.4.20",
21
21
+
"postcss": "^8.4.49",
22
22
+
"tailwindcss": "^3.4.16",
23
23
+
"typescript": "~5.6.2",
24
24
+
"vite": "^6.0.1",
25
25
+
"vite-plugin-solid": "^2.11.0"
26
26
+
}
27
27
+
}
+2000
pnpm-lock.yaml
reviewed
···
1
1
+
lockfileVersion: '9.0'
2
2
+
3
3
+
settings:
4
4
+
autoInstallPeers: true
5
5
+
excludeLinksFromLockfile: false
6
6
+
7
7
+
importers:
8
8
+
9
9
+
.:
10
10
+
dependencies:
11
11
+
'@atproto/api':
12
12
+
specifier: ^0.13.18
13
13
+
version: 0.13.18
14
14
+
'@atproto/crypto':
15
15
+
specifier: ^0.4.2
16
16
+
version: 0.4.2
17
17
+
'@solidjs/router':
18
18
+
specifier: ^0.15.1
19
19
+
version: 0.15.1(solid-js@1.9.3)
20
20
+
solid-js:
21
21
+
specifier: ^1.9.3
22
22
+
version: 1.9.3
23
23
+
uint8arrays:
24
24
+
specifier: ^5.1.0
25
25
+
version: 5.1.0
26
26
+
devDependencies:
27
27
+
autoprefixer:
28
28
+
specifier: ^10.4.20
29
29
+
version: 10.4.20(postcss@8.4.49)
30
30
+
postcss:
31
31
+
specifier: ^8.4.49
32
32
+
version: 8.4.49
33
33
+
tailwindcss:
34
34
+
specifier: ^3.4.16
35
35
+
version: 3.4.16
36
36
+
typescript:
37
37
+
specifier: ~5.6.2
38
38
+
version: 5.6.3
39
39
+
vite:
40
40
+
specifier: ^6.0.1
41
41
+
version: 6.0.2(jiti@1.21.6)(yaml@2.6.1)
42
42
+
vite-plugin-solid:
43
43
+
specifier: ^2.11.0
44
44
+
version: 2.11.0(solid-js@1.9.3)(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1))
45
45
+
46
46
+
packages:
47
47
+
48
48
+
'@alloc/quick-lru@5.2.0':
49
49
+
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
50
50
+
engines: {node: '>=10'}
51
51
+
52
52
+
'@ampproject/remapping@2.3.0':
53
53
+
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
54
54
+
engines: {node: '>=6.0.0'}
55
55
+
56
56
+
'@atproto/api@0.13.18':
57
57
+
resolution: {integrity: sha512-rrl5HhzGYWZ7fiC965TPBUOVItq9M4dxMb6qz8IvAVQliSkrJrKc7UD0QWL89QiiXaOBuX8w+4i5r4wrfBGddg==}
58
58
+
59
59
+
'@atproto/common-web@0.3.1':
60
60
+
resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==}
61
61
+
62
62
+
'@atproto/crypto@0.4.2':
63
63
+
resolution: {integrity: sha512-aeOfPQYCDbhn2hV06oBF2KXrWjf/BK4yL8lfANJKSmKl3tKWCkiW/moi643rUXXxSE72KtWtQeqvNFYnnFJ0ig==}
64
64
+
65
65
+
'@atproto/lexicon@0.4.3':
66
66
+
resolution: {integrity: sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg==}
67
67
+
68
68
+
'@atproto/syntax@0.3.1':
69
69
+
resolution: {integrity: sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw==}
70
70
+
71
71
+
'@atproto/xrpc@0.6.4':
72
72
+
resolution: {integrity: sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA==}
73
73
+
74
74
+
'@babel/code-frame@7.26.2':
75
75
+
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
76
76
+
engines: {node: '>=6.9.0'}
77
77
+
78
78
+
'@babel/compat-data@7.26.2':
79
79
+
resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==}
80
80
+
engines: {node: '>=6.9.0'}
81
81
+
82
82
+
'@babel/core@7.26.0':
83
83
+
resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
84
84
+
engines: {node: '>=6.9.0'}
85
85
+
86
86
+
'@babel/generator@7.26.2':
87
87
+
resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
88
88
+
engines: {node: '>=6.9.0'}
89
89
+
90
90
+
'@babel/helper-compilation-targets@7.25.9':
91
91
+
resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
92
92
+
engines: {node: '>=6.9.0'}
93
93
+
94
94
+
'@babel/helper-module-imports@7.18.6':
95
95
+
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
96
96
+
engines: {node: '>=6.9.0'}
97
97
+
98
98
+
'@babel/helper-module-imports@7.25.9':
99
99
+
resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
100
100
+
engines: {node: '>=6.9.0'}
101
101
+
102
102
+
'@babel/helper-module-transforms@7.26.0':
103
103
+
resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
104
104
+
engines: {node: '>=6.9.0'}
105
105
+
peerDependencies:
106
106
+
'@babel/core': ^7.0.0
107
107
+
108
108
+
'@babel/helper-plugin-utils@7.25.9':
109
109
+
resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
110
110
+
engines: {node: '>=6.9.0'}
111
111
+
112
112
+
'@babel/helper-string-parser@7.25.9':
113
113
+
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
114
114
+
engines: {node: '>=6.9.0'}
115
115
+
116
116
+
'@babel/helper-validator-identifier@7.25.9':
117
117
+
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
118
118
+
engines: {node: '>=6.9.0'}
119
119
+
120
120
+
'@babel/helper-validator-option@7.25.9':
121
121
+
resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
122
122
+
engines: {node: '>=6.9.0'}
123
123
+
124
124
+
'@babel/helpers@7.26.0':
125
125
+
resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
126
126
+
engines: {node: '>=6.9.0'}
127
127
+
128
128
+
'@babel/parser@7.26.2':
129
129
+
resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
130
130
+
engines: {node: '>=6.0.0'}
131
131
+
hasBin: true
132
132
+
133
133
+
'@babel/plugin-syntax-jsx@7.25.9':
134
134
+
resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
135
135
+
engines: {node: '>=6.9.0'}
136
136
+
peerDependencies:
137
137
+
'@babel/core': ^7.0.0-0
138
138
+
139
139
+
'@babel/template@7.25.9':
140
140
+
resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
141
141
+
engines: {node: '>=6.9.0'}
142
142
+
143
143
+
'@babel/traverse@7.25.9':
144
144
+
resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
145
145
+
engines: {node: '>=6.9.0'}
146
146
+
147
147
+
'@babel/types@7.26.0':
148
148
+
resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
149
149
+
engines: {node: '>=6.9.0'}
150
150
+
151
151
+
'@esbuild/aix-ppc64@0.24.0':
152
152
+
resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
153
153
+
engines: {node: '>=18'}
154
154
+
cpu: [ppc64]
155
155
+
os: [aix]
156
156
+
157
157
+
'@esbuild/android-arm64@0.24.0':
158
158
+
resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
159
159
+
engines: {node: '>=18'}
160
160
+
cpu: [arm64]
161
161
+
os: [android]
162
162
+
163
163
+
'@esbuild/android-arm@0.24.0':
164
164
+
resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
165
165
+
engines: {node: '>=18'}
166
166
+
cpu: [arm]
167
167
+
os: [android]
168
168
+
169
169
+
'@esbuild/android-x64@0.24.0':
170
170
+
resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
171
171
+
engines: {node: '>=18'}
172
172
+
cpu: [x64]
173
173
+
os: [android]
174
174
+
175
175
+
'@esbuild/darwin-arm64@0.24.0':
176
176
+
resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
177
177
+
engines: {node: '>=18'}
178
178
+
cpu: [arm64]
179
179
+
os: [darwin]
180
180
+
181
181
+
'@esbuild/darwin-x64@0.24.0':
182
182
+
resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
183
183
+
engines: {node: '>=18'}
184
184
+
cpu: [x64]
185
185
+
os: [darwin]
186
186
+
187
187
+
'@esbuild/freebsd-arm64@0.24.0':
188
188
+
resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
189
189
+
engines: {node: '>=18'}
190
190
+
cpu: [arm64]
191
191
+
os: [freebsd]
192
192
+
193
193
+
'@esbuild/freebsd-x64@0.24.0':
194
194
+
resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
195
195
+
engines: {node: '>=18'}
196
196
+
cpu: [x64]
197
197
+
os: [freebsd]
198
198
+
199
199
+
'@esbuild/linux-arm64@0.24.0':
200
200
+
resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
201
201
+
engines: {node: '>=18'}
202
202
+
cpu: [arm64]
203
203
+
os: [linux]
204
204
+
205
205
+
'@esbuild/linux-arm@0.24.0':
206
206
+
resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
207
207
+
engines: {node: '>=18'}
208
208
+
cpu: [arm]
209
209
+
os: [linux]
210
210
+
211
211
+
'@esbuild/linux-ia32@0.24.0':
212
212
+
resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
213
213
+
engines: {node: '>=18'}
214
214
+
cpu: [ia32]
215
215
+
os: [linux]
216
216
+
217
217
+
'@esbuild/linux-loong64@0.24.0':
218
218
+
resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
219
219
+
engines: {node: '>=18'}
220
220
+
cpu: [loong64]
221
221
+
os: [linux]
222
222
+
223
223
+
'@esbuild/linux-mips64el@0.24.0':
224
224
+
resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
225
225
+
engines: {node: '>=18'}
226
226
+
cpu: [mips64el]
227
227
+
os: [linux]
228
228
+
229
229
+
'@esbuild/linux-ppc64@0.24.0':
230
230
+
resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
231
231
+
engines: {node: '>=18'}
232
232
+
cpu: [ppc64]
233
233
+
os: [linux]
234
234
+
235
235
+
'@esbuild/linux-riscv64@0.24.0':
236
236
+
resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
237
237
+
engines: {node: '>=18'}
238
238
+
cpu: [riscv64]
239
239
+
os: [linux]
240
240
+
241
241
+
'@esbuild/linux-s390x@0.24.0':
242
242
+
resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
243
243
+
engines: {node: '>=18'}
244
244
+
cpu: [s390x]
245
245
+
os: [linux]
246
246
+
247
247
+
'@esbuild/linux-x64@0.24.0':
248
248
+
resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
249
249
+
engines: {node: '>=18'}
250
250
+
cpu: [x64]
251
251
+
os: [linux]
252
252
+
253
253
+
'@esbuild/netbsd-x64@0.24.0':
254
254
+
resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
255
255
+
engines: {node: '>=18'}
256
256
+
cpu: [x64]
257
257
+
os: [netbsd]
258
258
+
259
259
+
'@esbuild/openbsd-arm64@0.24.0':
260
260
+
resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
261
261
+
engines: {node: '>=18'}
262
262
+
cpu: [arm64]
263
263
+
os: [openbsd]
264
264
+
265
265
+
'@esbuild/openbsd-x64@0.24.0':
266
266
+
resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
267
267
+
engines: {node: '>=18'}
268
268
+
cpu: [x64]
269
269
+
os: [openbsd]
270
270
+
271
271
+
'@esbuild/sunos-x64@0.24.0':
272
272
+
resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
273
273
+
engines: {node: '>=18'}
274
274
+
cpu: [x64]
275
275
+
os: [sunos]
276
276
+
277
277
+
'@esbuild/win32-arm64@0.24.0':
278
278
+
resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
279
279
+
engines: {node: '>=18'}
280
280
+
cpu: [arm64]
281
281
+
os: [win32]
282
282
+
283
283
+
'@esbuild/win32-ia32@0.24.0':
284
284
+
resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
285
285
+
engines: {node: '>=18'}
286
286
+
cpu: [ia32]
287
287
+
os: [win32]
288
288
+
289
289
+
'@esbuild/win32-x64@0.24.0':
290
290
+
resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
291
291
+
engines: {node: '>=18'}
292
292
+
cpu: [x64]
293
293
+
os: [win32]
294
294
+
295
295
+
'@isaacs/cliui@8.0.2':
296
296
+
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
297
297
+
engines: {node: '>=12'}
298
298
+
299
299
+
'@jridgewell/gen-mapping@0.3.5':
300
300
+
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
301
301
+
engines: {node: '>=6.0.0'}
302
302
+
303
303
+
'@jridgewell/resolve-uri@3.1.2':
304
304
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
305
305
+
engines: {node: '>=6.0.0'}
306
306
+
307
307
+
'@jridgewell/set-array@1.2.1':
308
308
+
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
309
309
+
engines: {node: '>=6.0.0'}
310
310
+
311
311
+
'@jridgewell/sourcemap-codec@1.5.0':
312
312
+
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
313
313
+
314
314
+
'@jridgewell/trace-mapping@0.3.25':
315
315
+
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
316
316
+
317
317
+
'@noble/curves@1.7.0':
318
318
+
resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==}
319
319
+
engines: {node: ^14.21.3 || >=16}
320
320
+
321
321
+
'@noble/hashes@1.6.0':
322
322
+
resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==}
323
323
+
engines: {node: ^14.21.3 || >=16}
324
324
+
325
325
+
'@noble/hashes@1.6.1':
326
326
+
resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==}
327
327
+
engines: {node: ^14.21.3 || >=16}
328
328
+
329
329
+
'@nodelib/fs.scandir@2.1.5':
330
330
+
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
331
331
+
engines: {node: '>= 8'}
332
332
+
333
333
+
'@nodelib/fs.stat@2.0.5':
334
334
+
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
335
335
+
engines: {node: '>= 8'}
336
336
+
337
337
+
'@nodelib/fs.walk@1.2.8':
338
338
+
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
339
339
+
engines: {node: '>= 8'}
340
340
+
341
341
+
'@pkgjs/parseargs@0.11.0':
342
342
+
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
343
343
+
engines: {node: '>=14'}
344
344
+
345
345
+
'@rollup/rollup-android-arm-eabi@4.28.0':
346
346
+
resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==}
347
347
+
cpu: [arm]
348
348
+
os: [android]
349
349
+
350
350
+
'@rollup/rollup-android-arm64@4.28.0':
351
351
+
resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==}
352
352
+
cpu: [arm64]
353
353
+
os: [android]
354
354
+
355
355
+
'@rollup/rollup-darwin-arm64@4.28.0':
356
356
+
resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==}
357
357
+
cpu: [arm64]
358
358
+
os: [darwin]
359
359
+
360
360
+
'@rollup/rollup-darwin-x64@4.28.0':
361
361
+
resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==}
362
362
+
cpu: [x64]
363
363
+
os: [darwin]
364
364
+
365
365
+
'@rollup/rollup-freebsd-arm64@4.28.0':
366
366
+
resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==}
367
367
+
cpu: [arm64]
368
368
+
os: [freebsd]
369
369
+
370
370
+
'@rollup/rollup-freebsd-x64@4.28.0':
371
371
+
resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==}
372
372
+
cpu: [x64]
373
373
+
os: [freebsd]
374
374
+
375
375
+
'@rollup/rollup-linux-arm-gnueabihf@4.28.0':
376
376
+
resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==}
377
377
+
cpu: [arm]
378
378
+
os: [linux]
379
379
+
380
380
+
'@rollup/rollup-linux-arm-musleabihf@4.28.0':
381
381
+
resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==}
382
382
+
cpu: [arm]
383
383
+
os: [linux]
384
384
+
385
385
+
'@rollup/rollup-linux-arm64-gnu@4.28.0':
386
386
+
resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==}
387
387
+
cpu: [arm64]
388
388
+
os: [linux]
389
389
+
390
390
+
'@rollup/rollup-linux-arm64-musl@4.28.0':
391
391
+
resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==}
392
392
+
cpu: [arm64]
393
393
+
os: [linux]
394
394
+
395
395
+
'@rollup/rollup-linux-powerpc64le-gnu@4.28.0':
396
396
+
resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==}
397
397
+
cpu: [ppc64]
398
398
+
os: [linux]
399
399
+
400
400
+
'@rollup/rollup-linux-riscv64-gnu@4.28.0':
401
401
+
resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==}
402
402
+
cpu: [riscv64]
403
403
+
os: [linux]
404
404
+
405
405
+
'@rollup/rollup-linux-s390x-gnu@4.28.0':
406
406
+
resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==}
407
407
+
cpu: [s390x]
408
408
+
os: [linux]
409
409
+
410
410
+
'@rollup/rollup-linux-x64-gnu@4.28.0':
411
411
+
resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==}
412
412
+
cpu: [x64]
413
413
+
os: [linux]
414
414
+
415
415
+
'@rollup/rollup-linux-x64-musl@4.28.0':
416
416
+
resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==}
417
417
+
cpu: [x64]
418
418
+
os: [linux]
419
419
+
420
420
+
'@rollup/rollup-win32-arm64-msvc@4.28.0':
421
421
+
resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==}
422
422
+
cpu: [arm64]
423
423
+
os: [win32]
424
424
+
425
425
+
'@rollup/rollup-win32-ia32-msvc@4.28.0':
426
426
+
resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==}
427
427
+
cpu: [ia32]
428
428
+
os: [win32]
429
429
+
430
430
+
'@rollup/rollup-win32-x64-msvc@4.28.0':
431
431
+
resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==}
432
432
+
cpu: [x64]
433
433
+
os: [win32]
434
434
+
435
435
+
'@solidjs/router@0.15.1':
436
436
+
resolution: {integrity: sha512-lb5BRBqQqii/1dQCglx2K68xLkgu7QcrcajWKuuEx6FHTsK/hp5IgVhjy6RzPMLj+SFyrrRi/ldirCFNxtzh0Q==}
437
437
+
peerDependencies:
438
438
+
solid-js: ^1.8.6
439
439
+
440
440
+
'@types/babel__core@7.20.5':
441
441
+
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
442
442
+
443
443
+
'@types/babel__generator@7.6.8':
444
444
+
resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
445
445
+
446
446
+
'@types/babel__template@7.4.4':
447
447
+
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
448
448
+
449
449
+
'@types/babel__traverse@7.20.6':
450
450
+
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
451
451
+
452
452
+
'@types/estree@1.0.6':
453
453
+
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
454
454
+
455
455
+
ansi-regex@5.0.1:
456
456
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
457
457
+
engines: {node: '>=8'}
458
458
+
459
459
+
ansi-regex@6.1.0:
460
460
+
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
461
461
+
engines: {node: '>=12'}
462
462
+
463
463
+
ansi-styles@4.3.0:
464
464
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
465
465
+
engines: {node: '>=8'}
466
466
+
467
467
+
ansi-styles@6.2.1:
468
468
+
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
469
469
+
engines: {node: '>=12'}
470
470
+
471
471
+
any-promise@1.3.0:
472
472
+
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
473
473
+
474
474
+
anymatch@3.1.3:
475
475
+
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
476
476
+
engines: {node: '>= 8'}
477
477
+
478
478
+
arg@5.0.2:
479
479
+
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
480
480
+
481
481
+
autoprefixer@10.4.20:
482
482
+
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
483
483
+
engines: {node: ^10 || ^12 || >=14}
484
484
+
hasBin: true
485
485
+
peerDependencies:
486
486
+
postcss: ^8.1.0
487
487
+
488
488
+
await-lock@2.2.2:
489
489
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
490
490
+
491
491
+
babel-plugin-jsx-dom-expressions@0.39.3:
492
492
+
resolution: {integrity: sha512-6RzmSu21zYPlV2gNwzjGG9FgODtt9hIWnx7L//OIioIEuRcnpDZoY8Tr+I81Cy1SrH4qoDyKpwHHo6uAMAeyPA==}
493
493
+
peerDependencies:
494
494
+
'@babel/core': ^7.20.12
495
495
+
496
496
+
babel-preset-solid@1.9.3:
497
497
+
resolution: {integrity: sha512-jvlx5wDp8s+bEF9sGFw/84SInXOA51ttkUEroQziKMbxplXThVKt83qB6bDTa1HuLNatdU9FHpFOiQWs1tLQIg==}
498
498
+
peerDependencies:
499
499
+
'@babel/core': ^7.0.0
500
500
+
501
501
+
balanced-match@1.0.2:
502
502
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
503
503
+
504
504
+
binary-extensions@2.3.0:
505
505
+
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
506
506
+
engines: {node: '>=8'}
507
507
+
508
508
+
brace-expansion@2.0.1:
509
509
+
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
510
510
+
511
511
+
braces@3.0.3:
512
512
+
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
513
513
+
engines: {node: '>=8'}
514
514
+
515
515
+
browserslist@4.24.2:
516
516
+
resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
517
517
+
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
518
518
+
hasBin: true
519
519
+
520
520
+
camelcase-css@2.0.1:
521
521
+
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
522
522
+
engines: {node: '>= 6'}
523
523
+
524
524
+
caniuse-lite@1.0.30001686:
525
525
+
resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==}
526
526
+
527
527
+
chokidar@3.6.0:
528
528
+
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
529
529
+
engines: {node: '>= 8.10.0'}
530
530
+
531
531
+
color-convert@2.0.1:
532
532
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
533
533
+
engines: {node: '>=7.0.0'}
534
534
+
535
535
+
color-name@1.1.4:
536
536
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
537
537
+
538
538
+
commander@4.1.1:
539
539
+
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
540
540
+
engines: {node: '>= 6'}
541
541
+
542
542
+
convert-source-map@2.0.0:
543
543
+
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
544
544
+
545
545
+
cross-spawn@7.0.6:
546
546
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
547
547
+
engines: {node: '>= 8'}
548
548
+
549
549
+
cssesc@3.0.0:
550
550
+
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
551
551
+
engines: {node: '>=4'}
552
552
+
hasBin: true
553
553
+
554
554
+
csstype@3.1.3:
555
555
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
556
556
+
557
557
+
debug@4.3.7:
558
558
+
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
559
559
+
engines: {node: '>=6.0'}
560
560
+
peerDependencies:
561
561
+
supports-color: '*'
562
562
+
peerDependenciesMeta:
563
563
+
supports-color:
564
564
+
optional: true
565
565
+
566
566
+
didyoumean@1.2.2:
567
567
+
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
568
568
+
569
569
+
dlv@1.1.3:
570
570
+
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
571
571
+
572
572
+
eastasianwidth@0.2.0:
573
573
+
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
574
574
+
575
575
+
electron-to-chromium@1.5.68:
576
576
+
resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==}
577
577
+
578
578
+
emoji-regex@8.0.0:
579
579
+
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
580
580
+
581
581
+
emoji-regex@9.2.2:
582
582
+
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
583
583
+
584
584
+
entities@4.5.0:
585
585
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
586
586
+
engines: {node: '>=0.12'}
587
587
+
588
588
+
esbuild@0.24.0:
589
589
+
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
590
590
+
engines: {node: '>=18'}
591
591
+
hasBin: true
592
592
+
593
593
+
escalade@3.2.0:
594
594
+
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
595
595
+
engines: {node: '>=6'}
596
596
+
597
597
+
fast-glob@3.3.2:
598
598
+
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
599
599
+
engines: {node: '>=8.6.0'}
600
600
+
601
601
+
fastq@1.17.1:
602
602
+
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
603
603
+
604
604
+
fill-range@7.1.1:
605
605
+
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
606
606
+
engines: {node: '>=8'}
607
607
+
608
608
+
foreground-child@3.3.0:
609
609
+
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
610
610
+
engines: {node: '>=14'}
611
611
+
612
612
+
fraction.js@4.3.7:
613
613
+
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
614
614
+
615
615
+
fsevents@2.3.3:
616
616
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
617
617
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
618
618
+
os: [darwin]
619
619
+
620
620
+
function-bind@1.1.2:
621
621
+
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
622
622
+
623
623
+
gensync@1.0.0-beta.2:
624
624
+
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
625
625
+
engines: {node: '>=6.9.0'}
626
626
+
627
627
+
glob-parent@5.1.2:
628
628
+
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
629
629
+
engines: {node: '>= 6'}
630
630
+
631
631
+
glob-parent@6.0.2:
632
632
+
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
633
633
+
engines: {node: '>=10.13.0'}
634
634
+
635
635
+
glob@10.4.5:
636
636
+
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
637
637
+
hasBin: true
638
638
+
639
639
+
globals@11.12.0:
640
640
+
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
641
641
+
engines: {node: '>=4'}
642
642
+
643
643
+
graphemer@1.4.0:
644
644
+
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
645
645
+
646
646
+
hasown@2.0.2:
647
647
+
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
648
648
+
engines: {node: '>= 0.4'}
649
649
+
650
650
+
html-entities@2.3.3:
651
651
+
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
652
652
+
653
653
+
is-binary-path@2.1.0:
654
654
+
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
655
655
+
engines: {node: '>=8'}
656
656
+
657
657
+
is-core-module@2.15.1:
658
658
+
resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
659
659
+
engines: {node: '>= 0.4'}
660
660
+
661
661
+
is-extglob@2.1.1:
662
662
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
663
663
+
engines: {node: '>=0.10.0'}
664
664
+
665
665
+
is-fullwidth-code-point@3.0.0:
666
666
+
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
667
667
+
engines: {node: '>=8'}
668
668
+
669
669
+
is-glob@4.0.3:
670
670
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
671
671
+
engines: {node: '>=0.10.0'}
672
672
+
673
673
+
is-number@7.0.0:
674
674
+
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
675
675
+
engines: {node: '>=0.12.0'}
676
676
+
677
677
+
is-what@4.1.16:
678
678
+
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
679
679
+
engines: {node: '>=12.13'}
680
680
+
681
681
+
isexe@2.0.0:
682
682
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
683
683
+
684
684
+
iso-datestring-validator@2.2.2:
685
685
+
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
686
686
+
687
687
+
jackspeak@3.4.3:
688
688
+
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
689
689
+
690
690
+
jiti@1.21.6:
691
691
+
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
692
692
+
hasBin: true
693
693
+
694
694
+
js-tokens@4.0.0:
695
695
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
696
696
+
697
697
+
jsesc@3.0.2:
698
698
+
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
699
699
+
engines: {node: '>=6'}
700
700
+
hasBin: true
701
701
+
702
702
+
json5@2.2.3:
703
703
+
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
704
704
+
engines: {node: '>=6'}
705
705
+
hasBin: true
706
706
+
707
707
+
lilconfig@3.1.3:
708
708
+
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
709
709
+
engines: {node: '>=14'}
710
710
+
711
711
+
lines-and-columns@1.2.4:
712
712
+
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
713
713
+
714
714
+
lru-cache@10.4.3:
715
715
+
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
716
716
+
717
717
+
lru-cache@5.1.1:
718
718
+
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
719
719
+
720
720
+
merge-anything@5.1.7:
721
721
+
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
722
722
+
engines: {node: '>=12.13'}
723
723
+
724
724
+
merge2@1.4.1:
725
725
+
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
726
726
+
engines: {node: '>= 8'}
727
727
+
728
728
+
micromatch@4.0.8:
729
729
+
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
730
730
+
engines: {node: '>=8.6'}
731
731
+
732
732
+
minimatch@9.0.5:
733
733
+
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
734
734
+
engines: {node: '>=16 || 14 >=14.17'}
735
735
+
736
736
+
minipass@7.1.2:
737
737
+
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
738
738
+
engines: {node: '>=16 || 14 >=14.17'}
739
739
+
740
740
+
ms@2.1.3:
741
741
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
742
742
+
743
743
+
multiformats@13.3.1:
744
744
+
resolution: {integrity: sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g==}
745
745
+
746
746
+
multiformats@9.9.0:
747
747
+
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
748
748
+
749
749
+
mz@2.7.0:
750
750
+
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
751
751
+
752
752
+
nanoid@3.3.8:
753
753
+
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
754
754
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
755
755
+
hasBin: true
756
756
+
757
757
+
node-releases@2.0.18:
758
758
+
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
759
759
+
760
760
+
normalize-path@3.0.0:
761
761
+
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
762
762
+
engines: {node: '>=0.10.0'}
763
763
+
764
764
+
normalize-range@0.1.2:
765
765
+
resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
766
766
+
engines: {node: '>=0.10.0'}
767
767
+
768
768
+
object-assign@4.1.1:
769
769
+
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
770
770
+
engines: {node: '>=0.10.0'}
771
771
+
772
772
+
object-hash@3.0.0:
773
773
+
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
774
774
+
engines: {node: '>= 6'}
775
775
+
776
776
+
package-json-from-dist@1.0.1:
777
777
+
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
778
778
+
779
779
+
parse5@7.2.1:
780
780
+
resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
781
781
+
782
782
+
path-key@3.1.1:
783
783
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
784
784
+
engines: {node: '>=8'}
785
785
+
786
786
+
path-parse@1.0.7:
787
787
+
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
788
788
+
789
789
+
path-scurry@1.11.1:
790
790
+
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
791
791
+
engines: {node: '>=16 || 14 >=14.18'}
792
792
+
793
793
+
picocolors@1.1.1:
794
794
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
795
795
+
796
796
+
picomatch@2.3.1:
797
797
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
798
798
+
engines: {node: '>=8.6'}
799
799
+
800
800
+
pify@2.3.0:
801
801
+
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
802
802
+
engines: {node: '>=0.10.0'}
803
803
+
804
804
+
pirates@4.0.6:
805
805
+
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
806
806
+
engines: {node: '>= 6'}
807
807
+
808
808
+
postcss-import@15.1.0:
809
809
+
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
810
810
+
engines: {node: '>=14.0.0'}
811
811
+
peerDependencies:
812
812
+
postcss: ^8.0.0
813
813
+
814
814
+
postcss-js@4.0.1:
815
815
+
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
816
816
+
engines: {node: ^12 || ^14 || >= 16}
817
817
+
peerDependencies:
818
818
+
postcss: ^8.4.21
819
819
+
820
820
+
postcss-load-config@4.0.2:
821
821
+
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
822
822
+
engines: {node: '>= 14'}
823
823
+
peerDependencies:
824
824
+
postcss: '>=8.0.9'
825
825
+
ts-node: '>=9.0.0'
826
826
+
peerDependenciesMeta:
827
827
+
postcss:
828
828
+
optional: true
829
829
+
ts-node:
830
830
+
optional: true
831
831
+
832
832
+
postcss-nested@6.2.0:
833
833
+
resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
834
834
+
engines: {node: '>=12.0'}
835
835
+
peerDependencies:
836
836
+
postcss: ^8.2.14
837
837
+
838
838
+
postcss-selector-parser@6.1.2:
839
839
+
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
840
840
+
engines: {node: '>=4'}
841
841
+
842
842
+
postcss-value-parser@4.2.0:
843
843
+
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
844
844
+
845
845
+
postcss@8.4.49:
846
846
+
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
847
847
+
engines: {node: ^10 || ^12 || >=14}
848
848
+
849
849
+
queue-microtask@1.2.3:
850
850
+
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
851
851
+
852
852
+
read-cache@1.0.0:
853
853
+
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
854
854
+
855
855
+
readdirp@3.6.0:
856
856
+
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
857
857
+
engines: {node: '>=8.10.0'}
858
858
+
859
859
+
resolve@1.22.8:
860
860
+
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
861
861
+
hasBin: true
862
862
+
863
863
+
reusify@1.0.4:
864
864
+
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
865
865
+
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
866
866
+
867
867
+
rollup@4.28.0:
868
868
+
resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==}
869
869
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
870
870
+
hasBin: true
871
871
+
872
872
+
run-parallel@1.2.0:
873
873
+
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
874
874
+
875
875
+
semver@6.3.1:
876
876
+
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
877
877
+
hasBin: true
878
878
+
879
879
+
seroval-plugins@1.1.1:
880
880
+
resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==}
881
881
+
engines: {node: '>=10'}
882
882
+
peerDependencies:
883
883
+
seroval: ^1.0
884
884
+
885
885
+
seroval@1.1.1:
886
886
+
resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==}
887
887
+
engines: {node: '>=10'}
888
888
+
889
889
+
shebang-command@2.0.0:
890
890
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
891
891
+
engines: {node: '>=8'}
892
892
+
893
893
+
shebang-regex@3.0.0:
894
894
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
895
895
+
engines: {node: '>=8'}
896
896
+
897
897
+
signal-exit@4.1.0:
898
898
+
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
899
899
+
engines: {node: '>=14'}
900
900
+
901
901
+
solid-js@1.9.3:
902
902
+
resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==}
903
903
+
904
904
+
solid-refresh@0.6.3:
905
905
+
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
906
906
+
peerDependencies:
907
907
+
solid-js: ^1.3
908
908
+
909
909
+
source-map-js@1.2.1:
910
910
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
911
911
+
engines: {node: '>=0.10.0'}
912
912
+
913
913
+
string-width@4.2.3:
914
914
+
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
915
915
+
engines: {node: '>=8'}
916
916
+
917
917
+
string-width@5.1.2:
918
918
+
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
919
919
+
engines: {node: '>=12'}
920
920
+
921
921
+
strip-ansi@6.0.1:
922
922
+
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
923
923
+
engines: {node: '>=8'}
924
924
+
925
925
+
strip-ansi@7.1.0:
926
926
+
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
927
927
+
engines: {node: '>=12'}
928
928
+
929
929
+
sucrase@3.35.0:
930
930
+
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
931
931
+
engines: {node: '>=16 || 14 >=14.17'}
932
932
+
hasBin: true
933
933
+
934
934
+
supports-preserve-symlinks-flag@1.0.0:
935
935
+
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
936
936
+
engines: {node: '>= 0.4'}
937
937
+
938
938
+
tailwindcss@3.4.16:
939
939
+
resolution: {integrity: sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==}
940
940
+
engines: {node: '>=14.0.0'}
941
941
+
hasBin: true
942
942
+
943
943
+
thenify-all@1.6.0:
944
944
+
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
945
945
+
engines: {node: '>=0.8'}
946
946
+
947
947
+
thenify@3.3.1:
948
948
+
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
949
949
+
950
950
+
tlds@1.255.0:
951
951
+
resolution: {integrity: sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw==}
952
952
+
hasBin: true
953
953
+
954
954
+
to-regex-range@5.0.1:
955
955
+
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
956
956
+
engines: {node: '>=8.0'}
957
957
+
958
958
+
ts-interface-checker@0.1.13:
959
959
+
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
960
960
+
961
961
+
typescript@5.6.3:
962
962
+
resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
963
963
+
engines: {node: '>=14.17'}
964
964
+
hasBin: true
965
965
+
966
966
+
uint8arrays@3.0.0:
967
967
+
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
968
968
+
969
969
+
uint8arrays@5.1.0:
970
970
+
resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==}
971
971
+
972
972
+
update-browserslist-db@1.1.1:
973
973
+
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
974
974
+
hasBin: true
975
975
+
peerDependencies:
976
976
+
browserslist: '>= 4.21.0'
977
977
+
978
978
+
util-deprecate@1.0.2:
979
979
+
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
980
980
+
981
981
+
validate-html-nesting@1.2.2:
982
982
+
resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
983
983
+
984
984
+
vite-plugin-solid@2.11.0:
985
985
+
resolution: {integrity: sha512-G+NiwDj4EAeUE0wt3Ur9f+Lt9oMUuLd0FIxYuqwJSqRacKQRteCwUFzNy8zMEt88xWokngQhiFjfJMhjc1fDXw==}
986
986
+
peerDependencies:
987
987
+
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
988
988
+
solid-js: ^1.7.2
989
989
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
990
990
+
peerDependenciesMeta:
991
991
+
'@testing-library/jest-dom':
992
992
+
optional: true
993
993
+
994
994
+
vite@6.0.2:
995
995
+
resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==}
996
996
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
997
997
+
hasBin: true
998
998
+
peerDependencies:
999
999
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
1000
1000
+
jiti: '>=1.21.0'
1001
1001
+
less: '*'
1002
1002
+
lightningcss: ^1.21.0
1003
1003
+
sass: '*'
1004
1004
+
sass-embedded: '*'
1005
1005
+
stylus: '*'
1006
1006
+
sugarss: '*'
1007
1007
+
terser: ^5.16.0
1008
1008
+
tsx: ^4.8.1
1009
1009
+
yaml: ^2.4.2
1010
1010
+
peerDependenciesMeta:
1011
1011
+
'@types/node':
1012
1012
+
optional: true
1013
1013
+
jiti:
1014
1014
+
optional: true
1015
1015
+
less:
1016
1016
+
optional: true
1017
1017
+
lightningcss:
1018
1018
+
optional: true
1019
1019
+
sass:
1020
1020
+
optional: true
1021
1021
+
sass-embedded:
1022
1022
+
optional: true
1023
1023
+
stylus:
1024
1024
+
optional: true
1025
1025
+
sugarss:
1026
1026
+
optional: true
1027
1027
+
terser:
1028
1028
+
optional: true
1029
1029
+
tsx:
1030
1030
+
optional: true
1031
1031
+
yaml:
1032
1032
+
optional: true
1033
1033
+
1034
1034
+
vitefu@1.0.4:
1035
1035
+
resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==}
1036
1036
+
peerDependencies:
1037
1037
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
1038
1038
+
peerDependenciesMeta:
1039
1039
+
vite:
1040
1040
+
optional: true
1041
1041
+
1042
1042
+
which@2.0.2:
1043
1043
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1044
1044
+
engines: {node: '>= 8'}
1045
1045
+
hasBin: true
1046
1046
+
1047
1047
+
wrap-ansi@7.0.0:
1048
1048
+
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1049
1049
+
engines: {node: '>=10'}
1050
1050
+
1051
1051
+
wrap-ansi@8.1.0:
1052
1052
+
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1053
1053
+
engines: {node: '>=12'}
1054
1054
+
1055
1055
+
yallist@3.1.1:
1056
1056
+
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1057
1057
+
1058
1058
+
yaml@2.6.1:
1059
1059
+
resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==}
1060
1060
+
engines: {node: '>= 14'}
1061
1061
+
hasBin: true
1062
1062
+
1063
1063
+
zod@3.23.8:
1064
1064
+
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
1065
1065
+
1066
1066
+
snapshots:
1067
1067
+
1068
1068
+
'@alloc/quick-lru@5.2.0': {}
1069
1069
+
1070
1070
+
'@ampproject/remapping@2.3.0':
1071
1071
+
dependencies:
1072
1072
+
'@jridgewell/gen-mapping': 0.3.5
1073
1073
+
'@jridgewell/trace-mapping': 0.3.25
1074
1074
+
1075
1075
+
'@atproto/api@0.13.18':
1076
1076
+
dependencies:
1077
1077
+
'@atproto/common-web': 0.3.1
1078
1078
+
'@atproto/lexicon': 0.4.3
1079
1079
+
'@atproto/syntax': 0.3.1
1080
1080
+
'@atproto/xrpc': 0.6.4
1081
1081
+
await-lock: 2.2.2
1082
1082
+
multiformats: 9.9.0
1083
1083
+
tlds: 1.255.0
1084
1084
+
zod: 3.23.8
1085
1085
+
1086
1086
+
'@atproto/common-web@0.3.1':
1087
1087
+
dependencies:
1088
1088
+
graphemer: 1.4.0
1089
1089
+
multiformats: 9.9.0
1090
1090
+
uint8arrays: 3.0.0
1091
1091
+
zod: 3.23.8
1092
1092
+
1093
1093
+
'@atproto/crypto@0.4.2':
1094
1094
+
dependencies:
1095
1095
+
'@noble/curves': 1.7.0
1096
1096
+
'@noble/hashes': 1.6.1
1097
1097
+
uint8arrays: 3.0.0
1098
1098
+
1099
1099
+
'@atproto/lexicon@0.4.3':
1100
1100
+
dependencies:
1101
1101
+
'@atproto/common-web': 0.3.1
1102
1102
+
'@atproto/syntax': 0.3.1
1103
1103
+
iso-datestring-validator: 2.2.2
1104
1104
+
multiformats: 9.9.0
1105
1105
+
zod: 3.23.8
1106
1106
+
1107
1107
+
'@atproto/syntax@0.3.1': {}
1108
1108
+
1109
1109
+
'@atproto/xrpc@0.6.4':
1110
1110
+
dependencies:
1111
1111
+
'@atproto/lexicon': 0.4.3
1112
1112
+
zod: 3.23.8
1113
1113
+
1114
1114
+
'@babel/code-frame@7.26.2':
1115
1115
+
dependencies:
1116
1116
+
'@babel/helper-validator-identifier': 7.25.9
1117
1117
+
js-tokens: 4.0.0
1118
1118
+
picocolors: 1.1.1
1119
1119
+
1120
1120
+
'@babel/compat-data@7.26.2': {}
1121
1121
+
1122
1122
+
'@babel/core@7.26.0':
1123
1123
+
dependencies:
1124
1124
+
'@ampproject/remapping': 2.3.0
1125
1125
+
'@babel/code-frame': 7.26.2
1126
1126
+
'@babel/generator': 7.26.2
1127
1127
+
'@babel/helper-compilation-targets': 7.25.9
1128
1128
+
'@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
1129
1129
+
'@babel/helpers': 7.26.0
1130
1130
+
'@babel/parser': 7.26.2
1131
1131
+
'@babel/template': 7.25.9
1132
1132
+
'@babel/traverse': 7.25.9
1133
1133
+
'@babel/types': 7.26.0
1134
1134
+
convert-source-map: 2.0.0
1135
1135
+
debug: 4.3.7
1136
1136
+
gensync: 1.0.0-beta.2
1137
1137
+
json5: 2.2.3
1138
1138
+
semver: 6.3.1
1139
1139
+
transitivePeerDependencies:
1140
1140
+
- supports-color
1141
1141
+
1142
1142
+
'@babel/generator@7.26.2':
1143
1143
+
dependencies:
1144
1144
+
'@babel/parser': 7.26.2
1145
1145
+
'@babel/types': 7.26.0
1146
1146
+
'@jridgewell/gen-mapping': 0.3.5
1147
1147
+
'@jridgewell/trace-mapping': 0.3.25
1148
1148
+
jsesc: 3.0.2
1149
1149
+
1150
1150
+
'@babel/helper-compilation-targets@7.25.9':
1151
1151
+
dependencies:
1152
1152
+
'@babel/compat-data': 7.26.2
1153
1153
+
'@babel/helper-validator-option': 7.25.9
1154
1154
+
browserslist: 4.24.2
1155
1155
+
lru-cache: 5.1.1
1156
1156
+
semver: 6.3.1
1157
1157
+
1158
1158
+
'@babel/helper-module-imports@7.18.6':
1159
1159
+
dependencies:
1160
1160
+
'@babel/types': 7.26.0
1161
1161
+
1162
1162
+
'@babel/helper-module-imports@7.25.9':
1163
1163
+
dependencies:
1164
1164
+
'@babel/traverse': 7.25.9
1165
1165
+
'@babel/types': 7.26.0
1166
1166
+
transitivePeerDependencies:
1167
1167
+
- supports-color
1168
1168
+
1169
1169
+
'@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
1170
1170
+
dependencies:
1171
1171
+
'@babel/core': 7.26.0
1172
1172
+
'@babel/helper-module-imports': 7.25.9
1173
1173
+
'@babel/helper-validator-identifier': 7.25.9
1174
1174
+
'@babel/traverse': 7.25.9
1175
1175
+
transitivePeerDependencies:
1176
1176
+
- supports-color
1177
1177
+
1178
1178
+
'@babel/helper-plugin-utils@7.25.9': {}
1179
1179
+
1180
1180
+
'@babel/helper-string-parser@7.25.9': {}
1181
1181
+
1182
1182
+
'@babel/helper-validator-identifier@7.25.9': {}
1183
1183
+
1184
1184
+
'@babel/helper-validator-option@7.25.9': {}
1185
1185
+
1186
1186
+
'@babel/helpers@7.26.0':
1187
1187
+
dependencies:
1188
1188
+
'@babel/template': 7.25.9
1189
1189
+
'@babel/types': 7.26.0
1190
1190
+
1191
1191
+
'@babel/parser@7.26.2':
1192
1192
+
dependencies:
1193
1193
+
'@babel/types': 7.26.0
1194
1194
+
1195
1195
+
'@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
1196
1196
+
dependencies:
1197
1197
+
'@babel/core': 7.26.0
1198
1198
+
'@babel/helper-plugin-utils': 7.25.9
1199
1199
+
1200
1200
+
'@babel/template@7.25.9':
1201
1201
+
dependencies:
1202
1202
+
'@babel/code-frame': 7.26.2
1203
1203
+
'@babel/parser': 7.26.2
1204
1204
+
'@babel/types': 7.26.0
1205
1205
+
1206
1206
+
'@babel/traverse@7.25.9':
1207
1207
+
dependencies:
1208
1208
+
'@babel/code-frame': 7.26.2
1209
1209
+
'@babel/generator': 7.26.2
1210
1210
+
'@babel/parser': 7.26.2
1211
1211
+
'@babel/template': 7.25.9
1212
1212
+
'@babel/types': 7.26.0
1213
1213
+
debug: 4.3.7
1214
1214
+
globals: 11.12.0
1215
1215
+
transitivePeerDependencies:
1216
1216
+
- supports-color
1217
1217
+
1218
1218
+
'@babel/types@7.26.0':
1219
1219
+
dependencies:
1220
1220
+
'@babel/helper-string-parser': 7.25.9
1221
1221
+
'@babel/helper-validator-identifier': 7.25.9
1222
1222
+
1223
1223
+
'@esbuild/aix-ppc64@0.24.0':
1224
1224
+
optional: true
1225
1225
+
1226
1226
+
'@esbuild/android-arm64@0.24.0':
1227
1227
+
optional: true
1228
1228
+
1229
1229
+
'@esbuild/android-arm@0.24.0':
1230
1230
+
optional: true
1231
1231
+
1232
1232
+
'@esbuild/android-x64@0.24.0':
1233
1233
+
optional: true
1234
1234
+
1235
1235
+
'@esbuild/darwin-arm64@0.24.0':
1236
1236
+
optional: true
1237
1237
+
1238
1238
+
'@esbuild/darwin-x64@0.24.0':
1239
1239
+
optional: true
1240
1240
+
1241
1241
+
'@esbuild/freebsd-arm64@0.24.0':
1242
1242
+
optional: true
1243
1243
+
1244
1244
+
'@esbuild/freebsd-x64@0.24.0':
1245
1245
+
optional: true
1246
1246
+
1247
1247
+
'@esbuild/linux-arm64@0.24.0':
1248
1248
+
optional: true
1249
1249
+
1250
1250
+
'@esbuild/linux-arm@0.24.0':
1251
1251
+
optional: true
1252
1252
+
1253
1253
+
'@esbuild/linux-ia32@0.24.0':
1254
1254
+
optional: true
1255
1255
+
1256
1256
+
'@esbuild/linux-loong64@0.24.0':
1257
1257
+
optional: true
1258
1258
+
1259
1259
+
'@esbuild/linux-mips64el@0.24.0':
1260
1260
+
optional: true
1261
1261
+
1262
1262
+
'@esbuild/linux-ppc64@0.24.0':
1263
1263
+
optional: true
1264
1264
+
1265
1265
+
'@esbuild/linux-riscv64@0.24.0':
1266
1266
+
optional: true
1267
1267
+
1268
1268
+
'@esbuild/linux-s390x@0.24.0':
1269
1269
+
optional: true
1270
1270
+
1271
1271
+
'@esbuild/linux-x64@0.24.0':
1272
1272
+
optional: true
1273
1273
+
1274
1274
+
'@esbuild/netbsd-x64@0.24.0':
1275
1275
+
optional: true
1276
1276
+
1277
1277
+
'@esbuild/openbsd-arm64@0.24.0':
1278
1278
+
optional: true
1279
1279
+
1280
1280
+
'@esbuild/openbsd-x64@0.24.0':
1281
1281
+
optional: true
1282
1282
+
1283
1283
+
'@esbuild/sunos-x64@0.24.0':
1284
1284
+
optional: true
1285
1285
+
1286
1286
+
'@esbuild/win32-arm64@0.24.0':
1287
1287
+
optional: true
1288
1288
+
1289
1289
+
'@esbuild/win32-ia32@0.24.0':
1290
1290
+
optional: true
1291
1291
+
1292
1292
+
'@esbuild/win32-x64@0.24.0':
1293
1293
+
optional: true
1294
1294
+
1295
1295
+
'@isaacs/cliui@8.0.2':
1296
1296
+
dependencies:
1297
1297
+
string-width: 5.1.2
1298
1298
+
string-width-cjs: string-width@4.2.3
1299
1299
+
strip-ansi: 7.1.0
1300
1300
+
strip-ansi-cjs: strip-ansi@6.0.1
1301
1301
+
wrap-ansi: 8.1.0
1302
1302
+
wrap-ansi-cjs: wrap-ansi@7.0.0
1303
1303
+
1304
1304
+
'@jridgewell/gen-mapping@0.3.5':
1305
1305
+
dependencies:
1306
1306
+
'@jridgewell/set-array': 1.2.1
1307
1307
+
'@jridgewell/sourcemap-codec': 1.5.0
1308
1308
+
'@jridgewell/trace-mapping': 0.3.25
1309
1309
+
1310
1310
+
'@jridgewell/resolve-uri@3.1.2': {}
1311
1311
+
1312
1312
+
'@jridgewell/set-array@1.2.1': {}
1313
1313
+
1314
1314
+
'@jridgewell/sourcemap-codec@1.5.0': {}
1315
1315
+
1316
1316
+
'@jridgewell/trace-mapping@0.3.25':
1317
1317
+
dependencies:
1318
1318
+
'@jridgewell/resolve-uri': 3.1.2
1319
1319
+
'@jridgewell/sourcemap-codec': 1.5.0
1320
1320
+
1321
1321
+
'@noble/curves@1.7.0':
1322
1322
+
dependencies:
1323
1323
+
'@noble/hashes': 1.6.0
1324
1324
+
1325
1325
+
'@noble/hashes@1.6.0': {}
1326
1326
+
1327
1327
+
'@noble/hashes@1.6.1': {}
1328
1328
+
1329
1329
+
'@nodelib/fs.scandir@2.1.5':
1330
1330
+
dependencies:
1331
1331
+
'@nodelib/fs.stat': 2.0.5
1332
1332
+
run-parallel: 1.2.0
1333
1333
+
1334
1334
+
'@nodelib/fs.stat@2.0.5': {}
1335
1335
+
1336
1336
+
'@nodelib/fs.walk@1.2.8':
1337
1337
+
dependencies:
1338
1338
+
'@nodelib/fs.scandir': 2.1.5
1339
1339
+
fastq: 1.17.1
1340
1340
+
1341
1341
+
'@pkgjs/parseargs@0.11.0':
1342
1342
+
optional: true
1343
1343
+
1344
1344
+
'@rollup/rollup-android-arm-eabi@4.28.0':
1345
1345
+
optional: true
1346
1346
+
1347
1347
+
'@rollup/rollup-android-arm64@4.28.0':
1348
1348
+
optional: true
1349
1349
+
1350
1350
+
'@rollup/rollup-darwin-arm64@4.28.0':
1351
1351
+
optional: true
1352
1352
+
1353
1353
+
'@rollup/rollup-darwin-x64@4.28.0':
1354
1354
+
optional: true
1355
1355
+
1356
1356
+
'@rollup/rollup-freebsd-arm64@4.28.0':
1357
1357
+
optional: true
1358
1358
+
1359
1359
+
'@rollup/rollup-freebsd-x64@4.28.0':
1360
1360
+
optional: true
1361
1361
+
1362
1362
+
'@rollup/rollup-linux-arm-gnueabihf@4.28.0':
1363
1363
+
optional: true
1364
1364
+
1365
1365
+
'@rollup/rollup-linux-arm-musleabihf@4.28.0':
1366
1366
+
optional: true
1367
1367
+
1368
1368
+
'@rollup/rollup-linux-arm64-gnu@4.28.0':
1369
1369
+
optional: true
1370
1370
+
1371
1371
+
'@rollup/rollup-linux-arm64-musl@4.28.0':
1372
1372
+
optional: true
1373
1373
+
1374
1374
+
'@rollup/rollup-linux-powerpc64le-gnu@4.28.0':
1375
1375
+
optional: true
1376
1376
+
1377
1377
+
'@rollup/rollup-linux-riscv64-gnu@4.28.0':
1378
1378
+
optional: true
1379
1379
+
1380
1380
+
'@rollup/rollup-linux-s390x-gnu@4.28.0':
1381
1381
+
optional: true
1382
1382
+
1383
1383
+
'@rollup/rollup-linux-x64-gnu@4.28.0':
1384
1384
+
optional: true
1385
1385
+
1386
1386
+
'@rollup/rollup-linux-x64-musl@4.28.0':
1387
1387
+
optional: true
1388
1388
+
1389
1389
+
'@rollup/rollup-win32-arm64-msvc@4.28.0':
1390
1390
+
optional: true
1391
1391
+
1392
1392
+
'@rollup/rollup-win32-ia32-msvc@4.28.0':
1393
1393
+
optional: true
1394
1394
+
1395
1395
+
'@rollup/rollup-win32-x64-msvc@4.28.0':
1396
1396
+
optional: true
1397
1397
+
1398
1398
+
'@solidjs/router@0.15.1(solid-js@1.9.3)':
1399
1399
+
dependencies:
1400
1400
+
solid-js: 1.9.3
1401
1401
+
1402
1402
+
'@types/babel__core@7.20.5':
1403
1403
+
dependencies:
1404
1404
+
'@babel/parser': 7.26.2
1405
1405
+
'@babel/types': 7.26.0
1406
1406
+
'@types/babel__generator': 7.6.8
1407
1407
+
'@types/babel__template': 7.4.4
1408
1408
+
'@types/babel__traverse': 7.20.6
1409
1409
+
1410
1410
+
'@types/babel__generator@7.6.8':
1411
1411
+
dependencies:
1412
1412
+
'@babel/types': 7.26.0
1413
1413
+
1414
1414
+
'@types/babel__template@7.4.4':
1415
1415
+
dependencies:
1416
1416
+
'@babel/parser': 7.26.2
1417
1417
+
'@babel/types': 7.26.0
1418
1418
+
1419
1419
+
'@types/babel__traverse@7.20.6':
1420
1420
+
dependencies:
1421
1421
+
'@babel/types': 7.26.0
1422
1422
+
1423
1423
+
'@types/estree@1.0.6': {}
1424
1424
+
1425
1425
+
ansi-regex@5.0.1: {}
1426
1426
+
1427
1427
+
ansi-regex@6.1.0: {}
1428
1428
+
1429
1429
+
ansi-styles@4.3.0:
1430
1430
+
dependencies:
1431
1431
+
color-convert: 2.0.1
1432
1432
+
1433
1433
+
ansi-styles@6.2.1: {}
1434
1434
+
1435
1435
+
any-promise@1.3.0: {}
1436
1436
+
1437
1437
+
anymatch@3.1.3:
1438
1438
+
dependencies:
1439
1439
+
normalize-path: 3.0.0
1440
1440
+
picomatch: 2.3.1
1441
1441
+
1442
1442
+
arg@5.0.2: {}
1443
1443
+
1444
1444
+
autoprefixer@10.4.20(postcss@8.4.49):
1445
1445
+
dependencies:
1446
1446
+
browserslist: 4.24.2
1447
1447
+
caniuse-lite: 1.0.30001686
1448
1448
+
fraction.js: 4.3.7
1449
1449
+
normalize-range: 0.1.2
1450
1450
+
picocolors: 1.1.1
1451
1451
+
postcss: 8.4.49
1452
1452
+
postcss-value-parser: 4.2.0
1453
1453
+
1454
1454
+
await-lock@2.2.2: {}
1455
1455
+
1456
1456
+
babel-plugin-jsx-dom-expressions@0.39.3(@babel/core@7.26.0):
1457
1457
+
dependencies:
1458
1458
+
'@babel/core': 7.26.0
1459
1459
+
'@babel/helper-module-imports': 7.18.6
1460
1460
+
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
1461
1461
+
'@babel/types': 7.26.0
1462
1462
+
html-entities: 2.3.3
1463
1463
+
parse5: 7.2.1
1464
1464
+
validate-html-nesting: 1.2.2
1465
1465
+
1466
1466
+
babel-preset-solid@1.9.3(@babel/core@7.26.0):
1467
1467
+
dependencies:
1468
1468
+
'@babel/core': 7.26.0
1469
1469
+
babel-plugin-jsx-dom-expressions: 0.39.3(@babel/core@7.26.0)
1470
1470
+
1471
1471
+
balanced-match@1.0.2: {}
1472
1472
+
1473
1473
+
binary-extensions@2.3.0: {}
1474
1474
+
1475
1475
+
brace-expansion@2.0.1:
1476
1476
+
dependencies:
1477
1477
+
balanced-match: 1.0.2
1478
1478
+
1479
1479
+
braces@3.0.3:
1480
1480
+
dependencies:
1481
1481
+
fill-range: 7.1.1
1482
1482
+
1483
1483
+
browserslist@4.24.2:
1484
1484
+
dependencies:
1485
1485
+
caniuse-lite: 1.0.30001686
1486
1486
+
electron-to-chromium: 1.5.68
1487
1487
+
node-releases: 2.0.18
1488
1488
+
update-browserslist-db: 1.1.1(browserslist@4.24.2)
1489
1489
+
1490
1490
+
camelcase-css@2.0.1: {}
1491
1491
+
1492
1492
+
caniuse-lite@1.0.30001686: {}
1493
1493
+
1494
1494
+
chokidar@3.6.0:
1495
1495
+
dependencies:
1496
1496
+
anymatch: 3.1.3
1497
1497
+
braces: 3.0.3
1498
1498
+
glob-parent: 5.1.2
1499
1499
+
is-binary-path: 2.1.0
1500
1500
+
is-glob: 4.0.3
1501
1501
+
normalize-path: 3.0.0
1502
1502
+
readdirp: 3.6.0
1503
1503
+
optionalDependencies:
1504
1504
+
fsevents: 2.3.3
1505
1505
+
1506
1506
+
color-convert@2.0.1:
1507
1507
+
dependencies:
1508
1508
+
color-name: 1.1.4
1509
1509
+
1510
1510
+
color-name@1.1.4: {}
1511
1511
+
1512
1512
+
commander@4.1.1: {}
1513
1513
+
1514
1514
+
convert-source-map@2.0.0: {}
1515
1515
+
1516
1516
+
cross-spawn@7.0.6:
1517
1517
+
dependencies:
1518
1518
+
path-key: 3.1.1
1519
1519
+
shebang-command: 2.0.0
1520
1520
+
which: 2.0.2
1521
1521
+
1522
1522
+
cssesc@3.0.0: {}
1523
1523
+
1524
1524
+
csstype@3.1.3: {}
1525
1525
+
1526
1526
+
debug@4.3.7:
1527
1527
+
dependencies:
1528
1528
+
ms: 2.1.3
1529
1529
+
1530
1530
+
didyoumean@1.2.2: {}
1531
1531
+
1532
1532
+
dlv@1.1.3: {}
1533
1533
+
1534
1534
+
eastasianwidth@0.2.0: {}
1535
1535
+
1536
1536
+
electron-to-chromium@1.5.68: {}
1537
1537
+
1538
1538
+
emoji-regex@8.0.0: {}
1539
1539
+
1540
1540
+
emoji-regex@9.2.2: {}
1541
1541
+
1542
1542
+
entities@4.5.0: {}
1543
1543
+
1544
1544
+
esbuild@0.24.0:
1545
1545
+
optionalDependencies:
1546
1546
+
'@esbuild/aix-ppc64': 0.24.0
1547
1547
+
'@esbuild/android-arm': 0.24.0
1548
1548
+
'@esbuild/android-arm64': 0.24.0
1549
1549
+
'@esbuild/android-x64': 0.24.0
1550
1550
+
'@esbuild/darwin-arm64': 0.24.0
1551
1551
+
'@esbuild/darwin-x64': 0.24.0
1552
1552
+
'@esbuild/freebsd-arm64': 0.24.0
1553
1553
+
'@esbuild/freebsd-x64': 0.24.0
1554
1554
+
'@esbuild/linux-arm': 0.24.0
1555
1555
+
'@esbuild/linux-arm64': 0.24.0
1556
1556
+
'@esbuild/linux-ia32': 0.24.0
1557
1557
+
'@esbuild/linux-loong64': 0.24.0
1558
1558
+
'@esbuild/linux-mips64el': 0.24.0
1559
1559
+
'@esbuild/linux-ppc64': 0.24.0
1560
1560
+
'@esbuild/linux-riscv64': 0.24.0
1561
1561
+
'@esbuild/linux-s390x': 0.24.0
1562
1562
+
'@esbuild/linux-x64': 0.24.0
1563
1563
+
'@esbuild/netbsd-x64': 0.24.0
1564
1564
+
'@esbuild/openbsd-arm64': 0.24.0
1565
1565
+
'@esbuild/openbsd-x64': 0.24.0
1566
1566
+
'@esbuild/sunos-x64': 0.24.0
1567
1567
+
'@esbuild/win32-arm64': 0.24.0
1568
1568
+
'@esbuild/win32-ia32': 0.24.0
1569
1569
+
'@esbuild/win32-x64': 0.24.0
1570
1570
+
1571
1571
+
escalade@3.2.0: {}
1572
1572
+
1573
1573
+
fast-glob@3.3.2:
1574
1574
+
dependencies:
1575
1575
+
'@nodelib/fs.stat': 2.0.5
1576
1576
+
'@nodelib/fs.walk': 1.2.8
1577
1577
+
glob-parent: 5.1.2
1578
1578
+
merge2: 1.4.1
1579
1579
+
micromatch: 4.0.8
1580
1580
+
1581
1581
+
fastq@1.17.1:
1582
1582
+
dependencies:
1583
1583
+
reusify: 1.0.4
1584
1584
+
1585
1585
+
fill-range@7.1.1:
1586
1586
+
dependencies:
1587
1587
+
to-regex-range: 5.0.1
1588
1588
+
1589
1589
+
foreground-child@3.3.0:
1590
1590
+
dependencies:
1591
1591
+
cross-spawn: 7.0.6
1592
1592
+
signal-exit: 4.1.0
1593
1593
+
1594
1594
+
fraction.js@4.3.7: {}
1595
1595
+
1596
1596
+
fsevents@2.3.3:
1597
1597
+
optional: true
1598
1598
+
1599
1599
+
function-bind@1.1.2: {}
1600
1600
+
1601
1601
+
gensync@1.0.0-beta.2: {}
1602
1602
+
1603
1603
+
glob-parent@5.1.2:
1604
1604
+
dependencies:
1605
1605
+
is-glob: 4.0.3
1606
1606
+
1607
1607
+
glob-parent@6.0.2:
1608
1608
+
dependencies:
1609
1609
+
is-glob: 4.0.3
1610
1610
+
1611
1611
+
glob@10.4.5:
1612
1612
+
dependencies:
1613
1613
+
foreground-child: 3.3.0
1614
1614
+
jackspeak: 3.4.3
1615
1615
+
minimatch: 9.0.5
1616
1616
+
minipass: 7.1.2
1617
1617
+
package-json-from-dist: 1.0.1
1618
1618
+
path-scurry: 1.11.1
1619
1619
+
1620
1620
+
globals@11.12.0: {}
1621
1621
+
1622
1622
+
graphemer@1.4.0: {}
1623
1623
+
1624
1624
+
hasown@2.0.2:
1625
1625
+
dependencies:
1626
1626
+
function-bind: 1.1.2
1627
1627
+
1628
1628
+
html-entities@2.3.3: {}
1629
1629
+
1630
1630
+
is-binary-path@2.1.0:
1631
1631
+
dependencies:
1632
1632
+
binary-extensions: 2.3.0
1633
1633
+
1634
1634
+
is-core-module@2.15.1:
1635
1635
+
dependencies:
1636
1636
+
hasown: 2.0.2
1637
1637
+
1638
1638
+
is-extglob@2.1.1: {}
1639
1639
+
1640
1640
+
is-fullwidth-code-point@3.0.0: {}
1641
1641
+
1642
1642
+
is-glob@4.0.3:
1643
1643
+
dependencies:
1644
1644
+
is-extglob: 2.1.1
1645
1645
+
1646
1646
+
is-number@7.0.0: {}
1647
1647
+
1648
1648
+
is-what@4.1.16: {}
1649
1649
+
1650
1650
+
isexe@2.0.0: {}
1651
1651
+
1652
1652
+
iso-datestring-validator@2.2.2: {}
1653
1653
+
1654
1654
+
jackspeak@3.4.3:
1655
1655
+
dependencies:
1656
1656
+
'@isaacs/cliui': 8.0.2
1657
1657
+
optionalDependencies:
1658
1658
+
'@pkgjs/parseargs': 0.11.0
1659
1659
+
1660
1660
+
jiti@1.21.6: {}
1661
1661
+
1662
1662
+
js-tokens@4.0.0: {}
1663
1663
+
1664
1664
+
jsesc@3.0.2: {}
1665
1665
+
1666
1666
+
json5@2.2.3: {}
1667
1667
+
1668
1668
+
lilconfig@3.1.3: {}
1669
1669
+
1670
1670
+
lines-and-columns@1.2.4: {}
1671
1671
+
1672
1672
+
lru-cache@10.4.3: {}
1673
1673
+
1674
1674
+
lru-cache@5.1.1:
1675
1675
+
dependencies:
1676
1676
+
yallist: 3.1.1
1677
1677
+
1678
1678
+
merge-anything@5.1.7:
1679
1679
+
dependencies:
1680
1680
+
is-what: 4.1.16
1681
1681
+
1682
1682
+
merge2@1.4.1: {}
1683
1683
+
1684
1684
+
micromatch@4.0.8:
1685
1685
+
dependencies:
1686
1686
+
braces: 3.0.3
1687
1687
+
picomatch: 2.3.1
1688
1688
+
1689
1689
+
minimatch@9.0.5:
1690
1690
+
dependencies:
1691
1691
+
brace-expansion: 2.0.1
1692
1692
+
1693
1693
+
minipass@7.1.2: {}
1694
1694
+
1695
1695
+
ms@2.1.3: {}
1696
1696
+
1697
1697
+
multiformats@13.3.1: {}
1698
1698
+
1699
1699
+
multiformats@9.9.0: {}
1700
1700
+
1701
1701
+
mz@2.7.0:
1702
1702
+
dependencies:
1703
1703
+
any-promise: 1.3.0
1704
1704
+
object-assign: 4.1.1
1705
1705
+
thenify-all: 1.6.0
1706
1706
+
1707
1707
+
nanoid@3.3.8: {}
1708
1708
+
1709
1709
+
node-releases@2.0.18: {}
1710
1710
+
1711
1711
+
normalize-path@3.0.0: {}
1712
1712
+
1713
1713
+
normalize-range@0.1.2: {}
1714
1714
+
1715
1715
+
object-assign@4.1.1: {}
1716
1716
+
1717
1717
+
object-hash@3.0.0: {}
1718
1718
+
1719
1719
+
package-json-from-dist@1.0.1: {}
1720
1720
+
1721
1721
+
parse5@7.2.1:
1722
1722
+
dependencies:
1723
1723
+
entities: 4.5.0
1724
1724
+
1725
1725
+
path-key@3.1.1: {}
1726
1726
+
1727
1727
+
path-parse@1.0.7: {}
1728
1728
+
1729
1729
+
path-scurry@1.11.1:
1730
1730
+
dependencies:
1731
1731
+
lru-cache: 10.4.3
1732
1732
+
minipass: 7.1.2
1733
1733
+
1734
1734
+
picocolors@1.1.1: {}
1735
1735
+
1736
1736
+
picomatch@2.3.1: {}
1737
1737
+
1738
1738
+
pify@2.3.0: {}
1739
1739
+
1740
1740
+
pirates@4.0.6: {}
1741
1741
+
1742
1742
+
postcss-import@15.1.0(postcss@8.4.49):
1743
1743
+
dependencies:
1744
1744
+
postcss: 8.4.49
1745
1745
+
postcss-value-parser: 4.2.0
1746
1746
+
read-cache: 1.0.0
1747
1747
+
resolve: 1.22.8
1748
1748
+
1749
1749
+
postcss-js@4.0.1(postcss@8.4.49):
1750
1750
+
dependencies:
1751
1751
+
camelcase-css: 2.0.1
1752
1752
+
postcss: 8.4.49
1753
1753
+
1754
1754
+
postcss-load-config@4.0.2(postcss@8.4.49):
1755
1755
+
dependencies:
1756
1756
+
lilconfig: 3.1.3
1757
1757
+
yaml: 2.6.1
1758
1758
+
optionalDependencies:
1759
1759
+
postcss: 8.4.49
1760
1760
+
1761
1761
+
postcss-nested@6.2.0(postcss@8.4.49):
1762
1762
+
dependencies:
1763
1763
+
postcss: 8.4.49
1764
1764
+
postcss-selector-parser: 6.1.2
1765
1765
+
1766
1766
+
postcss-selector-parser@6.1.2:
1767
1767
+
dependencies:
1768
1768
+
cssesc: 3.0.0
1769
1769
+
util-deprecate: 1.0.2
1770
1770
+
1771
1771
+
postcss-value-parser@4.2.0: {}
1772
1772
+
1773
1773
+
postcss@8.4.49:
1774
1774
+
dependencies:
1775
1775
+
nanoid: 3.3.8
1776
1776
+
picocolors: 1.1.1
1777
1777
+
source-map-js: 1.2.1
1778
1778
+
1779
1779
+
queue-microtask@1.2.3: {}
1780
1780
+
1781
1781
+
read-cache@1.0.0:
1782
1782
+
dependencies:
1783
1783
+
pify: 2.3.0
1784
1784
+
1785
1785
+
readdirp@3.6.0:
1786
1786
+
dependencies:
1787
1787
+
picomatch: 2.3.1
1788
1788
+
1789
1789
+
resolve@1.22.8:
1790
1790
+
dependencies:
1791
1791
+
is-core-module: 2.15.1
1792
1792
+
path-parse: 1.0.7
1793
1793
+
supports-preserve-symlinks-flag: 1.0.0
1794
1794
+
1795
1795
+
reusify@1.0.4: {}
1796
1796
+
1797
1797
+
rollup@4.28.0:
1798
1798
+
dependencies:
1799
1799
+
'@types/estree': 1.0.6
1800
1800
+
optionalDependencies:
1801
1801
+
'@rollup/rollup-android-arm-eabi': 4.28.0
1802
1802
+
'@rollup/rollup-android-arm64': 4.28.0
1803
1803
+
'@rollup/rollup-darwin-arm64': 4.28.0
1804
1804
+
'@rollup/rollup-darwin-x64': 4.28.0
1805
1805
+
'@rollup/rollup-freebsd-arm64': 4.28.0
1806
1806
+
'@rollup/rollup-freebsd-x64': 4.28.0
1807
1807
+
'@rollup/rollup-linux-arm-gnueabihf': 4.28.0
1808
1808
+
'@rollup/rollup-linux-arm-musleabihf': 4.28.0
1809
1809
+
'@rollup/rollup-linux-arm64-gnu': 4.28.0
1810
1810
+
'@rollup/rollup-linux-arm64-musl': 4.28.0
1811
1811
+
'@rollup/rollup-linux-powerpc64le-gnu': 4.28.0
1812
1812
+
'@rollup/rollup-linux-riscv64-gnu': 4.28.0
1813
1813
+
'@rollup/rollup-linux-s390x-gnu': 4.28.0
1814
1814
+
'@rollup/rollup-linux-x64-gnu': 4.28.0
1815
1815
+
'@rollup/rollup-linux-x64-musl': 4.28.0
1816
1816
+
'@rollup/rollup-win32-arm64-msvc': 4.28.0
1817
1817
+
'@rollup/rollup-win32-ia32-msvc': 4.28.0
1818
1818
+
'@rollup/rollup-win32-x64-msvc': 4.28.0
1819
1819
+
fsevents: 2.3.3
1820
1820
+
1821
1821
+
run-parallel@1.2.0:
1822
1822
+
dependencies:
1823
1823
+
queue-microtask: 1.2.3
1824
1824
+
1825
1825
+
semver@6.3.1: {}
1826
1826
+
1827
1827
+
seroval-plugins@1.1.1(seroval@1.1.1):
1828
1828
+
dependencies:
1829
1829
+
seroval: 1.1.1
1830
1830
+
1831
1831
+
seroval@1.1.1: {}
1832
1832
+
1833
1833
+
shebang-command@2.0.0:
1834
1834
+
dependencies:
1835
1835
+
shebang-regex: 3.0.0
1836
1836
+
1837
1837
+
shebang-regex@3.0.0: {}
1838
1838
+
1839
1839
+
signal-exit@4.1.0: {}
1840
1840
+
1841
1841
+
solid-js@1.9.3:
1842
1842
+
dependencies:
1843
1843
+
csstype: 3.1.3
1844
1844
+
seroval: 1.1.1
1845
1845
+
seroval-plugins: 1.1.1(seroval@1.1.1)
1846
1846
+
1847
1847
+
solid-refresh@0.6.3(solid-js@1.9.3):
1848
1848
+
dependencies:
1849
1849
+
'@babel/generator': 7.26.2
1850
1850
+
'@babel/helper-module-imports': 7.25.9
1851
1851
+
'@babel/types': 7.26.0
1852
1852
+
solid-js: 1.9.3
1853
1853
+
transitivePeerDependencies:
1854
1854
+
- supports-color
1855
1855
+
1856
1856
+
source-map-js@1.2.1: {}
1857
1857
+
1858
1858
+
string-width@4.2.3:
1859
1859
+
dependencies:
1860
1860
+
emoji-regex: 8.0.0
1861
1861
+
is-fullwidth-code-point: 3.0.0
1862
1862
+
strip-ansi: 6.0.1
1863
1863
+
1864
1864
+
string-width@5.1.2:
1865
1865
+
dependencies:
1866
1866
+
eastasianwidth: 0.2.0
1867
1867
+
emoji-regex: 9.2.2
1868
1868
+
strip-ansi: 7.1.0
1869
1869
+
1870
1870
+
strip-ansi@6.0.1:
1871
1871
+
dependencies:
1872
1872
+
ansi-regex: 5.0.1
1873
1873
+
1874
1874
+
strip-ansi@7.1.0:
1875
1875
+
dependencies:
1876
1876
+
ansi-regex: 6.1.0
1877
1877
+
1878
1878
+
sucrase@3.35.0:
1879
1879
+
dependencies:
1880
1880
+
'@jridgewell/gen-mapping': 0.3.5
1881
1881
+
commander: 4.1.1
1882
1882
+
glob: 10.4.5
1883
1883
+
lines-and-columns: 1.2.4
1884
1884
+
mz: 2.7.0
1885
1885
+
pirates: 4.0.6
1886
1886
+
ts-interface-checker: 0.1.13
1887
1887
+
1888
1888
+
supports-preserve-symlinks-flag@1.0.0: {}
1889
1889
+
1890
1890
+
tailwindcss@3.4.16:
1891
1891
+
dependencies:
1892
1892
+
'@alloc/quick-lru': 5.2.0
1893
1893
+
arg: 5.0.2
1894
1894
+
chokidar: 3.6.0
1895
1895
+
didyoumean: 1.2.2
1896
1896
+
dlv: 1.1.3
1897
1897
+
fast-glob: 3.3.2
1898
1898
+
glob-parent: 6.0.2
1899
1899
+
is-glob: 4.0.3
1900
1900
+
jiti: 1.21.6
1901
1901
+
lilconfig: 3.1.3
1902
1902
+
micromatch: 4.0.8
1903
1903
+
normalize-path: 3.0.0
1904
1904
+
object-hash: 3.0.0
1905
1905
+
picocolors: 1.1.1
1906
1906
+
postcss: 8.4.49
1907
1907
+
postcss-import: 15.1.0(postcss@8.4.49)
1908
1908
+
postcss-js: 4.0.1(postcss@8.4.49)
1909
1909
+
postcss-load-config: 4.0.2(postcss@8.4.49)
1910
1910
+
postcss-nested: 6.2.0(postcss@8.4.49)
1911
1911
+
postcss-selector-parser: 6.1.2
1912
1912
+
resolve: 1.22.8
1913
1913
+
sucrase: 3.35.0
1914
1914
+
transitivePeerDependencies:
1915
1915
+
- ts-node
1916
1916
+
1917
1917
+
thenify-all@1.6.0:
1918
1918
+
dependencies:
1919
1919
+
thenify: 3.3.1
1920
1920
+
1921
1921
+
thenify@3.3.1:
1922
1922
+
dependencies:
1923
1923
+
any-promise: 1.3.0
1924
1924
+
1925
1925
+
tlds@1.255.0: {}
1926
1926
+
1927
1927
+
to-regex-range@5.0.1:
1928
1928
+
dependencies:
1929
1929
+
is-number: 7.0.0
1930
1930
+
1931
1931
+
ts-interface-checker@0.1.13: {}
1932
1932
+
1933
1933
+
typescript@5.6.3: {}
1934
1934
+
1935
1935
+
uint8arrays@3.0.0:
1936
1936
+
dependencies:
1937
1937
+
multiformats: 9.9.0
1938
1938
+
1939
1939
+
uint8arrays@5.1.0:
1940
1940
+
dependencies:
1941
1941
+
multiformats: 13.3.1
1942
1942
+
1943
1943
+
update-browserslist-db@1.1.1(browserslist@4.24.2):
1944
1944
+
dependencies:
1945
1945
+
browserslist: 4.24.2
1946
1946
+
escalade: 3.2.0
1947
1947
+
picocolors: 1.1.1
1948
1948
+
1949
1949
+
util-deprecate@1.0.2: {}
1950
1950
+
1951
1951
+
validate-html-nesting@1.2.2: {}
1952
1952
+
1953
1953
+
vite-plugin-solid@2.11.0(solid-js@1.9.3)(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)):
1954
1954
+
dependencies:
1955
1955
+
'@babel/core': 7.26.0
1956
1956
+
'@types/babel__core': 7.20.5
1957
1957
+
babel-preset-solid: 1.9.3(@babel/core@7.26.0)
1958
1958
+
merge-anything: 5.1.7
1959
1959
+
solid-js: 1.9.3
1960
1960
+
solid-refresh: 0.6.3(solid-js@1.9.3)
1961
1961
+
vite: 6.0.2(jiti@1.21.6)(yaml@2.6.1)
1962
1962
+
vitefu: 1.0.4(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1))
1963
1963
+
transitivePeerDependencies:
1964
1964
+
- supports-color
1965
1965
+
1966
1966
+
vite@6.0.2(jiti@1.21.6)(yaml@2.6.1):
1967
1967
+
dependencies:
1968
1968
+
esbuild: 0.24.0
1969
1969
+
postcss: 8.4.49
1970
1970
+
rollup: 4.28.0
1971
1971
+
optionalDependencies:
1972
1972
+
fsevents: 2.3.3
1973
1973
+
jiti: 1.21.6
1974
1974
+
yaml: 2.6.1
1975
1975
+
1976
1976
+
vitefu@1.0.4(vite@6.0.2(jiti@1.21.6)(yaml@2.6.1)):
1977
1977
+
optionalDependencies:
1978
1978
+
vite: 6.0.2(jiti@1.21.6)(yaml@2.6.1)
1979
1979
+
1980
1980
+
which@2.0.2:
1981
1981
+
dependencies:
1982
1982
+
isexe: 2.0.0
1983
1983
+
1984
1984
+
wrap-ansi@7.0.0:
1985
1985
+
dependencies:
1986
1986
+
ansi-styles: 4.3.0
1987
1987
+
string-width: 4.2.3
1988
1988
+
strip-ansi: 6.0.1
1989
1989
+
1990
1990
+
wrap-ansi@8.1.0:
1991
1991
+
dependencies:
1992
1992
+
ansi-styles: 6.2.1
1993
1993
+
string-width: 5.1.2
1994
1994
+
strip-ansi: 7.1.0
1995
1995
+
1996
1996
+
yallist@3.1.1: {}
1997
1997
+
1998
1998
+
yaml@2.6.1: {}
1999
1999
+
2000
2000
+
zod@3.23.8: {}
+6
postcss.config.js
reviewed
···
1
1
+
export default {
2
2
+
plugins: {
3
3
+
tailwindcss: {},
4
4
+
autoprefixer: {},
5
5
+
},
6
6
+
}
+26
src/components/layout.tsx
reviewed
···
1
1
+
import { ParentComponent } from "solid-js";
2
2
+
3
3
+
//relative z-10 mx-auto flex min-h-dvh max-w-xl flex-col-reverse
4
4
+
5
5
+
const Layout: ParentComponent = (props) => {
6
6
+
return (
7
7
+
<div class="max-w-xl mx-auto">
8
8
+
<div class="min-h-dvh mx-2 p-4 bg-white shadow-xl">
9
9
+
<header>
10
10
+
<h1>ATProto</h1>
11
11
+
</header>
12
12
+
<main>{props.children}</main>
13
13
+
<footer>
14
14
+
<div class="credit">
15
15
+
💕{" "}
16
16
+
<a target="_blank" href="https://bsky.app/profile/lukeacl.com">
17
17
+
@lukeacl.com
18
18
+
</a>
19
19
+
</div>
20
20
+
</footer>
21
21
+
</div>
22
22
+
</div>
23
23
+
);
24
24
+
};
25
25
+
26
26
+
export default Layout;
+77
src/index.css
reviewed
···
1
1
+
@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Yusei+Magic&display=swap");
2
2
+
3
3
+
@tailwind base;
4
4
+
@tailwind components;
5
5
+
@tailwind utilities;
6
6
+
7
7
+
:root {
8
8
+
@apply min-h-dvh bg-slate-100 text-gray-800;
9
9
+
font-family: "Open Sans", sans-serif;
10
10
+
}
11
11
+
12
12
+
header,
13
13
+
main {
14
14
+
@apply mb-4;
15
15
+
}
16
16
+
17
17
+
h1 {
18
18
+
@apply text-xl font-medium;
19
19
+
}
20
20
+
21
21
+
h2 {
22
22
+
@apply text-lg font-semibold;
23
23
+
}
24
24
+
25
25
+
h3 {
26
26
+
@apply text-sm font-medium text-gray-400;
27
27
+
}
28
28
+
29
29
+
h4 {
30
30
+
@apply text-sm font-medium;
31
31
+
}
32
32
+
33
33
+
pre {
34
34
+
@apply text-xs font-mono bg-slate-100 p-2 text-wrap rounded;
35
35
+
}
36
36
+
37
37
+
section header {
38
38
+
@apply pb-1 border-b-2;
39
39
+
}
40
40
+
41
41
+
section main {
42
42
+
@apply pb-4 border-b-2;
43
43
+
}
44
44
+
45
45
+
section main h4 {
46
46
+
@apply mb-2;
47
47
+
}
48
48
+
49
49
+
footer .credit {
50
50
+
@apply text-xs opacity-50;
51
51
+
}
52
52
+
53
53
+
.form-group {
54
54
+
@apply mb-2;
55
55
+
}
56
56
+
57
57
+
.form-label {
58
58
+
@apply block
59
59
+
text-sm font-semibold mb-1;
60
60
+
}
61
61
+
62
62
+
.form-input {
63
63
+
@apply block w-full p-2
64
64
+
bg-gray-50
65
65
+
border border-gray-300 rounded
66
66
+
text-gray-900 text-sm
67
67
+
focus:ring-blue-500 focus:border-blue-500;
68
68
+
}
69
69
+
70
70
+
.form-button {
71
71
+
@apply w-full px-4 py-2
72
72
+
text-white font-medium text-sm text-center
73
73
+
bg-blue-700 hover:bg-blue-800
74
74
+
focus:ring-4 focus:outline-none focus:ring-blue-300
75
75
+
rounded
76
76
+
sm:w-auto;
77
77
+
}
+20
src/index.tsx
reviewed
···
1
1
+
/* @refresh reload */
2
2
+
import "./index.css";
3
3
+
4
4
+
import { Router, Route } from "@solidjs/router";
5
5
+
import { render } from "solid-js/web";
6
6
+
7
7
+
import Layout from "./components/layout";
8
8
+
9
9
+
import DIDWeb from "./pages/did-web";
10
10
+
11
11
+
const root = document.getElementById("root");
12
12
+
13
13
+
render(
14
14
+
() => (
15
15
+
<Router root={Layout}>
16
16
+
<Route path="/" component={DIDWeb} />
17
17
+
</Router>
18
18
+
),
19
19
+
root!,
20
20
+
);
+657
src/pages/did-web.tsx
reviewed
···
1
1
+
import { AtpAgent } from "@atproto/api";
2
2
+
import { Secp256k1Keypair } from "@atproto/crypto";
3
3
+
import { createEffect, createSignal } from "solid-js";
4
4
+
import {} from "solid-js";
5
5
+
import * as ui8 from "uint8arrays";
6
6
+
7
7
+
const DIDWeb = () => {
8
8
+
const [showDebug] = createSignal(false);
9
9
+
const [skipDIDFileChecks] = createSignal(false);
10
10
+
const [step, setStep] = createSignal(1);
11
11
+
12
12
+
const showError = (message: string) => {
13
13
+
alert(message);
14
14
+
};
15
15
+
16
16
+
const [privateKey, setPrivateKey] = createSignal("");
17
17
+
const [publicKey, setPublicKey] = createSignal("");
18
18
+
const generatePrivateKey = async (event: Event) => {
19
19
+
event.preventDefault();
20
20
+
const keyPair = await Secp256k1Keypair.create({ exportable: true });
21
21
+
const privateKeyBytes = await keyPair.export();
22
22
+
const privateKeyHex = ui8.toString(privateKeyBytes, "hex");
23
23
+
setPrivateKey(privateKeyHex);
24
24
+
};
25
25
+
const validatePrivateKey = async (event: Event) => {
26
26
+
event.preventDefault();
27
27
+
if (privateKey().trim() === "")
28
28
+
return showError("You must specify a private key.");
29
29
+
try {
30
30
+
const keyPair = await Secp256k1Keypair.import(privateKey());
31
31
+
setPublicKey(keyPair.did());
32
32
+
setStep(step() + 1);
33
33
+
} catch (error) {
34
34
+
showError(`Invalid private key provided.`);
35
35
+
console.log(`${error}`);
36
36
+
}
37
37
+
};
38
38
+
39
39
+
const [pdsEndpoint, setPDSEndpoint] = createSignal("");
40
40
+
const [domain, setDomain] = createSignal("");
41
41
+
const [handle, setHandle] = createSignal("");
42
42
+
const [didFileLocation, setDidFileLocation] = createSignal("");
43
43
+
const [didFile, setDidFile] = createSignal("");
44
44
+
const validateIdentity = async (event: Event) => {
45
45
+
event.preventDefault();
46
46
+
if (pdsEndpoint().trim() === "")
47
47
+
return showError("You must specify the endpoint for your PDS.");
48
48
+
if (domain().trim() === "") return showError("You must specify a domain.");
49
49
+
if (handle().trim() === "") return showError("You must specify a handle.");
50
50
+
setStep(step() + 1);
51
51
+
};
52
52
+
createEffect(() => {
53
53
+
setDidFileLocation(`https://${domain()}/.well-known/did.json`);
54
54
+
try {
55
55
+
setDidFile(
56
56
+
JSON.stringify(
57
57
+
{
58
58
+
"@context": [
59
59
+
"https://www.w3.org/ns/did/v1",
60
60
+
"https://w3id.org/security/multikey/v1",
61
61
+
"https://w3id.org/security/suites/secp256k1-2019/v1",
62
62
+
],
63
63
+
id: `did:web:${domain()}`,
64
64
+
alsoKnownAs: [`at://${handle()}`],
65
65
+
verificationMethod: [
66
66
+
{
67
67
+
id: `did:web:${domain()}#atproto`,
68
68
+
type: "Multikey",
69
69
+
controller: `did:web:${domain()}`,
70
70
+
publicKeyMultibase: `${publicKey().split(":")[2]}`,
71
71
+
},
72
72
+
],
73
73
+
service: [
74
74
+
{
75
75
+
id: "#atproto_pds",
76
76
+
type: "AtprotoPersonalDataServer",
77
77
+
serviceEndpoint: `https://${new URL(pdsEndpoint()).hostname}`,
78
78
+
},
79
79
+
],
80
80
+
},
81
81
+
null,
82
82
+
"\t",
83
83
+
),
84
84
+
);
85
85
+
} catch (error) {}
86
86
+
});
87
87
+
88
88
+
const validateDIDFile = async (event: Event) => {
89
89
+
event.preventDefault();
90
90
+
try {
91
91
+
const response = await fetch(didFileLocation());
92
92
+
const json = await response.json();
93
93
+
const didFileMatches =
94
94
+
JSON.stringify(json) == JSON.stringify(JSON.parse(didFile()));
95
95
+
if (didFileMatches === false && skipDIDFileChecks() === false)
96
96
+
return showError(
97
97
+
"DID file validation failed. Check its contents and try again.",
98
98
+
);
99
99
+
setStep(step() + 1);
100
100
+
} catch (error) {
101
101
+
showError(`${error}`);
102
102
+
console.log(`${error}`);
103
103
+
}
104
104
+
};
105
105
+
106
106
+
const [email, setEmail] = createSignal("");
107
107
+
const [password, setPassword] = createSignal("");
108
108
+
const [inviteCode, setInviteCode] = createSignal("");
109
109
+
const [accessJWT, setAccessJWT] = createSignal("");
110
110
+
const [refreshJWT, setRefreshJWT] = createSignal("");
111
111
+
const [updatedDIDFile, setUpdatedDIDFile] = createSignal("");
112
112
+
const createAccount = async (event: Event) => {
113
113
+
event.preventDefault();
114
114
+
if (email().trim() === "") return showError("You must specify your email.");
115
115
+
if (password().trim() === "")
116
116
+
return showError("You must specify a password.");
117
117
+
try {
118
118
+
const header = JSON.stringify({
119
119
+
alg: "ES256K",
120
120
+
typ: "JWT",
121
121
+
});
122
122
+
const headerEncoded = ui8.toString(ui8.fromString(header), "base64url");
123
123
+
124
124
+
const payload = JSON.stringify({
125
125
+
lxm: "com.atproto.server.createAccount",
126
126
+
iss: `did:web:${domain()}`,
127
127
+
aud: `did:web:${new URL(pdsEndpoint()).hostname}`,
128
128
+
exp: Math.floor(Date.now() / 1000) + 180,
129
129
+
});
130
130
+
const payloadEncoded = ui8.toString(ui8.fromString(payload), "base64url");
131
131
+
132
132
+
const headerDotPayloadEncoded = `${headerEncoded}.${payloadEncoded}`;
133
133
+
134
134
+
const keyPair = await Secp256k1Keypair.import(privateKey());
135
135
+
136
136
+
const signature = await keyPair.sign(
137
137
+
ui8.fromString(headerDotPayloadEncoded),
138
138
+
);
139
139
+
const signatureEncoded = ui8.toString(signature, "base64url");
140
140
+
141
141
+
const token = `${headerDotPayloadEncoded}.${signatureEncoded}`;
142
142
+
143
143
+
const agent = new AtpAgent({ service: pdsEndpoint() });
144
144
+
const response = await agent.com.atproto.server.createAccount(
145
145
+
{
146
146
+
did: `did:web:${domain()}`,
147
147
+
handle: handle(),
148
148
+
email: email(),
149
149
+
password: password(),
150
150
+
recoveryKey: `${publicKey().split(":")[2]}`,
151
151
+
...(inviteCode() !== "" ? { inviteCode: inviteCode() } : {}),
152
152
+
},
153
153
+
{
154
154
+
headers: {
155
155
+
Authorization: `Bearer ${token}`,
156
156
+
},
157
157
+
},
158
158
+
);
159
159
+
160
160
+
console.log(response);
161
161
+
162
162
+
setAccessJWT(response.data.accessJwt);
163
163
+
setRefreshJWT(response.data.refreshJwt);
164
164
+
setStep(step() + 1);
165
165
+
} catch (error) {
166
166
+
showError(`${error}`);
167
167
+
console.log(`${error}`);
168
168
+
}
169
169
+
};
170
170
+
createEffect(async () => {
171
171
+
if (accessJWT() === "") return;
172
172
+
if (refreshJWT() === "") return;
173
173
+
if (updatedDIDFile() !== "") return;
174
174
+
try {
175
175
+
const agent = new AtpAgent({ service: pdsEndpoint() });
176
176
+
await agent.login({
177
177
+
identifier: `did:web:${domain()}`,
178
178
+
password: password(),
179
179
+
});
180
180
+
const response =
181
181
+
await agent.com.atproto.identity.getRecommendedDidCredentials();
182
182
+
if (!response.data.verificationMethods)
183
183
+
throw new Error("Verification methods not found.");
184
184
+
type VerificationMethods = {
185
185
+
atproto: string;
186
186
+
};
187
187
+
const verificationMethods: VerificationMethods = response.data
188
188
+
.verificationMethods as VerificationMethods;
189
189
+
setUpdatedDIDFile(
190
190
+
JSON.stringify(
191
191
+
{
192
192
+
"@context": [
193
193
+
"https://www.w3.org/ns/did/v1",
194
194
+
"https://w3id.org/security/multikey/v1",
195
195
+
"https://w3id.org/security/suites/secp256k1-2019/v1",
196
196
+
],
197
197
+
id: `did:web:${domain()}`,
198
198
+
alsoKnownAs: [`at://${handle()}`],
199
199
+
verificationMethod: [
200
200
+
{
201
201
+
id: `did:web:${domain()}#atproto`,
202
202
+
type: "Multikey",
203
203
+
controller: `did:web:${domain()}`,
204
204
+
publicKeyMultibase: `${verificationMethods.atproto.split(":")[2]}`,
205
205
+
},
206
206
+
],
207
207
+
service: [
208
208
+
{
209
209
+
id: "#atproto_pds",
210
210
+
type: "AtprotoPersonalDataServer",
211
211
+
serviceEndpoint: `https://${new URL(pdsEndpoint()).hostname}`,
212
212
+
},
213
213
+
],
214
214
+
},
215
215
+
null,
216
216
+
"\t",
217
217
+
),
218
218
+
);
219
219
+
} catch (error) {
220
220
+
showError(`${error}`);
221
221
+
console.log(`${error}`);
222
222
+
}
223
223
+
});
224
224
+
225
225
+
const validateUpdatedDIDFile = async (event: Event) => {
226
226
+
event.preventDefault();
227
227
+
try {
228
228
+
const response = await fetch(didFileLocation());
229
229
+
const json = await response.json();
230
230
+
const didFileMatches =
231
231
+
JSON.stringify(json) == JSON.stringify(JSON.parse(updatedDIDFile()));
232
232
+
if (didFileMatches === false && skipDIDFileChecks() === false)
233
233
+
return showError(
234
234
+
"Updated DID file validation failed. Check its contents and try again.",
235
235
+
);
236
236
+
setStep(step() + 1);
237
237
+
} catch (error) {
238
238
+
showError(`${error}`);
239
239
+
console.log(`${error}`);
240
240
+
}
241
241
+
};
242
242
+
243
243
+
const activateAccount = async (event: Event) => {
244
244
+
event.preventDefault();
245
245
+
try {
246
246
+
const agent = new AtpAgent({ service: pdsEndpoint() });
247
247
+
await agent.login({
248
248
+
identifier: `did:web:${domain()}`,
249
249
+
password: password(),
250
250
+
});
251
251
+
const response = await agent.com.atproto.server.activateAccount();
252
252
+
if (response.success === true) {
253
253
+
setStep(step() + 1);
254
254
+
} else {
255
255
+
throw new Error("Could not activate account.");
256
256
+
}
257
257
+
} catch (error) {
258
258
+
showError(`${error}`);
259
259
+
console.log(`${error}`);
260
260
+
}
261
261
+
};
262
262
+
263
263
+
return (
264
264
+
<section>
265
265
+
<header>
266
266
+
<h2>did:web</h2>
267
267
+
<h3>setup a did:web for use on ATProto</h3>
268
268
+
</header>
269
269
+
<main>
270
270
+
{showDebug() === true && (
271
271
+
<div class="p-1 mb-2 bg-sky-100 shadow rounded text-xs overflow-clip">
272
272
+
<p>Private Key: {privateKey()}</p>
273
273
+
<p>Public Key: {publicKey()}</p>
274
274
+
<p>PDS Endpoint: {pdsEndpoint()}</p>
275
275
+
<p>Domain: {domain()}</p>
276
276
+
<p>Handle: {handle()}</p>
277
277
+
<p>DID File Location: {didFileLocation()}</p>
278
278
+
<p>DID File: {didFile().length} bytes</p>
279
279
+
<p>Email: {email()}</p>
280
280
+
<p>Password: {password()}</p>
281
281
+
<p>Invite Code: {inviteCode()}</p>
282
282
+
<p>Access JWT: {accessJWT()}</p>
283
283
+
<p>Refresh JWT: {refreshJWT()}</p>
284
284
+
</div>
285
285
+
)}
286
286
+
287
287
+
{step() === 1 && (
288
288
+
<div>
289
289
+
<h4>{step()}. Introduction</h4>
290
290
+
<p class="text-xs mb-2">
291
291
+
This tool has been designed to assist in the creation of a did:web
292
292
+
based account on a self hosted PDS. All operations are performed
293
293
+
client side on your device, with only necessary outgoing network
294
294
+
calls made to your web server to validate did.json files, and to
295
295
+
the PDS to create and activate your account. No private data you
296
296
+
provide is stored or shared. If you refresh this page it will
297
297
+
reset the process.
298
298
+
</p>
299
299
+
<div class="form">
300
300
+
<div class="text-right">
301
301
+
<button class="form-button" onClick={() => setStep(step() + 1)}>
302
302
+
Next
303
303
+
</button>
304
304
+
</div>
305
305
+
</div>
306
306
+
</div>
307
307
+
)}
308
308
+
309
309
+
{step() === 2 && (
310
310
+
<div>
311
311
+
<h4>{step()}. Private Key</h4>
312
312
+
<p class="text-xs mb-2">
313
313
+
Generate a new hex encoded private key or specify an existing one.
314
314
+
Once generated you should probably hold onto it just in case this
315
315
+
process is interrupted and you need to resume it. Treat it like a
316
316
+
password and don't share it with anyone.
317
317
+
</p>
318
318
+
<div class="form">
319
319
+
<div class="form-group">
320
320
+
<label for="privateKey" class="form-label">
321
321
+
Private Key
322
322
+
</label>
323
323
+
<input
324
324
+
type="text"
325
325
+
id="privateKey"
326
326
+
class="form-input font-mono"
327
327
+
autocorrect="off"
328
328
+
placeholder="abcd1234567890efghj1234567890kmn1234567890opqrst1234567890uvwxyz"
329
329
+
value={privateKey()}
330
330
+
onKeyUp={(e) =>
331
331
+
setPrivateKey((e.target as HTMLInputElement).value)
332
332
+
}
333
333
+
/>
334
334
+
</div>
335
335
+
<div class="text-right">
336
336
+
{privateKey() === "" ? (
337
337
+
<button class="form-button" onClick={generatePrivateKey}>
338
338
+
Generate
339
339
+
</button>
340
340
+
) : (
341
341
+
<button class="form-button" onClick={validatePrivateKey}>
342
342
+
Next
343
343
+
</button>
344
344
+
)}
345
345
+
</div>
346
346
+
</div>
347
347
+
</div>
348
348
+
)}
349
349
+
350
350
+
{step() === 3 && (
351
351
+
<div>
352
352
+
<h4>{step()}. Identity</h4>
353
353
+
<p class="text-xs mb-2">
354
354
+
Enter the details for your PDS and your new identity.
355
355
+
</p>
356
356
+
<div class="form">
357
357
+
<div class="form-group">
358
358
+
<label for="pdsEndpoint" class="form-label">
359
359
+
PDS Endpoint
360
360
+
</label>
361
361
+
<input
362
362
+
type="text"
363
363
+
id="pdsEndpoint"
364
364
+
class="form-input font-mono"
365
365
+
autocorrect="off"
366
366
+
placeholder="https://pds.example.com"
367
367
+
value={pdsEndpoint()}
368
368
+
onKeyUp={(e) =>
369
369
+
setPDSEndpoint((e.target as HTMLInputElement).value)
370
370
+
}
371
371
+
/>
372
372
+
</div>
373
373
+
<div class="form-group">
374
374
+
<label for="domain" class="form-label">
375
375
+
Domain
376
376
+
</label>
377
377
+
<input
378
378
+
type="text"
379
379
+
id="domain"
380
380
+
class="form-input font-mono"
381
381
+
autocorrect="off"
382
382
+
placeholder="example.com"
383
383
+
value={domain()}
384
384
+
onKeyUp={(e) =>
385
385
+
setDomain((e.target as HTMLInputElement).value)
386
386
+
}
387
387
+
/>
388
388
+
</div>
389
389
+
<div class="form-group">
390
390
+
<label for="handle" class="form-label">
391
391
+
Handle
392
392
+
</label>
393
393
+
<input
394
394
+
type="text"
395
395
+
id="handle"
396
396
+
class="form-input font-mono"
397
397
+
autocorrect="off"
398
398
+
placeholder="handle.pds.example.com"
399
399
+
value={handle()}
400
400
+
onKeyUp={(e) =>
401
401
+
setHandle((e.target as HTMLInputElement).value)
402
402
+
}
403
403
+
/>
404
404
+
</div>
405
405
+
<div class="text-right">
406
406
+
<button class="form-button" onClick={validateIdentity}>
407
407
+
Next
408
408
+
</button>
409
409
+
</div>
410
410
+
</div>
411
411
+
</div>
412
412
+
)}
413
413
+
414
414
+
{step() === 4 && (
415
415
+
<div>
416
416
+
<h4>{step()}. DID File</h4>
417
417
+
<p class="text-xs mb-2">
418
418
+
Upload the JSON below to the did.json URL specified. You can click
419
419
+
that URL to make sure it's resolving correctly before continuing.
420
420
+
</p>
421
421
+
<div class="form">
422
422
+
<div class="form-group">
423
423
+
<p class="font-xs text-sky-700 mb-1">
424
424
+
<a target="_blank" href={didFileLocation()}>
425
425
+
{didFileLocation()}
426
426
+
</a>
427
427
+
</p>
428
428
+
<pre>{didFile()}</pre>
429
429
+
</div>
430
430
+
<div class="text-right">
431
431
+
<button class="form-button" onClick={validateDIDFile}>
432
432
+
Next
433
433
+
</button>
434
434
+
</div>
435
435
+
</div>
436
436
+
</div>
437
437
+
)}
438
438
+
439
439
+
{step() === 5 && (
440
440
+
<div>
441
441
+
<h4>{step()}. Create Account</h4>
442
442
+
<p class="text-xs mb-2">
443
443
+
To create an account we'll need some extra information. For now
444
444
+
use a temporary password which you can change later. It's going to
445
445
+
be shown in plain text and provided to you again later in plain
446
446
+
text so don't use something super secret.'
447
447
+
</p>
448
448
+
<div class="form">
449
449
+
<div class="form-group">
450
450
+
<label for="email" class="form-label">
451
451
+
Email
452
452
+
</label>
453
453
+
<input
454
454
+
type="text"
455
455
+
id="email"
456
456
+
class="form-input font-mono"
457
457
+
autocorrect="off"
458
458
+
placeholder="hello@example.com"
459
459
+
value={email()}
460
460
+
onKeyUp={(e) =>
461
461
+
setEmail((e.target as HTMLInputElement).value)
462
462
+
}
463
463
+
/>
464
464
+
</div>
465
465
+
<div class="form-group">
466
466
+
<label for="password" class="form-label">
467
467
+
Password
468
468
+
</label>
469
469
+
<input
470
470
+
type="text"
471
471
+
id="password"
472
472
+
class="form-input font-mono"
473
473
+
autocorrect="off"
474
474
+
placeholder="secret123"
475
475
+
value={password()}
476
476
+
onKeyUp={(e) =>
477
477
+
setPassword((e.target as HTMLInputElement).value)
478
478
+
}
479
479
+
/>
480
480
+
</div>
481
481
+
<div class="form-group">
482
482
+
<label for="inviteCode" class="form-label">
483
483
+
Invite Code (if applicable)
484
484
+
</label>
485
485
+
<input
486
486
+
type="text"
487
487
+
id="inviteCode"
488
488
+
class="form-input font-mono"
489
489
+
autocorrect="off"
490
490
+
placeholder={`pds-example-com-djyw4-aubhs`}
491
491
+
value={inviteCode()}
492
492
+
onKeyUp={(e) =>
493
493
+
setInviteCode((e.target as HTMLInputElement).value)
494
494
+
}
495
495
+
/>
496
496
+
</div>
497
497
+
<p class="mb-2 text-xs">
498
498
+
If you're using a custom domain, you'll need to create a TXT
499
499
+
record with the following details. You won't be able to create
500
500
+
your account with a custom domain until you complete this step.
501
501
+
</p>
502
502
+
<div class="form-group">
503
503
+
<label for="dnsHost" class="form-label">
504
504
+
DNS Host (if required)
505
505
+
</label>
506
506
+
<input
507
507
+
type="text"
508
508
+
id="dnsHost"
509
509
+
class="form-input font-mono"
510
510
+
autocorrect="off"
511
511
+
value={`_atproto.${handle()}`}
512
512
+
readOnly={true}
513
513
+
/>
514
514
+
</div>
515
515
+
<div class="form-group">
516
516
+
<label for="dnsValue" class="form-label">
517
517
+
DNS Value (if required)
518
518
+
</label>
519
519
+
<input
520
520
+
type="text"
521
521
+
id="dnsValue"
522
522
+
class="form-input font-mono"
523
523
+
autocorrect="off"
524
524
+
value={`did=did:web:${handle()}`}
525
525
+
readOnly={true}
526
526
+
/>
527
527
+
</div>
528
528
+
<div class="text-right">
529
529
+
<button class="form-button" onClick={createAccount}>
530
530
+
Next
531
531
+
</button>
532
532
+
</div>
533
533
+
</div>
534
534
+
</div>
535
535
+
)}
536
536
+
537
537
+
{step() === 6 && (
538
538
+
<div>
539
539
+
<h4>{step()}. Updated DID File</h4>
540
540
+
<p class="text-xs mb-2">
541
541
+
Upload the updated JSON below to the did.json URL specified below,
542
542
+
it's the same as last time. You can click that URL to make sure
543
543
+
it's resolving correctly with the new information before
544
544
+
continuing.
545
545
+
</p>
546
546
+
<div class="form">
547
547
+
{updatedDIDFile() === "" ? (
548
548
+
<p>Loading...</p>
549
549
+
) : (
550
550
+
<>
551
551
+
<div class="form-group">
552
552
+
<p class="font-xs text-sky-700 mb-1">
553
553
+
<a target="_blank" href={didFileLocation()}>
554
554
+
{didFileLocation()}
555
555
+
</a>
556
556
+
</p>
557
557
+
<pre>{updatedDIDFile()}</pre>
558
558
+
</div>
559
559
+
<div class="text-right">
560
560
+
<button
561
561
+
class="form-button"
562
562
+
onClick={validateUpdatedDIDFile}
563
563
+
>
564
564
+
Next
565
565
+
</button>
566
566
+
</div>
567
567
+
</>
568
568
+
)}
569
569
+
</div>
570
570
+
</div>
571
571
+
)}
572
572
+
573
573
+
{step() === 7 && (
574
574
+
<div>
575
575
+
<h4>{step()}. Activate Account</h4>
576
576
+
<div class="form">
577
577
+
<p class="mb-2 text-xs">
578
578
+
Everything should be in place to activate your account for use.
579
579
+
Cross your fingers and hit next.
580
580
+
</p>
581
581
+
<div class="text-right">
582
582
+
<button class="form-button" onClick={activateAccount}>
583
583
+
Next
584
584
+
</button>
585
585
+
</div>
586
586
+
</div>
587
587
+
</div>
588
588
+
)}
589
589
+
590
590
+
{step() === 8 && (
591
591
+
<div>
592
592
+
<h4>Success!</h4>
593
593
+
<p class="mb-2 text-xs">
594
594
+
Your new account was successfully activated with the details below
595
595
+
and is ready to use! Don't forget to change your password when you
596
596
+
first login.
597
597
+
</p>
598
598
+
<div class="form-group">
599
599
+
<label for="pdsEndpoint" class="form-label">
600
600
+
PDS Endpoint
601
601
+
</label>
602
602
+
<input
603
603
+
type="text"
604
604
+
id="pdsEndpoint"
605
605
+
class="form-input font-mono"
606
606
+
autocorrect="off"
607
607
+
value={pdsEndpoint()}
608
608
+
readOnly={true}
609
609
+
/>
610
610
+
</div>
611
611
+
<div class="form-group">
612
612
+
<label for="did" class="form-label">
613
613
+
DID
614
614
+
</label>
615
615
+
<input
616
616
+
type="text"
617
617
+
id="did"
618
618
+
class="form-input font-mono"
619
619
+
autocorrect="off"
620
620
+
value={`did:web:${handle()}`}
621
621
+
readOnly={true}
622
622
+
/>
623
623
+
</div>
624
624
+
<div class="form-group">
625
625
+
<label for="handle" class="form-label">
626
626
+
Handle
627
627
+
</label>
628
628
+
<input
629
629
+
type="text"
630
630
+
id="handle"
631
631
+
class="form-input font-mono"
632
632
+
autocorrect="off"
633
633
+
value={handle()}
634
634
+
readOnly={true}
635
635
+
/>
636
636
+
</div>
637
637
+
<div class="form-group">
638
638
+
<label for="password" class="form-label">
639
639
+
Password
640
640
+
</label>
641
641
+
<input
642
642
+
type="text"
643
643
+
id="password"
644
644
+
class="form-input font-mono"
645
645
+
autocorrect="off"
646
646
+
value={password()}
647
647
+
readOnly={true}
648
648
+
/>
649
649
+
</div>
650
650
+
</div>
651
651
+
)}
652
652
+
</main>
653
653
+
</section>
654
654
+
);
655
655
+
};
656
656
+
657
657
+
export default DIDWeb;
+1
src/vite-env.d.ts
reviewed
···
1
1
+
/// <reference types="vite/client" />
+8
tailwind.config.js
reviewed
···
1
1
+
/** @type {import("tailwindcss").Config} */
2
2
+
export default {
3
3
+
content: ["./src/**/*.{js,jsx,ts,tsx}"],
4
4
+
theme: {
5
5
+
extend: {},
6
6
+
},
7
7
+
plugins: [],
8
8
+
};
+27
tsconfig.app.json
reviewed
···
1
1
+
{
2
2
+
"compilerOptions": {
3
3
+
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
4
+
"target": "ES2020",
5
5
+
"useDefineForClassFields": true,
6
6
+
"module": "ESNext",
7
7
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
8
8
+
"skipLibCheck": true,
9
9
+
10
10
+
/* Bundler mode */
11
11
+
"moduleResolution": "bundler",
12
12
+
"allowImportingTsExtensions": true,
13
13
+
"isolatedModules": true,
14
14
+
"moduleDetection": "force",
15
15
+
"noEmit": true,
16
16
+
"jsx": "preserve",
17
17
+
"jsxImportSource": "solid-js",
18
18
+
19
19
+
/* Linting */
20
20
+
"strict": true,
21
21
+
"noUnusedLocals": true,
22
22
+
"noUnusedParameters": true,
23
23
+
"noFallthroughCasesInSwitch": true,
24
24
+
"noUncheckedSideEffectImports": true
25
25
+
},
26
26
+
"include": ["src"]
27
27
+
}
+7
tsconfig.json
reviewed
···
1
1
+
{
2
2
+
"files": [],
3
3
+
"references": [
4
4
+
{ "path": "./tsconfig.app.json" },
5
5
+
{ "path": "./tsconfig.node.json" }
6
6
+
]
7
7
+
}
+24
tsconfig.node.json
reviewed
···
1
1
+
{
2
2
+
"compilerOptions": {
3
3
+
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
4
+
"target": "ES2022",
5
5
+
"lib": ["ES2023"],
6
6
+
"module": "ESNext",
7
7
+
"skipLibCheck": true,
8
8
+
9
9
+
/* Bundler mode */
10
10
+
"moduleResolution": "bundler",
11
11
+
"allowImportingTsExtensions": true,
12
12
+
"isolatedModules": true,
13
13
+
"moduleDetection": "force",
14
14
+
"noEmit": true,
15
15
+
16
16
+
/* Linting */
17
17
+
"strict": true,
18
18
+
"noUnusedLocals": true,
19
19
+
"noUnusedParameters": true,
20
20
+
"noFallthroughCasesInSwitch": true,
21
21
+
"noUncheckedSideEffectImports": true
22
22
+
},
23
23
+
"include": ["vite.config.ts"]
24
24
+
}
+6
vite.config.ts
reviewed
···
1
1
+
import { defineConfig } from "vite";
2
2
+
import solid from "vite-plugin-solid";
3
3
+
4
4
+
export default defineConfig({
5
5
+
plugins: [solid()],
6
6
+
});