server/blobs/did:web:invalid/cat
server/blobs/did:web:invalid/cat
This is a binary file and will not be displayed.
+11
server/blobs/did:web:invalid/hello
+11
server/blobs/did:web:invalid/hello
+19
server/blobs/did:web:invalid/root
+19
server/blobs/did:web:invalid/root
···
1
+
<!DOCTYPE html>
2
+
<html lang="en">
3
+
<head>
4
+
<meta charset="UTF-8" />
5
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+
<title>did:web:invalid from cdn</title>
7
+
</head>
8
+
<body>
9
+
this site is served from the cdn.<br />
10
+
all pages:
11
+
<ul>
12
+
<li><a href="404-page-here">404</a></li>
13
+
<li><a href="/">::</a></li>
14
+
<li><a href="/hello.html">::hello.html</a></li>
15
+
<li><a href="/cat.png">::cat.png</a></li>
16
+
<li><a href="/styles.css">::styles.css</a></li>
17
+
</ul>
18
+
</body>
19
+
</html>
+11
server/blobs/did:web:invalid/this_is_a_cid
+11
server/blobs/did:web:invalid/this_is_a_cid
+7
-3
server/deno.json
+7
-3
server/deno.json
···
1
1
{
2
2
"tasks": {
3
-
"dev": "deno run --watch --allow-net --allow-env --env-file src/index.ts",
4
-
"lexgen": "deno run --allow-env --allow-sys --allow-read=.. --allow-write=./src/lexicons --no-prompt @atcute/lex-cli generate -c ./lex.config.js && cat ./src/lexicons/index.ts | sed \"s/.js/.ts/\" > ./src/lexicons/index.ts"
3
+
"dev": "deno run --watch --allow-net --allow-env --allow-sys --allow-read=/usr/bin/ldd,./blobs --allow-write=./blobs --allow-ffi --env-file src/index.ts",
4
+
"lexgen": "deno run --allow-env --allow-sys --allow-read=.. --allow-write=./src/lexicons --no-prompt @atcute/lex-cli generate -c ./lex.config.js && cat ./src/lexicons/index.ts | sed \"s/.js/.ts/\" > ./src/lexicons/index.ts",
5
+
"dk": "deno run -A --node-modules-dir npm:drizzle-kit"
5
6
},
6
7
"imports": {
7
8
"@atcute/identity-resolver": "npm:@atcute/identity-resolver@^1.1.3",
8
9
"@atcute/atproto": "npm:@atcute/atproto@^3.1.4",
9
10
"@atcute/client": "npm:@atcute/client@^4.0.3",
10
11
"@atcute/lex-cli": "npm:@atcute/lex-cli@^2.2.0",
11
-
"@atcute/lexicons": "npm:@atcute/lexicons@^1.1.1"
12
+
"@atcute/lexicons": "npm:@atcute/lexicons@^1.1.1",
13
+
"@libsql/client": "npm:@libsql/client@^0.15.15",
14
+
"drizzle-kit": "npm:drizzle-kit@^0.31.5",
15
+
"drizzle-orm": "npm:drizzle-orm@^0.44.6"
12
16
},
13
17
"unstable": ["raw-imports"]
14
18
}
+548
-2
server/deno.lock
+548
-2
server/deno.lock
···
5
5
"npm:@atcute/client@^4.0.3": "4.0.3",
6
6
"npm:@atcute/identity-resolver@^1.1.3": "1.1.3_@atcute+identity@1.1.0",
7
7
"npm:@atcute/lex-cli@^2.2.0": "2.2.0_@badrap+valita@0.4.6",
8
-
"npm:@atcute/lexicons@^1.1.1": "1.1.1"
8
+
"npm:@atcute/lexicons@^1.1.1": "1.1.1",
9
+
"npm:@libsql/client@~0.15.15": "0.15.15",
10
+
"npm:drizzle-kit@*": "0.31.5_esbuild@0.25.10",
11
+
"npm:drizzle-kit@~0.31.5": "0.31.5_esbuild@0.25.10",
12
+
"npm:drizzle-orm@~0.44.6": "0.44.6_@libsql+client@0.15.15"
9
13
},
10
14
"npm": {
11
15
"@atcute/atproto@3.1.4": {
···
69
73
"@badrap/valita@0.4.6": {
70
74
"integrity": "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg=="
71
75
},
76
+
"@drizzle-team/brocli@0.10.2": {
77
+
"integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="
78
+
},
79
+
"@esbuild-kit/core-utils@3.3.2": {
80
+
"integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==",
81
+
"dependencies": [
82
+
"esbuild@0.18.20",
83
+
"source-map-support"
84
+
],
85
+
"deprecated": true
86
+
},
87
+
"@esbuild-kit/esm-loader@2.6.5": {
88
+
"integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==",
89
+
"dependencies": [
90
+
"@esbuild-kit/core-utils",
91
+
"get-tsconfig"
92
+
],
93
+
"deprecated": true
94
+
},
95
+
"@esbuild/aix-ppc64@0.25.10": {
96
+
"integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==",
97
+
"os": ["aix"],
98
+
"cpu": ["ppc64"]
99
+
},
100
+
"@esbuild/android-arm64@0.18.20": {
101
+
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
102
+
"os": ["android"],
103
+
"cpu": ["arm64"]
104
+
},
105
+
"@esbuild/android-arm64@0.25.10": {
106
+
"integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==",
107
+
"os": ["android"],
108
+
"cpu": ["arm64"]
109
+
},
110
+
"@esbuild/android-arm@0.18.20": {
111
+
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
112
+
"os": ["android"],
113
+
"cpu": ["arm"]
114
+
},
115
+
"@esbuild/android-arm@0.25.10": {
116
+
"integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==",
117
+
"os": ["android"],
118
+
"cpu": ["arm"]
119
+
},
120
+
"@esbuild/android-x64@0.18.20": {
121
+
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
122
+
"os": ["android"],
123
+
"cpu": ["x64"]
124
+
},
125
+
"@esbuild/android-x64@0.25.10": {
126
+
"integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==",
127
+
"os": ["android"],
128
+
"cpu": ["x64"]
129
+
},
130
+
"@esbuild/darwin-arm64@0.18.20": {
131
+
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
132
+
"os": ["darwin"],
133
+
"cpu": ["arm64"]
134
+
},
135
+
"@esbuild/darwin-arm64@0.25.10": {
136
+
"integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==",
137
+
"os": ["darwin"],
138
+
"cpu": ["arm64"]
139
+
},
140
+
"@esbuild/darwin-x64@0.18.20": {
141
+
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
142
+
"os": ["darwin"],
143
+
"cpu": ["x64"]
144
+
},
145
+
"@esbuild/darwin-x64@0.25.10": {
146
+
"integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==",
147
+
"os": ["darwin"],
148
+
"cpu": ["x64"]
149
+
},
150
+
"@esbuild/freebsd-arm64@0.18.20": {
151
+
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
152
+
"os": ["freebsd"],
153
+
"cpu": ["arm64"]
154
+
},
155
+
"@esbuild/freebsd-arm64@0.25.10": {
156
+
"integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==",
157
+
"os": ["freebsd"],
158
+
"cpu": ["arm64"]
159
+
},
160
+
"@esbuild/freebsd-x64@0.18.20": {
161
+
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
162
+
"os": ["freebsd"],
163
+
"cpu": ["x64"]
164
+
},
165
+
"@esbuild/freebsd-x64@0.25.10": {
166
+
"integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==",
167
+
"os": ["freebsd"],
168
+
"cpu": ["x64"]
169
+
},
170
+
"@esbuild/linux-arm64@0.18.20": {
171
+
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
172
+
"os": ["linux"],
173
+
"cpu": ["arm64"]
174
+
},
175
+
"@esbuild/linux-arm64@0.25.10": {
176
+
"integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==",
177
+
"os": ["linux"],
178
+
"cpu": ["arm64"]
179
+
},
180
+
"@esbuild/linux-arm@0.18.20": {
181
+
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
182
+
"os": ["linux"],
183
+
"cpu": ["arm"]
184
+
},
185
+
"@esbuild/linux-arm@0.25.10": {
186
+
"integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==",
187
+
"os": ["linux"],
188
+
"cpu": ["arm"]
189
+
},
190
+
"@esbuild/linux-ia32@0.18.20": {
191
+
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
192
+
"os": ["linux"],
193
+
"cpu": ["ia32"]
194
+
},
195
+
"@esbuild/linux-ia32@0.25.10": {
196
+
"integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==",
197
+
"os": ["linux"],
198
+
"cpu": ["ia32"]
199
+
},
200
+
"@esbuild/linux-loong64@0.18.20": {
201
+
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
202
+
"os": ["linux"],
203
+
"cpu": ["loong64"]
204
+
},
205
+
"@esbuild/linux-loong64@0.25.10": {
206
+
"integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==",
207
+
"os": ["linux"],
208
+
"cpu": ["loong64"]
209
+
},
210
+
"@esbuild/linux-mips64el@0.18.20": {
211
+
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
212
+
"os": ["linux"],
213
+
"cpu": ["mips64el"]
214
+
},
215
+
"@esbuild/linux-mips64el@0.25.10": {
216
+
"integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==",
217
+
"os": ["linux"],
218
+
"cpu": ["mips64el"]
219
+
},
220
+
"@esbuild/linux-ppc64@0.18.20": {
221
+
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
222
+
"os": ["linux"],
223
+
"cpu": ["ppc64"]
224
+
},
225
+
"@esbuild/linux-ppc64@0.25.10": {
226
+
"integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==",
227
+
"os": ["linux"],
228
+
"cpu": ["ppc64"]
229
+
},
230
+
"@esbuild/linux-riscv64@0.18.20": {
231
+
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
232
+
"os": ["linux"],
233
+
"cpu": ["riscv64"]
234
+
},
235
+
"@esbuild/linux-riscv64@0.25.10": {
236
+
"integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==",
237
+
"os": ["linux"],
238
+
"cpu": ["riscv64"]
239
+
},
240
+
"@esbuild/linux-s390x@0.18.20": {
241
+
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
242
+
"os": ["linux"],
243
+
"cpu": ["s390x"]
244
+
},
245
+
"@esbuild/linux-s390x@0.25.10": {
246
+
"integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==",
247
+
"os": ["linux"],
248
+
"cpu": ["s390x"]
249
+
},
250
+
"@esbuild/linux-x64@0.18.20": {
251
+
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
252
+
"os": ["linux"],
253
+
"cpu": ["x64"]
254
+
},
255
+
"@esbuild/linux-x64@0.25.10": {
256
+
"integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==",
257
+
"os": ["linux"],
258
+
"cpu": ["x64"]
259
+
},
260
+
"@esbuild/netbsd-arm64@0.25.10": {
261
+
"integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==",
262
+
"os": ["netbsd"],
263
+
"cpu": ["arm64"]
264
+
},
265
+
"@esbuild/netbsd-x64@0.18.20": {
266
+
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
267
+
"os": ["netbsd"],
268
+
"cpu": ["x64"]
269
+
},
270
+
"@esbuild/netbsd-x64@0.25.10": {
271
+
"integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==",
272
+
"os": ["netbsd"],
273
+
"cpu": ["x64"]
274
+
},
275
+
"@esbuild/openbsd-arm64@0.25.10": {
276
+
"integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==",
277
+
"os": ["openbsd"],
278
+
"cpu": ["arm64"]
279
+
},
280
+
"@esbuild/openbsd-x64@0.18.20": {
281
+
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
282
+
"os": ["openbsd"],
283
+
"cpu": ["x64"]
284
+
},
285
+
"@esbuild/openbsd-x64@0.25.10": {
286
+
"integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==",
287
+
"os": ["openbsd"],
288
+
"cpu": ["x64"]
289
+
},
290
+
"@esbuild/openharmony-arm64@0.25.10": {
291
+
"integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==",
292
+
"os": ["openharmony"],
293
+
"cpu": ["arm64"]
294
+
},
295
+
"@esbuild/sunos-x64@0.18.20": {
296
+
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
297
+
"os": ["sunos"],
298
+
"cpu": ["x64"]
299
+
},
300
+
"@esbuild/sunos-x64@0.25.10": {
301
+
"integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==",
302
+
"os": ["sunos"],
303
+
"cpu": ["x64"]
304
+
},
305
+
"@esbuild/win32-arm64@0.18.20": {
306
+
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
307
+
"os": ["win32"],
308
+
"cpu": ["arm64"]
309
+
},
310
+
"@esbuild/win32-arm64@0.25.10": {
311
+
"integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==",
312
+
"os": ["win32"],
313
+
"cpu": ["arm64"]
314
+
},
315
+
"@esbuild/win32-ia32@0.18.20": {
316
+
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
317
+
"os": ["win32"],
318
+
"cpu": ["ia32"]
319
+
},
320
+
"@esbuild/win32-ia32@0.25.10": {
321
+
"integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==",
322
+
"os": ["win32"],
323
+
"cpu": ["ia32"]
324
+
},
325
+
"@esbuild/win32-x64@0.18.20": {
326
+
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
327
+
"os": ["win32"],
328
+
"cpu": ["x64"]
329
+
},
330
+
"@esbuild/win32-x64@0.25.10": {
331
+
"integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==",
332
+
"os": ["win32"],
333
+
"cpu": ["x64"]
334
+
},
72
335
"@externdefs/collider@0.3.0_@badrap+valita@0.4.6": {
73
336
"integrity": "sha512-x5CpeZ4c8n+1wMFthUMWSQKqCGcQo52/Qbda5ES+JFRRg/D8Ep6/JOvUUq5HExFuv/wW+6UYG2U/mXzw0IAd8Q==",
74
337
"dependencies": [
75
338
"@badrap/valita"
76
339
]
77
340
},
341
+
"@libsql/client@0.15.15": {
342
+
"integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==",
343
+
"dependencies": [
344
+
"@libsql/core",
345
+
"@libsql/hrana-client",
346
+
"js-base64",
347
+
"libsql",
348
+
"promise-limit"
349
+
]
350
+
},
351
+
"@libsql/core@0.15.15": {
352
+
"integrity": "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==",
353
+
"dependencies": [
354
+
"js-base64"
355
+
]
356
+
},
357
+
"@libsql/darwin-arm64@0.5.22": {
358
+
"integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==",
359
+
"os": ["darwin"],
360
+
"cpu": ["arm64"]
361
+
},
362
+
"@libsql/darwin-x64@0.5.22": {
363
+
"integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==",
364
+
"os": ["darwin"],
365
+
"cpu": ["x64"]
366
+
},
367
+
"@libsql/hrana-client@0.7.0": {
368
+
"integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==",
369
+
"dependencies": [
370
+
"@libsql/isomorphic-fetch",
371
+
"@libsql/isomorphic-ws",
372
+
"js-base64",
373
+
"node-fetch"
374
+
]
375
+
},
376
+
"@libsql/isomorphic-fetch@0.3.1": {
377
+
"integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw=="
378
+
},
379
+
"@libsql/isomorphic-ws@0.1.5": {
380
+
"integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==",
381
+
"dependencies": [
382
+
"@types/ws",
383
+
"ws"
384
+
]
385
+
},
386
+
"@libsql/linux-arm-gnueabihf@0.5.22": {
387
+
"integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==",
388
+
"os": ["linux"],
389
+
"cpu": ["arm"]
390
+
},
391
+
"@libsql/linux-arm-musleabihf@0.5.22": {
392
+
"integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==",
393
+
"os": ["linux"],
394
+
"cpu": ["arm"]
395
+
},
396
+
"@libsql/linux-arm64-gnu@0.5.22": {
397
+
"integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==",
398
+
"os": ["linux"],
399
+
"cpu": ["arm64"]
400
+
},
401
+
"@libsql/linux-arm64-musl@0.5.22": {
402
+
"integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==",
403
+
"os": ["linux"],
404
+
"cpu": ["arm64"]
405
+
},
406
+
"@libsql/linux-x64-gnu@0.5.22": {
407
+
"integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==",
408
+
"os": ["linux"],
409
+
"cpu": ["x64"]
410
+
},
411
+
"@libsql/linux-x64-musl@0.5.22": {
412
+
"integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==",
413
+
"os": ["linux"],
414
+
"cpu": ["x64"]
415
+
},
416
+
"@libsql/win32-x64-msvc@0.5.22": {
417
+
"integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==",
418
+
"os": ["win32"],
419
+
"cpu": ["x64"]
420
+
},
421
+
"@neon-rs/load@0.0.4": {
422
+
"integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="
423
+
},
424
+
"@types/node@24.2.0": {
425
+
"integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==",
426
+
"dependencies": [
427
+
"undici-types"
428
+
]
429
+
},
430
+
"@types/ws@8.18.1": {
431
+
"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
432
+
"dependencies": [
433
+
"@types/node"
434
+
]
435
+
},
436
+
"buffer-from@1.1.2": {
437
+
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
438
+
},
439
+
"data-uri-to-buffer@4.0.1": {
440
+
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="
441
+
},
442
+
"debug@4.4.3": {
443
+
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
444
+
"dependencies": [
445
+
"ms"
446
+
]
447
+
},
448
+
"detect-libc@2.0.2": {
449
+
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="
450
+
},
451
+
"drizzle-kit@0.31.5_esbuild@0.25.10": {
452
+
"integrity": "sha512-+CHgPFzuoTQTt7cOYCV6MOw2w8vqEn/ap1yv4bpZOWL03u7rlVRQhUY0WYT3rHsgVTXwYQDZaSUJSQrMBUKuWg==",
453
+
"dependencies": [
454
+
"@drizzle-team/brocli",
455
+
"@esbuild-kit/esm-loader",
456
+
"esbuild@0.25.10",
457
+
"esbuild-register"
458
+
],
459
+
"bin": true
460
+
},
461
+
"drizzle-orm@0.44.6_@libsql+client@0.15.15": {
462
+
"integrity": "sha512-uy6uarrrEOc9K1u5/uhBFJbdF5VJ5xQ/Yzbecw3eAYOunv5FDeYkR2m8iitocdHBOHbvorviKOW5GVw0U1j4LQ==",
463
+
"dependencies": [
464
+
"@libsql/client"
465
+
],
466
+
"optionalPeers": [
467
+
"@libsql/client"
468
+
]
469
+
},
470
+
"esbuild-register@3.6.0_esbuild@0.25.10": {
471
+
"integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==",
472
+
"dependencies": [
473
+
"debug",
474
+
"esbuild@0.25.10"
475
+
]
476
+
},
477
+
"esbuild@0.18.20": {
478
+
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
479
+
"optionalDependencies": [
480
+
"@esbuild/android-arm@0.18.20",
481
+
"@esbuild/android-arm64@0.18.20",
482
+
"@esbuild/android-x64@0.18.20",
483
+
"@esbuild/darwin-arm64@0.18.20",
484
+
"@esbuild/darwin-x64@0.18.20",
485
+
"@esbuild/freebsd-arm64@0.18.20",
486
+
"@esbuild/freebsd-x64@0.18.20",
487
+
"@esbuild/linux-arm@0.18.20",
488
+
"@esbuild/linux-arm64@0.18.20",
489
+
"@esbuild/linux-ia32@0.18.20",
490
+
"@esbuild/linux-loong64@0.18.20",
491
+
"@esbuild/linux-mips64el@0.18.20",
492
+
"@esbuild/linux-ppc64@0.18.20",
493
+
"@esbuild/linux-riscv64@0.18.20",
494
+
"@esbuild/linux-s390x@0.18.20",
495
+
"@esbuild/linux-x64@0.18.20",
496
+
"@esbuild/netbsd-x64@0.18.20",
497
+
"@esbuild/openbsd-x64@0.18.20",
498
+
"@esbuild/sunos-x64@0.18.20",
499
+
"@esbuild/win32-arm64@0.18.20",
500
+
"@esbuild/win32-ia32@0.18.20",
501
+
"@esbuild/win32-x64@0.18.20"
502
+
],
503
+
"scripts": true,
504
+
"bin": true
505
+
},
506
+
"esbuild@0.25.10": {
507
+
"integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==",
508
+
"optionalDependencies": [
509
+
"@esbuild/aix-ppc64",
510
+
"@esbuild/android-arm@0.25.10",
511
+
"@esbuild/android-arm64@0.25.10",
512
+
"@esbuild/android-x64@0.25.10",
513
+
"@esbuild/darwin-arm64@0.25.10",
514
+
"@esbuild/darwin-x64@0.25.10",
515
+
"@esbuild/freebsd-arm64@0.25.10",
516
+
"@esbuild/freebsd-x64@0.25.10",
517
+
"@esbuild/linux-arm@0.25.10",
518
+
"@esbuild/linux-arm64@0.25.10",
519
+
"@esbuild/linux-ia32@0.25.10",
520
+
"@esbuild/linux-loong64@0.25.10",
521
+
"@esbuild/linux-mips64el@0.25.10",
522
+
"@esbuild/linux-ppc64@0.25.10",
523
+
"@esbuild/linux-riscv64@0.25.10",
524
+
"@esbuild/linux-s390x@0.25.10",
525
+
"@esbuild/linux-x64@0.25.10",
526
+
"@esbuild/netbsd-arm64",
527
+
"@esbuild/netbsd-x64@0.25.10",
528
+
"@esbuild/openbsd-arm64",
529
+
"@esbuild/openbsd-x64@0.25.10",
530
+
"@esbuild/openharmony-arm64",
531
+
"@esbuild/sunos-x64@0.25.10",
532
+
"@esbuild/win32-arm64@0.25.10",
533
+
"@esbuild/win32-ia32@0.25.10",
534
+
"@esbuild/win32-x64@0.25.10"
535
+
],
536
+
"scripts": true,
537
+
"bin": true
538
+
},
78
539
"esm-env@1.2.2": {
79
540
"integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="
80
541
},
542
+
"fetch-blob@3.2.0": {
543
+
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
544
+
"dependencies": [
545
+
"node-domexception",
546
+
"web-streams-polyfill"
547
+
]
548
+
},
549
+
"formdata-polyfill@4.0.10": {
550
+
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
551
+
"dependencies": [
552
+
"fetch-blob"
553
+
]
554
+
},
555
+
"get-tsconfig@4.10.1": {
556
+
"integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
557
+
"dependencies": [
558
+
"resolve-pkg-maps"
559
+
]
560
+
},
561
+
"js-base64@3.7.8": {
562
+
"integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="
563
+
},
564
+
"libsql@0.5.22": {
565
+
"integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==",
566
+
"dependencies": [
567
+
"@neon-rs/load",
568
+
"detect-libc"
569
+
],
570
+
"optionalDependencies": [
571
+
"@libsql/darwin-arm64",
572
+
"@libsql/darwin-x64",
573
+
"@libsql/linux-arm-gnueabihf",
574
+
"@libsql/linux-arm-musleabihf",
575
+
"@libsql/linux-arm64-gnu",
576
+
"@libsql/linux-arm64-musl",
577
+
"@libsql/linux-x64-gnu",
578
+
"@libsql/linux-x64-musl",
579
+
"@libsql/win32-x64-msvc"
580
+
],
581
+
"os": ["darwin", "linux", "win32"],
582
+
"cpu": ["x64", "arm64", "wasm32", "arm"]
583
+
},
584
+
"ms@2.1.3": {
585
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
586
+
},
587
+
"node-domexception@1.0.0": {
588
+
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
589
+
"deprecated": true
590
+
},
591
+
"node-fetch@3.3.2": {
592
+
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
593
+
"dependencies": [
594
+
"data-uri-to-buffer",
595
+
"fetch-blob",
596
+
"formdata-polyfill"
597
+
]
598
+
},
81
599
"picocolors@1.1.1": {
82
600
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
83
601
},
84
602
"prettier@3.6.2": {
85
603
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
86
604
"bin": true
605
+
},
606
+
"promise-limit@2.7.0": {
607
+
"integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="
608
+
},
609
+
"resolve-pkg-maps@1.0.0": {
610
+
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="
611
+
},
612
+
"source-map-support@0.5.21": {
613
+
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
614
+
"dependencies": [
615
+
"buffer-from",
616
+
"source-map"
617
+
]
618
+
},
619
+
"source-map@0.6.1": {
620
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
621
+
},
622
+
"undici-types@7.10.0": {
623
+
"integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="
624
+
},
625
+
"web-streams-polyfill@3.3.3": {
626
+
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="
627
+
},
628
+
"ws@8.18.3": {
629
+
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="
87
630
}
88
631
},
89
632
"workspace": {
···
92
635
"npm:@atcute/client@^4.0.3",
93
636
"npm:@atcute/identity-resolver@^1.1.3",
94
637
"npm:@atcute/lex-cli@^2.2.0",
95
-
"npm:@atcute/lexicons@^1.1.1"
638
+
"npm:@atcute/lexicons@^1.1.1",
639
+
"npm:@libsql/client@~0.15.15",
640
+
"npm:drizzle-kit@~0.31.5",
641
+
"npm:drizzle-orm@~0.44.6"
96
642
]
97
643
}
98
644
}
+10
server/drizzle.config.ts
+10
server/drizzle.config.ts
+57
server/src/backfill.ts
+57
server/src/backfill.ts
···
1
+
import { drizzle } from "drizzle-orm/libsql";
2
+
import { routes } from "./db/schema.ts";
3
+
import * as schema from "./db/schema.ts";
4
+
import { db as db_type } from "./types.ts";
5
+
6
+
const db = drizzle<typeof schema>(Deno.env.get("DB_FILE_NAME")!);
7
+
8
+
export default async function main(): Promise<db_type> {
9
+
await db.delete(routes);
10
+
try {
11
+
// await Deno.remove("./blobs", { recursive: true });
12
+
} catch {
13
+
// directory doesnt exist
14
+
}
15
+
16
+
await [
17
+
{
18
+
did: "did:web:invalid",
19
+
url_route: "404",
20
+
blob_cid: "this_is_a_cid",
21
+
mime: "text/html",
22
+
},
23
+
{
24
+
did: "did:web:invalid",
25
+
url_route: "/",
26
+
blob_cid: "root",
27
+
mime: "text/html",
28
+
},
29
+
{
30
+
did: "did:web:invalid",
31
+
url_route: "/hello.html",
32
+
blob_cid: "hello",
33
+
mime: "text/html",
34
+
},
35
+
{
36
+
did: "did:web:invalid",
37
+
url_route: "/cat.png",
38
+
blob_cid: "cat",
39
+
mime: "image/png",
40
+
},
41
+
{
42
+
did: "did:web:invalid",
43
+
url_route: "/styles.css",
44
+
blob_cid: "styles",
45
+
mime: "text/css",
46
+
},
47
+
{
48
+
did: "did:web:invalid",
49
+
url_route: "/missing",
50
+
blob_cid: "doesnt_exit",
51
+
mime: "text/json",
52
+
},
53
+
].forEach(async (x) => await db.insert(routes).values(x));
54
+
55
+
// we only return the db when its ready
56
+
return db;
57
+
}
+9
server/src/db/schema.ts
+9
server/src/db/schema.ts
···
1
+
import { int, sqliteTable, text } from "drizzle-orm/sqlite-core";
2
+
3
+
export const routes = sqliteTable("routes", {
4
+
id: int("id").primaryKey({ autoIncrement: true }),
5
+
did: text("did").notNull(),
6
+
url_route: text("url_route").notNull(),
7
+
blob_cid: text("blob_cid").notNull(),
8
+
mime: text("mime").notNull(),
9
+
});