+8
.env
+8
.env
···
7
7
# i dont actually know why i need this
8
8
SLINGSHOT_URL="https://slingshot.whey.party"
9
9
10
+
# bools
11
+
INDEX_SERVER_ENABLED=true
12
+
INDEX_SERVER_INVITES_REQUIRED=true
13
+
14
+
VIEW_SERVER_ENABLED=true
15
+
INDEX_SERVER_INVITES_REQUIRED=true
16
+
17
+
# this is for both index and view server btw
10
18
SERVICE_DID="did:web:local3768forumtest.whey.party"
11
19
SERVICE_ENDPOINT="https://local3768forumtest.whey.party"
12
20
SERVER_PORT="3768"
+5
.gitignore
+5
.gitignore
+1300
-9
deno.lock
+1300
-9
deno.lock
···
15
15
"jsr:@std/path@^1.1.1": "1.1.1",
16
16
"npm:@atproto/api@*": "0.15.12",
17
17
"npm:@atproto/identity@*": "0.4.8",
18
+
"npm:@atproto/lex-cli@*": "0.9.1",
18
19
"npm:@atproto/lexicon@*": "0.4.11",
19
20
"npm:@atproto/xrpc-server@*": "0.9.1",
20
21
"npm:@ipld/car@*": "5.4.2",
···
23
24
"npm:@types/node@*": "22.15.15",
24
25
"npm:did-jwt@*": "8.0.17",
25
26
"npm:did-resolver@*": "4.1.0",
27
+
"npm:docsify-cli@*": "4.4.4",
26
28
"npm:express@*": "5.1.0",
27
29
"npm:ky@*": "1.8.1",
28
30
"npm:multiformats@*": "13.4.0",
29
31
"npm:quick-lru@*": "7.0.1",
32
+
"npm:vite@*": "7.1.3_@types+node@22.15.15_picomatch@4.0.3",
30
33
"npm:web-did-resolver@*": "2.0.30"
31
34
},
32
35
"jsr": {
···
133
136
"@atproto/crypto"
134
137
]
135
138
},
139
+
"@atproto/lex-cli@0.9.1": {
140
+
"integrity": "sha512-ftcUZd8rElHeUJq6pTcQkURnTEe7woCF4I1NK3j5GpT/itacEZtcppabjy5o2aUsbktZsALj3ch3xm7ZZ+Zp0w==",
141
+
"dependencies": [
142
+
"@atproto/lexicon@0.4.12",
143
+
"@atproto/syntax",
144
+
"chalk@4.1.2",
145
+
"commander",
146
+
"prettier",
147
+
"ts-morph",
148
+
"yesno",
149
+
"zod"
150
+
],
151
+
"bin": true
152
+
},
136
153
"@atproto/lexicon@0.4.11": {
137
154
"integrity": "sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==",
138
155
"dependencies": [
···
169
186
"mime-types@2.1.35",
170
187
"rate-limiter-flexible",
171
188
"uint8arrays@3.0.0",
172
-
"ws",
189
+
"ws@8.18.3",
173
190
"zod"
174
191
]
175
192
},
···
217
234
"os": ["win32"],
218
235
"cpu": ["x64"]
219
236
},
237
+
"@esbuild/aix-ppc64@0.25.9": {
238
+
"integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
239
+
"os": ["aix"],
240
+
"cpu": ["ppc64"]
241
+
},
242
+
"@esbuild/android-arm64@0.25.9": {
243
+
"integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
244
+
"os": ["android"],
245
+
"cpu": ["arm64"]
246
+
},
247
+
"@esbuild/android-arm@0.25.9": {
248
+
"integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
249
+
"os": ["android"],
250
+
"cpu": ["arm"]
251
+
},
252
+
"@esbuild/android-x64@0.25.9": {
253
+
"integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
254
+
"os": ["android"],
255
+
"cpu": ["x64"]
256
+
},
257
+
"@esbuild/darwin-arm64@0.25.9": {
258
+
"integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
259
+
"os": ["darwin"],
260
+
"cpu": ["arm64"]
261
+
},
262
+
"@esbuild/darwin-x64@0.25.9": {
263
+
"integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
264
+
"os": ["darwin"],
265
+
"cpu": ["x64"]
266
+
},
267
+
"@esbuild/freebsd-arm64@0.25.9": {
268
+
"integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
269
+
"os": ["freebsd"],
270
+
"cpu": ["arm64"]
271
+
},
272
+
"@esbuild/freebsd-x64@0.25.9": {
273
+
"integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
274
+
"os": ["freebsd"],
275
+
"cpu": ["x64"]
276
+
},
277
+
"@esbuild/linux-arm64@0.25.9": {
278
+
"integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
279
+
"os": ["linux"],
280
+
"cpu": ["arm64"]
281
+
},
282
+
"@esbuild/linux-arm@0.25.9": {
283
+
"integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
284
+
"os": ["linux"],
285
+
"cpu": ["arm"]
286
+
},
287
+
"@esbuild/linux-ia32@0.25.9": {
288
+
"integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
289
+
"os": ["linux"],
290
+
"cpu": ["ia32"]
291
+
},
292
+
"@esbuild/linux-loong64@0.25.9": {
293
+
"integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
294
+
"os": ["linux"],
295
+
"cpu": ["loong64"]
296
+
},
297
+
"@esbuild/linux-mips64el@0.25.9": {
298
+
"integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
299
+
"os": ["linux"],
300
+
"cpu": ["mips64el"]
301
+
},
302
+
"@esbuild/linux-ppc64@0.25.9": {
303
+
"integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
304
+
"os": ["linux"],
305
+
"cpu": ["ppc64"]
306
+
},
307
+
"@esbuild/linux-riscv64@0.25.9": {
308
+
"integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
309
+
"os": ["linux"],
310
+
"cpu": ["riscv64"]
311
+
},
312
+
"@esbuild/linux-s390x@0.25.9": {
313
+
"integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
314
+
"os": ["linux"],
315
+
"cpu": ["s390x"]
316
+
},
317
+
"@esbuild/linux-x64@0.25.9": {
318
+
"integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
319
+
"os": ["linux"],
320
+
"cpu": ["x64"]
321
+
},
322
+
"@esbuild/netbsd-arm64@0.25.9": {
323
+
"integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
324
+
"os": ["netbsd"],
325
+
"cpu": ["arm64"]
326
+
},
327
+
"@esbuild/netbsd-x64@0.25.9": {
328
+
"integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
329
+
"os": ["netbsd"],
330
+
"cpu": ["x64"]
331
+
},
332
+
"@esbuild/openbsd-arm64@0.25.9": {
333
+
"integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
334
+
"os": ["openbsd"],
335
+
"cpu": ["arm64"]
336
+
},
337
+
"@esbuild/openbsd-x64@0.25.9": {
338
+
"integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
339
+
"os": ["openbsd"],
340
+
"cpu": ["x64"]
341
+
},
342
+
"@esbuild/openharmony-arm64@0.25.9": {
343
+
"integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
344
+
"os": ["openharmony"],
345
+
"cpu": ["arm64"]
346
+
},
347
+
"@esbuild/sunos-x64@0.25.9": {
348
+
"integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
349
+
"os": ["sunos"],
350
+
"cpu": ["x64"]
351
+
},
352
+
"@esbuild/win32-arm64@0.25.9": {
353
+
"integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
354
+
"os": ["win32"],
355
+
"cpu": ["arm64"]
356
+
},
357
+
"@esbuild/win32-ia32@0.25.9": {
358
+
"integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
359
+
"os": ["win32"],
360
+
"cpu": ["ia32"]
361
+
},
362
+
"@esbuild/win32-x64@0.25.9": {
363
+
"integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
364
+
"os": ["win32"],
365
+
"cpu": ["x64"]
366
+
},
220
367
"@ipld/car@5.4.2": {
221
368
"integrity": "sha512-gfyrJvePyXnh2Fbj8mPg4JYvEZ3izhk8C9WgAle7xIYbrJNSXmNQ6BxAls8Gof97vvGbCROdxbTWRmHJtTCbcg==",
222
369
"dependencies": [
···
255
402
"@noble/hashes@1.8.0": {
256
403
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="
257
404
},
405
+
"@rollup/rollup-android-arm-eabi@4.46.4": {
406
+
"integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==",
407
+
"os": ["android"],
408
+
"cpu": ["arm"]
409
+
},
410
+
"@rollup/rollup-android-arm64@4.46.4": {
411
+
"integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==",
412
+
"os": ["android"],
413
+
"cpu": ["arm64"]
414
+
},
415
+
"@rollup/rollup-darwin-arm64@4.46.4": {
416
+
"integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==",
417
+
"os": ["darwin"],
418
+
"cpu": ["arm64"]
419
+
},
420
+
"@rollup/rollup-darwin-x64@4.46.4": {
421
+
"integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==",
422
+
"os": ["darwin"],
423
+
"cpu": ["x64"]
424
+
},
425
+
"@rollup/rollup-freebsd-arm64@4.46.4": {
426
+
"integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==",
427
+
"os": ["freebsd"],
428
+
"cpu": ["arm64"]
429
+
},
430
+
"@rollup/rollup-freebsd-x64@4.46.4": {
431
+
"integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==",
432
+
"os": ["freebsd"],
433
+
"cpu": ["x64"]
434
+
},
435
+
"@rollup/rollup-linux-arm-gnueabihf@4.46.4": {
436
+
"integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==",
437
+
"os": ["linux"],
438
+
"cpu": ["arm"]
439
+
},
440
+
"@rollup/rollup-linux-arm-musleabihf@4.46.4": {
441
+
"integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==",
442
+
"os": ["linux"],
443
+
"cpu": ["arm"]
444
+
},
445
+
"@rollup/rollup-linux-arm64-gnu@4.46.4": {
446
+
"integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==",
447
+
"os": ["linux"],
448
+
"cpu": ["arm64"]
449
+
},
450
+
"@rollup/rollup-linux-arm64-musl@4.46.4": {
451
+
"integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==",
452
+
"os": ["linux"],
453
+
"cpu": ["arm64"]
454
+
},
455
+
"@rollup/rollup-linux-loongarch64-gnu@4.46.4": {
456
+
"integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==",
457
+
"os": ["linux"],
458
+
"cpu": ["loong64"]
459
+
},
460
+
"@rollup/rollup-linux-ppc64-gnu@4.46.4": {
461
+
"integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==",
462
+
"os": ["linux"],
463
+
"cpu": ["ppc64"]
464
+
},
465
+
"@rollup/rollup-linux-riscv64-gnu@4.46.4": {
466
+
"integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==",
467
+
"os": ["linux"],
468
+
"cpu": ["riscv64"]
469
+
},
470
+
"@rollup/rollup-linux-riscv64-musl@4.46.4": {
471
+
"integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==",
472
+
"os": ["linux"],
473
+
"cpu": ["riscv64"]
474
+
},
475
+
"@rollup/rollup-linux-s390x-gnu@4.46.4": {
476
+
"integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==",
477
+
"os": ["linux"],
478
+
"cpu": ["s390x"]
479
+
},
480
+
"@rollup/rollup-linux-x64-gnu@4.46.4": {
481
+
"integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==",
482
+
"os": ["linux"],
483
+
"cpu": ["x64"]
484
+
},
485
+
"@rollup/rollup-linux-x64-musl@4.46.4": {
486
+
"integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==",
487
+
"os": ["linux"],
488
+
"cpu": ["x64"]
489
+
},
490
+
"@rollup/rollup-win32-arm64-msvc@4.46.4": {
491
+
"integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==",
492
+
"os": ["win32"],
493
+
"cpu": ["arm64"]
494
+
},
495
+
"@rollup/rollup-win32-ia32-msvc@4.46.4": {
496
+
"integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==",
497
+
"os": ["win32"],
498
+
"cpu": ["ia32"]
499
+
},
500
+
"@rollup/rollup-win32-x64-msvc@4.46.4": {
501
+
"integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==",
502
+
"os": ["win32"],
503
+
"cpu": ["x64"]
504
+
},
258
505
"@scure/base@1.2.6": {
259
506
"integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg=="
260
507
},
508
+
"@sindresorhus/is@0.14.0": {
509
+
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ=="
510
+
},
511
+
"@szmarczak/http-timer@1.1.2": {
512
+
"integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
513
+
"dependencies": [
514
+
"defer-to-connect"
515
+
]
516
+
},
517
+
"@ts-morph/common@0.25.0": {
518
+
"integrity": "sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==",
519
+
"dependencies": [
520
+
"minimatch",
521
+
"path-browserify",
522
+
"tinyglobby"
523
+
]
524
+
},
261
525
"@types/body-parser@1.19.6": {
262
526
"integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
263
527
"dependencies": [
···
270
534
"dependencies": [
271
535
"@types/node"
272
536
]
537
+
},
538
+
"@types/estree@1.0.8": {
539
+
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
273
540
},
274
541
"@types/express-serve-static-core@4.19.6": {
275
542
"integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
···
342
609
"negotiator@1.0.0"
343
610
]
344
611
},
612
+
"ansi-align@3.0.1": {
613
+
"integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
614
+
"dependencies": [
615
+
"string-width"
616
+
]
617
+
},
618
+
"ansi-colors@4.1.3": {
619
+
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
620
+
},
621
+
"ansi-regex@2.1.1": {
622
+
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
623
+
},
624
+
"ansi-regex@5.0.1": {
625
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
626
+
},
627
+
"ansi-styles@2.2.1": {
628
+
"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="
629
+
},
630
+
"ansi-styles@3.2.1": {
631
+
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
632
+
"dependencies": [
633
+
"color-convert@1.9.3"
634
+
]
635
+
},
636
+
"ansi-styles@4.3.0": {
637
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
638
+
"dependencies": [
639
+
"color-convert@2.0.1"
640
+
]
641
+
},
642
+
"anymatch@3.1.3": {
643
+
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
644
+
"dependencies": [
645
+
"normalize-path",
646
+
"picomatch@2.3.1"
647
+
]
648
+
},
345
649
"array-flatten@1.1.1": {
346
650
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
347
651
},
···
351
655
"await-lock@2.2.2": {
352
656
"integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
353
657
},
658
+
"balanced-match@1.0.2": {
659
+
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
660
+
},
354
661
"base64-js@1.5.1": {
355
662
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
663
+
},
664
+
"binary-extensions@2.3.0": {
665
+
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
356
666
},
357
667
"body-parser@1.20.3": {
358
668
"integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
···
364
674
"destroy",
365
675
"http-errors",
366
676
"iconv-lite@0.4.24",
367
-
"on-finished",
677
+
"on-finished@2.4.1",
368
678
"qs@6.13.0",
369
679
"raw-body@2.5.2",
370
680
"type-is@1.6.18",
···
379
689
"debug@4.4.1",
380
690
"http-errors",
381
691
"iconv-lite@0.6.3",
382
-
"on-finished",
692
+
"on-finished@2.4.1",
383
693
"qs@6.14.0",
384
694
"raw-body@3.0.0",
385
695
"type-is@2.0.1"
386
696
]
387
697
},
698
+
"boxen@4.2.0": {
699
+
"integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
700
+
"dependencies": [
701
+
"ansi-align",
702
+
"camelcase",
703
+
"chalk@3.0.0",
704
+
"cli-boxes",
705
+
"string-width",
706
+
"term-size",
707
+
"type-fest",
708
+
"widest-line"
709
+
]
710
+
},
711
+
"brace-expansion@2.0.2": {
712
+
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
713
+
"dependencies": [
714
+
"balanced-match"
715
+
]
716
+
},
717
+
"braces@3.0.3": {
718
+
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
719
+
"dependencies": [
720
+
"fill-range"
721
+
]
722
+
},
388
723
"buffer@6.0.3": {
389
724
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
390
725
"dependencies": [
···
395
730
"bytes@3.1.2": {
396
731
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
397
732
},
733
+
"cacheable-request@6.1.0": {
734
+
"integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
735
+
"dependencies": [
736
+
"clone-response",
737
+
"get-stream@5.2.0",
738
+
"http-cache-semantics",
739
+
"keyv",
740
+
"lowercase-keys@2.0.0",
741
+
"normalize-url",
742
+
"responselike"
743
+
]
744
+
},
398
745
"call-bind-apply-helpers@1.0.2": {
399
746
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
400
747
"dependencies": [
···
408
755
"call-bind-apply-helpers",
409
756
"get-intrinsic"
410
757
]
758
+
},
759
+
"camelcase@5.3.1": {
760
+
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
411
761
},
412
762
"canonicalize@2.1.0": {
413
763
"integrity": "sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==",
···
443
793
"integrity": "sha512-7gs3iaqtsD9OHowgqzc6ixQGwSBONqosVR2co0Bg0pARgrLap+LCcEIXJuuIz2jHy0WWQeDMFPEsU2r17I2XPQ==",
444
794
"bin": true
445
795
},
796
+
"chalk@1.1.3": {
797
+
"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
798
+
"dependencies": [
799
+
"ansi-styles@2.2.1",
800
+
"escape-string-regexp",
801
+
"has-ansi",
802
+
"strip-ansi@3.0.1",
803
+
"supports-color@2.0.0"
804
+
]
805
+
},
806
+
"chalk@2.4.2": {
807
+
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
808
+
"dependencies": [
809
+
"ansi-styles@3.2.1",
810
+
"escape-string-regexp",
811
+
"supports-color@5.5.0"
812
+
]
813
+
},
814
+
"chalk@3.0.0": {
815
+
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
816
+
"dependencies": [
817
+
"ansi-styles@4.3.0",
818
+
"supports-color@7.2.0"
819
+
]
820
+
},
821
+
"chalk@4.1.2": {
822
+
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
823
+
"dependencies": [
824
+
"ansi-styles@4.3.0",
825
+
"supports-color@7.2.0"
826
+
]
827
+
},
828
+
"chokidar@3.6.0": {
829
+
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
830
+
"dependencies": [
831
+
"anymatch",
832
+
"braces",
833
+
"glob-parent",
834
+
"is-binary-path",
835
+
"is-glob",
836
+
"normalize-path",
837
+
"readdirp"
838
+
],
839
+
"optionalDependencies": [
840
+
"fsevents"
841
+
]
842
+
},
843
+
"ci-info@2.0.0": {
844
+
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
845
+
},
846
+
"cli-boxes@2.2.1": {
847
+
"integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw=="
848
+
},
849
+
"cliui@6.0.0": {
850
+
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
851
+
"dependencies": [
852
+
"string-width",
853
+
"strip-ansi@6.0.1",
854
+
"wrap-ansi"
855
+
]
856
+
},
857
+
"clone-response@1.0.3": {
858
+
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
859
+
"dependencies": [
860
+
"mimic-response"
861
+
]
862
+
},
863
+
"code-block-writer@13.0.3": {
864
+
"integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="
865
+
},
866
+
"color-convert@1.9.3": {
867
+
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
868
+
"dependencies": [
869
+
"color-name@1.1.3"
870
+
]
871
+
},
872
+
"color-convert@2.0.1": {
873
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
874
+
"dependencies": [
875
+
"color-name@1.1.4"
876
+
]
877
+
},
878
+
"color-name@1.1.3": {
879
+
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
880
+
},
881
+
"color-name@1.1.4": {
882
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
883
+
},
884
+
"commander@9.5.0": {
885
+
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="
886
+
},
887
+
"configstore@5.0.1": {
888
+
"integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
889
+
"dependencies": [
890
+
"dot-prop",
891
+
"graceful-fs",
892
+
"make-dir",
893
+
"unique-string",
894
+
"write-file-atomic",
895
+
"xdg-basedir"
896
+
]
897
+
},
898
+
"connect-history-api-fallback@1.6.0": {
899
+
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="
900
+
},
901
+
"connect-livereload@0.6.1": {
902
+
"integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g=="
903
+
},
904
+
"connect@3.7.0": {
905
+
"integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
906
+
"dependencies": [
907
+
"debug@2.6.9",
908
+
"finalhandler@1.1.2",
909
+
"parseurl",
910
+
"utils-merge"
911
+
]
912
+
},
446
913
"content-disposition@0.5.4": {
447
914
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
448
915
"dependencies": [
···
469
936
},
470
937
"cookie@0.7.2": {
471
938
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="
939
+
},
940
+
"cp-file@7.0.0": {
941
+
"integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==",
942
+
"dependencies": [
943
+
"graceful-fs",
944
+
"make-dir",
945
+
"nested-error-stacks",
946
+
"p-event"
947
+
]
472
948
},
473
949
"cross-fetch@4.1.0": {
474
950
"integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==",
···
476
952
"node-fetch"
477
953
]
478
954
},
955
+
"crypto-random-string@2.0.0": {
956
+
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
957
+
},
479
958
"debug@2.6.9": {
480
959
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
481
960
"dependencies": [
···
488
967
"ms@2.1.3"
489
968
]
490
969
},
970
+
"decamelize@1.2.0": {
971
+
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
972
+
},
973
+
"decompress-response@3.3.0": {
974
+
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
975
+
"dependencies": [
976
+
"mimic-response"
977
+
]
978
+
},
979
+
"deep-extend@0.6.0": {
980
+
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
981
+
},
982
+
"defer-to-connect@1.1.3": {
983
+
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
984
+
},
491
985
"depd@2.0.0": {
492
986
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
493
987
},
···
514
1008
"did-resolver@4.1.0": {
515
1009
"integrity": "sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA=="
516
1010
},
1011
+
"docsify-cli@4.4.4": {
1012
+
"integrity": "sha512-NAZgg6b0BsDuq/Pe+P19Qb2J1d+ZVbS0eGkeCNxyu4F9/CQSsRqZqAvPJ9/0I+BCHn4sgftA2jluqhQVzKzrSA==",
1013
+
"dependencies": [
1014
+
"chalk@2.4.2",
1015
+
"connect",
1016
+
"connect-history-api-fallback",
1017
+
"connect-livereload",
1018
+
"cp-file",
1019
+
"docsify",
1020
+
"docsify-server-renderer",
1021
+
"enquirer",
1022
+
"fs-extra",
1023
+
"get-port",
1024
+
"livereload",
1025
+
"lru-cache",
1026
+
"open",
1027
+
"serve-static@1.16.2",
1028
+
"update-notifier",
1029
+
"yargonaut",
1030
+
"yargs"
1031
+
],
1032
+
"bin": true
1033
+
},
1034
+
"docsify-server-renderer@4.13.1": {
1035
+
"integrity": "sha512-XNJeCK3zp+mVO7JZFn0bH4hNBAMMC1MbuCU7CBsjLHYn4NHrjIgCBGmylzEan3/4Qm6kbSzQx8XzUK5T7GQxHw==",
1036
+
"dependencies": [
1037
+
"debug@4.4.1",
1038
+
"docsify",
1039
+
"node-fetch",
1040
+
"resolve-pathname"
1041
+
],
1042
+
"deprecated": true
1043
+
},
1044
+
"docsify@4.13.1": {
1045
+
"integrity": "sha512-BsDypTBhw0mfslw9kZgAspCMZSM+sUIIDg5K/t1hNLkvbem9h64ZQc71e1IpY+iWsi/KdeqfazDfg52y2Lmm0A==",
1046
+
"dependencies": [
1047
+
"marked",
1048
+
"medium-zoom",
1049
+
"opencollective-postinstall",
1050
+
"prismjs",
1051
+
"strip-indent",
1052
+
"tinydate",
1053
+
"tweezer.js"
1054
+
],
1055
+
"scripts": true
1056
+
},
1057
+
"dot-prop@5.3.0": {
1058
+
"integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
1059
+
"dependencies": [
1060
+
"is-obj"
1061
+
]
1062
+
},
517
1063
"dunder-proto@1.0.1": {
518
1064
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
519
1065
"dependencies": [
···
522
1068
"gopd"
523
1069
]
524
1070
},
1071
+
"duplexer3@0.1.5": {
1072
+
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA=="
1073
+
},
525
1074
"ee-first@1.1.1": {
526
1075
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
527
1076
},
1077
+
"emoji-regex@8.0.0": {
1078
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
1079
+
},
528
1080
"encodeurl@1.0.2": {
529
1081
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
530
1082
},
531
1083
"encodeurl@2.0.0": {
532
1084
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="
533
1085
},
1086
+
"end-of-stream@1.4.5": {
1087
+
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
1088
+
"dependencies": [
1089
+
"once"
1090
+
]
1091
+
},
1092
+
"enquirer@2.4.1": {
1093
+
"integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
1094
+
"dependencies": [
1095
+
"ansi-colors",
1096
+
"strip-ansi@6.0.1"
1097
+
]
1098
+
},
534
1099
"es-define-property@1.0.1": {
535
1100
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
536
1101
},
···
543
1108
"es-errors"
544
1109
]
545
1110
},
1111
+
"esbuild@0.25.9": {
1112
+
"integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
1113
+
"optionalDependencies": [
1114
+
"@esbuild/aix-ppc64",
1115
+
"@esbuild/android-arm",
1116
+
"@esbuild/android-arm64",
1117
+
"@esbuild/android-x64",
1118
+
"@esbuild/darwin-arm64",
1119
+
"@esbuild/darwin-x64",
1120
+
"@esbuild/freebsd-arm64",
1121
+
"@esbuild/freebsd-x64",
1122
+
"@esbuild/linux-arm",
1123
+
"@esbuild/linux-arm64",
1124
+
"@esbuild/linux-ia32",
1125
+
"@esbuild/linux-loong64",
1126
+
"@esbuild/linux-mips64el",
1127
+
"@esbuild/linux-ppc64",
1128
+
"@esbuild/linux-riscv64",
1129
+
"@esbuild/linux-s390x",
1130
+
"@esbuild/linux-x64",
1131
+
"@esbuild/netbsd-arm64",
1132
+
"@esbuild/netbsd-x64",
1133
+
"@esbuild/openbsd-arm64",
1134
+
"@esbuild/openbsd-x64",
1135
+
"@esbuild/openharmony-arm64",
1136
+
"@esbuild/sunos-x64",
1137
+
"@esbuild/win32-arm64",
1138
+
"@esbuild/win32-ia32",
1139
+
"@esbuild/win32-x64"
1140
+
],
1141
+
"scripts": true,
1142
+
"bin": true
1143
+
},
1144
+
"escape-goat@2.1.1": {
1145
+
"integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q=="
1146
+
},
546
1147
"escape-html@1.0.3": {
547
1148
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1149
+
},
1150
+
"escape-string-regexp@1.0.5": {
1151
+
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
548
1152
},
549
1153
"etag@1.8.1": {
550
1154
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
···
575
1179
"http-errors",
576
1180
"merge-descriptors@1.0.3",
577
1181
"methods",
578
-
"on-finished",
1182
+
"on-finished@2.4.1",
579
1183
"parseurl",
580
1184
"path-to-regexp@0.1.12",
581
1185
"proxy-addr",
···
609
1213
"http-errors",
610
1214
"merge-descriptors@2.0.0",
611
1215
"mime-types@3.0.1",
612
-
"on-finished",
1216
+
"on-finished@2.4.1",
613
1217
"once",
614
1218
"parseurl",
615
1219
"proxy-addr",
···
626
1230
"fast-redact@3.5.0": {
627
1231
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A=="
628
1232
},
1233
+
"fdir@6.5.0_picomatch@4.0.3": {
1234
+
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1235
+
"dependencies": [
1236
+
"picomatch@4.0.3"
1237
+
],
1238
+
"optionalPeers": [
1239
+
"picomatch@4.0.3"
1240
+
]
1241
+
},
1242
+
"figlet@1.8.2": {
1243
+
"integrity": "sha512-iPCpE9B/rOcjewIzDnagP9F2eySzGeHReX8WlrZQJkqFBk2wvq8gY0c6U6Hd2y9HnX1LQcYSeP7aEHoPt6sVKQ==",
1244
+
"bin": true
1245
+
},
1246
+
"fill-range@7.1.1": {
1247
+
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1248
+
"dependencies": [
1249
+
"to-regex-range"
1250
+
]
1251
+
},
1252
+
"finalhandler@1.1.2": {
1253
+
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
1254
+
"dependencies": [
1255
+
"debug@2.6.9",
1256
+
"encodeurl@1.0.2",
1257
+
"escape-html",
1258
+
"on-finished@2.3.0",
1259
+
"parseurl",
1260
+
"statuses@1.5.0",
1261
+
"unpipe"
1262
+
]
1263
+
},
629
1264
"finalhandler@1.3.1": {
630
1265
"integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
631
1266
"dependencies": [
632
1267
"debug@2.6.9",
633
1268
"encodeurl@2.0.0",
634
1269
"escape-html",
635
-
"on-finished",
1270
+
"on-finished@2.4.1",
636
1271
"parseurl",
637
1272
"statuses@2.0.1",
638
1273
"unpipe"
···
644
1279
"debug@4.4.1",
645
1280
"encodeurl@2.0.0",
646
1281
"escape-html",
647
-
"on-finished",
1282
+
"on-finished@2.4.1",
648
1283
"parseurl",
649
1284
"statuses@2.0.2"
650
1285
]
651
1286
},
1287
+
"find-up@4.1.0": {
1288
+
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1289
+
"dependencies": [
1290
+
"locate-path",
1291
+
"path-exists"
1292
+
]
1293
+
},
652
1294
"forwarded@0.2.0": {
653
1295
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
654
1296
},
···
658
1300
"fresh@2.0.0": {
659
1301
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="
660
1302
},
1303
+
"fs-extra@8.1.0": {
1304
+
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
1305
+
"dependencies": [
1306
+
"graceful-fs",
1307
+
"jsonfile",
1308
+
"universalify"
1309
+
]
1310
+
},
1311
+
"fsevents@2.3.3": {
1312
+
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1313
+
"os": ["darwin"],
1314
+
"scripts": true
1315
+
},
661
1316
"function-bind@1.1.2": {
662
1317
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
663
1318
},
1319
+
"get-caller-file@2.0.5": {
1320
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
1321
+
},
664
1322
"get-intrinsic@1.3.0": {
665
1323
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
666
1324
"dependencies": [
···
676
1334
"math-intrinsics"
677
1335
]
678
1336
},
1337
+
"get-port@5.1.1": {
1338
+
"integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ=="
1339
+
},
679
1340
"get-proto@1.0.1": {
680
1341
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
681
1342
"dependencies": [
···
683
1344
"es-object-atoms"
684
1345
]
685
1346
},
1347
+
"get-stream@4.1.0": {
1348
+
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
1349
+
"dependencies": [
1350
+
"pump"
1351
+
]
1352
+
},
1353
+
"get-stream@5.2.0": {
1354
+
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
1355
+
"dependencies": [
1356
+
"pump"
1357
+
]
1358
+
},
1359
+
"glob-parent@5.1.2": {
1360
+
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1361
+
"dependencies": [
1362
+
"is-glob"
1363
+
]
1364
+
},
1365
+
"global-dirs@2.1.0": {
1366
+
"integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
1367
+
"dependencies": [
1368
+
"ini"
1369
+
]
1370
+
},
686
1371
"gopd@1.2.0": {
687
1372
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
688
1373
},
1374
+
"got@9.6.0": {
1375
+
"integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
1376
+
"dependencies": [
1377
+
"@sindresorhus/is",
1378
+
"@szmarczak/http-timer",
1379
+
"cacheable-request",
1380
+
"decompress-response",
1381
+
"duplexer3",
1382
+
"get-stream@4.1.0",
1383
+
"lowercase-keys@1.0.1",
1384
+
"mimic-response",
1385
+
"p-cancelable",
1386
+
"to-readable-stream",
1387
+
"url-parse-lax"
1388
+
]
1389
+
},
1390
+
"graceful-fs@4.2.11": {
1391
+
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
1392
+
},
689
1393
"graphemer@1.4.0": {
690
1394
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
691
1395
},
1396
+
"has-ansi@2.0.0": {
1397
+
"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
1398
+
"dependencies": [
1399
+
"ansi-regex@2.1.1"
1400
+
]
1401
+
},
1402
+
"has-flag@3.0.0": {
1403
+
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
1404
+
},
1405
+
"has-flag@4.0.0": {
1406
+
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
1407
+
},
692
1408
"has-symbols@1.1.0": {
693
1409
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
694
1410
},
1411
+
"has-yarn@2.1.0": {
1412
+
"integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw=="
1413
+
},
695
1414
"hasown@2.0.2": {
696
1415
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
697
1416
"dependencies": [
698
1417
"function-bind"
699
1418
]
1419
+
},
1420
+
"http-cache-semantics@4.2.0": {
1421
+
"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="
700
1422
},
701
1423
"http-errors@2.0.0": {
702
1424
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
···
723
1445
"ieee754@1.2.1": {
724
1446
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
725
1447
},
1448
+
"import-lazy@2.1.0": {
1449
+
"integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A=="
1450
+
},
1451
+
"imurmurhash@0.1.4": {
1452
+
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
1453
+
},
726
1454
"inherits@2.0.4": {
727
1455
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
728
1456
},
1457
+
"ini@1.3.7": {
1458
+
"integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ=="
1459
+
},
729
1460
"ipaddr.js@1.9.1": {
730
1461
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
731
1462
},
1463
+
"is-binary-path@2.1.0": {
1464
+
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1465
+
"dependencies": [
1466
+
"binary-extensions"
1467
+
]
1468
+
},
1469
+
"is-ci@2.0.0": {
1470
+
"integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
1471
+
"dependencies": [
1472
+
"ci-info"
1473
+
],
1474
+
"bin": true
1475
+
},
1476
+
"is-extglob@2.1.1": {
1477
+
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
1478
+
},
1479
+
"is-fullwidth-code-point@3.0.0": {
1480
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
1481
+
},
1482
+
"is-glob@4.0.3": {
1483
+
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1484
+
"dependencies": [
1485
+
"is-extglob"
1486
+
]
1487
+
},
1488
+
"is-installed-globally@0.3.2": {
1489
+
"integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
1490
+
"dependencies": [
1491
+
"global-dirs",
1492
+
"is-path-inside"
1493
+
]
1494
+
},
1495
+
"is-npm@4.0.0": {
1496
+
"integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig=="
1497
+
},
1498
+
"is-number@7.0.0": {
1499
+
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
1500
+
},
1501
+
"is-obj@2.0.0": {
1502
+
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
1503
+
},
1504
+
"is-path-inside@3.0.3": {
1505
+
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
1506
+
},
732
1507
"is-promise@4.0.0": {
733
1508
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
734
1509
},
1510
+
"is-typedarray@1.0.0": {
1511
+
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
1512
+
},
1513
+
"is-wsl@1.1.0": {
1514
+
"integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="
1515
+
},
1516
+
"is-yarn-global@0.3.0": {
1517
+
"integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
1518
+
},
735
1519
"iso-datestring-validator@2.2.2": {
736
1520
"integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA=="
737
1521
},
1522
+
"json-buffer@3.0.0": {
1523
+
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="
1524
+
},
1525
+
"jsonfile@4.0.0": {
1526
+
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
1527
+
"optionalDependencies": [
1528
+
"graceful-fs"
1529
+
]
1530
+
},
1531
+
"keyv@3.1.0": {
1532
+
"integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
1533
+
"dependencies": [
1534
+
"json-buffer"
1535
+
]
1536
+
},
738
1537
"ky@1.8.1": {
739
1538
"integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw=="
740
1539
},
1540
+
"latest-version@5.1.0": {
1541
+
"integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
1542
+
"dependencies": [
1543
+
"package-json"
1544
+
]
1545
+
},
1546
+
"livereload-js@3.4.1": {
1547
+
"integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g=="
1548
+
},
1549
+
"livereload@0.9.3": {
1550
+
"integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
1551
+
"dependencies": [
1552
+
"chokidar",
1553
+
"livereload-js",
1554
+
"opts",
1555
+
"ws@7.5.10"
1556
+
],
1557
+
"bin": true
1558
+
},
1559
+
"locate-path@5.0.0": {
1560
+
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
1561
+
"dependencies": [
1562
+
"p-locate"
1563
+
]
1564
+
},
1565
+
"lowercase-keys@1.0.1": {
1566
+
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
1567
+
},
1568
+
"lowercase-keys@2.0.0": {
1569
+
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
1570
+
},
1571
+
"lru-cache@5.1.1": {
1572
+
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1573
+
"dependencies": [
1574
+
"yallist"
1575
+
]
1576
+
},
1577
+
"make-dir@3.1.0": {
1578
+
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1579
+
"dependencies": [
1580
+
"semver"
1581
+
]
1582
+
},
1583
+
"marked@1.2.9": {
1584
+
"integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==",
1585
+
"bin": true
1586
+
},
741
1587
"math-intrinsics@1.1.0": {
742
1588
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
743
1589
},
···
747
1593
"media-typer@1.1.0": {
748
1594
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
749
1595
},
1596
+
"medium-zoom@1.1.0": {
1597
+
"integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ=="
1598
+
},
750
1599
"merge-descriptors@1.0.3": {
751
1600
"integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="
752
1601
},
···
778
1627
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
779
1628
"bin": true
780
1629
},
1630
+
"mimic-response@1.0.1": {
1631
+
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
1632
+
},
1633
+
"min-indent@1.0.1": {
1634
+
"integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
1635
+
},
1636
+
"minimatch@9.0.5": {
1637
+
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1638
+
"dependencies": [
1639
+
"brace-expansion"
1640
+
]
1641
+
},
1642
+
"minimist@1.2.8": {
1643
+
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
1644
+
},
781
1645
"ms@2.0.0": {
782
1646
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
783
1647
},
···
797
1661
"multiformats@9.9.0": {
798
1662
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="
799
1663
},
1664
+
"nanoid@3.3.11": {
1665
+
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1666
+
"bin": true
1667
+
},
800
1668
"negotiator@0.6.3": {
801
1669
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
802
1670
},
803
1671
"negotiator@1.0.0": {
804
1672
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="
1673
+
},
1674
+
"nested-error-stacks@2.1.1": {
1675
+
"integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw=="
805
1676
},
806
1677
"node-fetch@2.7.0": {
807
1678
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
···
815
1686
"detect-libc"
816
1687
],
817
1688
"bin": true
1689
+
},
1690
+
"normalize-path@3.0.0": {
1691
+
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
1692
+
},
1693
+
"normalize-url@4.5.1": {
1694
+
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA=="
818
1695
},
819
1696
"object-inspect@1.13.4": {
820
1697
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="
···
822
1699
"on-exit-leak-free@2.1.2": {
823
1700
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="
824
1701
},
1702
+
"on-finished@2.3.0": {
1703
+
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
1704
+
"dependencies": [
1705
+
"ee-first"
1706
+
]
1707
+
},
825
1708
"on-finished@2.4.1": {
826
1709
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
827
1710
"dependencies": [
···
834
1717
"wrappy"
835
1718
]
836
1719
},
1720
+
"open@6.4.0": {
1721
+
"integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
1722
+
"dependencies": [
1723
+
"is-wsl"
1724
+
]
1725
+
},
1726
+
"opencollective-postinstall@2.0.3": {
1727
+
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
1728
+
"bin": true
1729
+
},
1730
+
"opts@2.0.2": {
1731
+
"integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg=="
1732
+
},
1733
+
"p-cancelable@1.1.0": {
1734
+
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
1735
+
},
1736
+
"p-event@4.2.0": {
1737
+
"integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==",
1738
+
"dependencies": [
1739
+
"p-timeout"
1740
+
]
1741
+
},
1742
+
"p-finally@1.0.0": {
1743
+
"integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="
1744
+
},
1745
+
"p-limit@2.3.0": {
1746
+
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
1747
+
"dependencies": [
1748
+
"p-try"
1749
+
]
1750
+
},
1751
+
"p-locate@4.1.0": {
1752
+
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1753
+
"dependencies": [
1754
+
"p-limit"
1755
+
]
1756
+
},
1757
+
"p-timeout@3.2.0": {
1758
+
"integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
1759
+
"dependencies": [
1760
+
"p-finally"
1761
+
]
1762
+
},
1763
+
"p-try@2.2.0": {
1764
+
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
1765
+
},
1766
+
"package-json@6.5.0": {
1767
+
"integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
1768
+
"dependencies": [
1769
+
"got",
1770
+
"registry-auth-token",
1771
+
"registry-url",
1772
+
"semver"
1773
+
]
1774
+
},
1775
+
"parent-require@1.0.0": {
1776
+
"integrity": "sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ=="
1777
+
},
837
1778
"parseurl@1.3.3": {
838
1779
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
839
1780
},
1781
+
"path-browserify@1.0.1": {
1782
+
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
1783
+
},
1784
+
"path-exists@4.0.0": {
1785
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
1786
+
},
840
1787
"path-to-regexp@0.1.12": {
841
1788
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
842
1789
},
843
1790
"path-to-regexp@8.2.0": {
844
1791
"integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="
845
1792
},
1793
+
"picocolors@1.1.1": {
1794
+
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
1795
+
},
1796
+
"picomatch@2.3.1": {
1797
+
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
1798
+
},
1799
+
"picomatch@4.0.3": {
1800
+
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="
1801
+
},
846
1802
"pino-abstract-transport@1.2.0": {
847
1803
"integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==",
848
1804
"dependencies": [
···
870
1826
],
871
1827
"bin": true
872
1828
},
1829
+
"postcss@8.5.6": {
1830
+
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
1831
+
"dependencies": [
1832
+
"nanoid",
1833
+
"picocolors",
1834
+
"source-map-js"
1835
+
]
1836
+
},
1837
+
"prepend-http@2.0.0": {
1838
+
"integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA=="
1839
+
},
1840
+
"prettier@3.6.2": {
1841
+
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
1842
+
"bin": true
1843
+
},
1844
+
"prismjs@1.30.0": {
1845
+
"integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="
1846
+
},
873
1847
"process-warning@3.0.0": {
874
1848
"integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="
875
1849
},
···
881
1855
"dependencies": [
882
1856
"forwarded",
883
1857
"ipaddr.js"
1858
+
]
1859
+
},
1860
+
"pump@3.0.3": {
1861
+
"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
1862
+
"dependencies": [
1863
+
"end-of-stream",
1864
+
"once"
1865
+
]
1866
+
},
1867
+
"pupa@2.1.1": {
1868
+
"integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
1869
+
"dependencies": [
1870
+
"escape-goat"
884
1871
]
885
1872
},
886
1873
"qs@6.13.0": {
···
925
1912
"unpipe"
926
1913
]
927
1914
},
1915
+
"rc@1.2.8": {
1916
+
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1917
+
"dependencies": [
1918
+
"deep-extend",
1919
+
"ini",
1920
+
"minimist",
1921
+
"strip-json-comments"
1922
+
],
1923
+
"bin": true
1924
+
},
928
1925
"readable-stream@4.7.0": {
929
1926
"integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
930
1927
"dependencies": [
···
935
1932
"string_decoder"
936
1933
]
937
1934
},
1935
+
"readdirp@3.6.0": {
1936
+
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1937
+
"dependencies": [
1938
+
"picomatch@2.3.1"
1939
+
]
1940
+
},
938
1941
"real-require@0.2.0": {
939
1942
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="
940
1943
},
1944
+
"registry-auth-token@4.2.2": {
1945
+
"integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==",
1946
+
"dependencies": [
1947
+
"rc"
1948
+
]
1949
+
},
1950
+
"registry-url@5.1.0": {
1951
+
"integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
1952
+
"dependencies": [
1953
+
"rc"
1954
+
]
1955
+
},
1956
+
"require-directory@2.1.1": {
1957
+
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
1958
+
},
1959
+
"require-main-filename@2.0.0": {
1960
+
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
1961
+
},
1962
+
"resolve-pathname@3.0.0": {
1963
+
"integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
1964
+
},
1965
+
"responselike@1.0.2": {
1966
+
"integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
1967
+
"dependencies": [
1968
+
"lowercase-keys@1.0.1"
1969
+
]
1970
+
},
1971
+
"rollup@4.46.4": {
1972
+
"integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==",
1973
+
"dependencies": [
1974
+
"@types/estree"
1975
+
],
1976
+
"optionalDependencies": [
1977
+
"@rollup/rollup-android-arm-eabi",
1978
+
"@rollup/rollup-android-arm64",
1979
+
"@rollup/rollup-darwin-arm64",
1980
+
"@rollup/rollup-darwin-x64",
1981
+
"@rollup/rollup-freebsd-arm64",
1982
+
"@rollup/rollup-freebsd-x64",
1983
+
"@rollup/rollup-linux-arm-gnueabihf",
1984
+
"@rollup/rollup-linux-arm-musleabihf",
1985
+
"@rollup/rollup-linux-arm64-gnu",
1986
+
"@rollup/rollup-linux-arm64-musl",
1987
+
"@rollup/rollup-linux-loongarch64-gnu",
1988
+
"@rollup/rollup-linux-ppc64-gnu",
1989
+
"@rollup/rollup-linux-riscv64-gnu",
1990
+
"@rollup/rollup-linux-riscv64-musl",
1991
+
"@rollup/rollup-linux-s390x-gnu",
1992
+
"@rollup/rollup-linux-x64-gnu",
1993
+
"@rollup/rollup-linux-x64-musl",
1994
+
"@rollup/rollup-win32-arm64-msvc",
1995
+
"@rollup/rollup-win32-ia32-msvc",
1996
+
"@rollup/rollup-win32-x64-msvc",
1997
+
"fsevents"
1998
+
],
1999
+
"bin": true
2000
+
},
941
2001
"router@2.2.0": {
942
2002
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
943
2003
"dependencies": [
···
957
2017
"safer-buffer@2.1.2": {
958
2018
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
959
2019
},
2020
+
"semver-diff@3.1.1": {
2021
+
"integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
2022
+
"dependencies": [
2023
+
"semver"
2024
+
]
2025
+
},
2026
+
"semver@6.3.1": {
2027
+
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2028
+
"bin": true
2029
+
},
960
2030
"send@0.19.0": {
961
2031
"integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
962
2032
"dependencies": [
···
970
2040
"http-errors",
971
2041
"mime",
972
2042
"ms@2.1.3",
973
-
"on-finished",
2043
+
"on-finished@2.4.1",
974
2044
"range-parser",
975
2045
"statuses@2.0.1"
976
2046
]
···
986
2056
"http-errors",
987
2057
"mime-types@3.0.1",
988
2058
"ms@2.1.3",
989
-
"on-finished",
2059
+
"on-finished@2.4.1",
990
2060
"range-parser",
991
2061
"statuses@2.0.2"
992
2062
]
···
1009
2079
"send@1.2.0"
1010
2080
]
1011
2081
},
2082
+
"set-blocking@2.0.0": {
2083
+
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
2084
+
},
1012
2085
"setprototypeof@1.2.0": {
1013
2086
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1014
2087
},
···
1048
2121
"side-channel-weakmap"
1049
2122
]
1050
2123
},
2124
+
"signal-exit@3.0.7": {
2125
+
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
2126
+
},
1051
2127
"sonic-boom@3.8.1": {
1052
2128
"integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==",
1053
2129
"dependencies": [
1054
2130
"atomic-sleep"
1055
2131
]
1056
2132
},
2133
+
"source-map-js@1.2.1": {
2134
+
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
2135
+
},
1057
2136
"split2@4.2.0": {
1058
2137
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="
2138
+
},
2139
+
"statuses@1.5.0": {
2140
+
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
1059
2141
},
1060
2142
"statuses@2.0.1": {
1061
2143
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
···
1063
2145
"statuses@2.0.2": {
1064
2146
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="
1065
2147
},
2148
+
"string-width@4.2.3": {
2149
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2150
+
"dependencies": [
2151
+
"emoji-regex",
2152
+
"is-fullwidth-code-point",
2153
+
"strip-ansi@6.0.1"
2154
+
]
2155
+
},
1066
2156
"string_decoder@1.3.0": {
1067
2157
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1068
2158
"dependencies": [
1069
2159
"safe-buffer"
1070
2160
]
1071
2161
},
2162
+
"strip-ansi@3.0.1": {
2163
+
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
2164
+
"dependencies": [
2165
+
"ansi-regex@2.1.1"
2166
+
]
2167
+
},
2168
+
"strip-ansi@6.0.1": {
2169
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2170
+
"dependencies": [
2171
+
"ansi-regex@5.0.1"
2172
+
]
2173
+
},
2174
+
"strip-indent@3.0.0": {
2175
+
"integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
2176
+
"dependencies": [
2177
+
"min-indent"
2178
+
]
2179
+
},
2180
+
"strip-json-comments@2.0.1": {
2181
+
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="
2182
+
},
2183
+
"supports-color@2.0.0": {
2184
+
"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="
2185
+
},
2186
+
"supports-color@5.5.0": {
2187
+
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2188
+
"dependencies": [
2189
+
"has-flag@3.0.0"
2190
+
]
2191
+
},
2192
+
"supports-color@7.2.0": {
2193
+
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2194
+
"dependencies": [
2195
+
"has-flag@4.0.0"
2196
+
]
2197
+
},
2198
+
"term-size@2.2.1": {
2199
+
"integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="
2200
+
},
1072
2201
"thread-stream@2.7.0": {
1073
2202
"integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==",
1074
2203
"dependencies": [
1075
2204
"real-require"
2205
+
]
2206
+
},
2207
+
"tinydate@1.3.0": {
2208
+
"integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w=="
2209
+
},
2210
+
"tinyglobby@0.2.14_picomatch@4.0.3": {
2211
+
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
2212
+
"dependencies": [
2213
+
"fdir",
2214
+
"picomatch@4.0.3"
1076
2215
]
1077
2216
},
1078
2217
"tlds@1.259.0": {
1079
2218
"integrity": "sha512-AldGGlDP0PNgwppe2quAvuBl18UcjuNtOnDuUkqhd6ipPqrYYBt3aTxK1QTsBVknk97lS2JcafWMghjGWFtunw==",
1080
2219
"bin": true
1081
2220
},
2221
+
"to-readable-stream@1.0.0": {
2222
+
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q=="
2223
+
},
2224
+
"to-regex-range@5.0.1": {
2225
+
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2226
+
"dependencies": [
2227
+
"is-number"
2228
+
]
2229
+
},
1082
2230
"toidentifier@1.0.1": {
1083
2231
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1084
2232
},
1085
2233
"tr46@0.0.3": {
1086
2234
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
1087
2235
},
2236
+
"ts-morph@24.0.0": {
2237
+
"integrity": "sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==",
2238
+
"dependencies": [
2239
+
"@ts-morph/common",
2240
+
"code-block-writer"
2241
+
]
2242
+
},
2243
+
"tweezer.js@1.5.0": {
2244
+
"integrity": "sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ=="
2245
+
},
2246
+
"type-fest@0.8.1": {
2247
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
2248
+
},
1088
2249
"type-is@1.6.18": {
1089
2250
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1090
2251
"dependencies": [
···
1100
2261
"mime-types@3.0.1"
1101
2262
]
1102
2263
},
2264
+
"typedarray-to-buffer@3.1.5": {
2265
+
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
2266
+
"dependencies": [
2267
+
"is-typedarray"
2268
+
]
2269
+
},
1103
2270
"uint8arrays@3.0.0": {
1104
2271
"integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==",
1105
2272
"dependencies": [
···
1115
2282
"undici-types@6.21.0": {
1116
2283
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
1117
2284
},
2285
+
"unique-string@2.0.0": {
2286
+
"integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
2287
+
"dependencies": [
2288
+
"crypto-random-string"
2289
+
]
2290
+
},
2291
+
"universalify@0.1.2": {
2292
+
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
2293
+
},
1118
2294
"unpipe@1.0.0": {
1119
2295
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1120
2296
},
2297
+
"update-notifier@4.1.3": {
2298
+
"integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
2299
+
"dependencies": [
2300
+
"boxen",
2301
+
"chalk@3.0.0",
2302
+
"configstore",
2303
+
"has-yarn",
2304
+
"import-lazy",
2305
+
"is-ci",
2306
+
"is-installed-globally",
2307
+
"is-npm",
2308
+
"is-yarn-global",
2309
+
"latest-version",
2310
+
"pupa",
2311
+
"semver-diff",
2312
+
"xdg-basedir"
2313
+
]
2314
+
},
2315
+
"url-parse-lax@3.0.0": {
2316
+
"integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
2317
+
"dependencies": [
2318
+
"prepend-http"
2319
+
]
2320
+
},
1121
2321
"utils-merge@1.0.1": {
1122
2322
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1123
2323
},
···
1127
2327
"vary@1.1.2": {
1128
2328
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1129
2329
},
2330
+
"vite@7.1.3_@types+node@22.15.15_picomatch@4.0.3": {
2331
+
"integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==",
2332
+
"dependencies": [
2333
+
"@types/node",
2334
+
"esbuild",
2335
+
"fdir",
2336
+
"picomatch@4.0.3",
2337
+
"postcss",
2338
+
"rollup",
2339
+
"tinyglobby"
2340
+
],
2341
+
"optionalDependencies": [
2342
+
"fsevents"
2343
+
],
2344
+
"optionalPeers": [
2345
+
"@types/node"
2346
+
],
2347
+
"bin": true
2348
+
},
1130
2349
"web-did-resolver@2.0.30": {
1131
2350
"integrity": "sha512-lsv0T+y/zD1bEVkcNfcppk4hQXBlqqoXfYcRG4183Yv53FkY29HNPGErwkNI/AG+lxxsUIR77JqS6pn9uHw/Vw==",
1132
2351
"dependencies": [
···
1144
2363
"webidl-conversions"
1145
2364
]
1146
2365
},
2366
+
"which-module@2.0.1": {
2367
+
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
2368
+
},
2369
+
"widest-line@3.1.0": {
2370
+
"integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
2371
+
"dependencies": [
2372
+
"string-width"
2373
+
]
2374
+
},
2375
+
"wrap-ansi@6.2.0": {
2376
+
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
2377
+
"dependencies": [
2378
+
"ansi-styles@4.3.0",
2379
+
"string-width",
2380
+
"strip-ansi@6.0.1"
2381
+
]
2382
+
},
1147
2383
"wrappy@1.0.2": {
1148
2384
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
1149
2385
},
2386
+
"write-file-atomic@3.0.3": {
2387
+
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
2388
+
"dependencies": [
2389
+
"imurmurhash",
2390
+
"is-typedarray",
2391
+
"signal-exit",
2392
+
"typedarray-to-buffer"
2393
+
]
2394
+
},
2395
+
"ws@7.5.10": {
2396
+
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="
2397
+
},
1150
2398
"ws@8.18.3": {
1151
2399
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="
2400
+
},
2401
+
"xdg-basedir@4.0.0": {
2402
+
"integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
2403
+
},
2404
+
"y18n@4.0.3": {
2405
+
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
2406
+
},
2407
+
"yallist@3.1.1": {
2408
+
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
2409
+
},
2410
+
"yargonaut@1.1.4": {
2411
+
"integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==",
2412
+
"dependencies": [
2413
+
"chalk@1.1.3",
2414
+
"figlet",
2415
+
"parent-require"
2416
+
]
2417
+
},
2418
+
"yargs-parser@18.1.3": {
2419
+
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
2420
+
"dependencies": [
2421
+
"camelcase",
2422
+
"decamelize"
2423
+
]
2424
+
},
2425
+
"yargs@15.4.1": {
2426
+
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
2427
+
"dependencies": [
2428
+
"cliui",
2429
+
"decamelize",
2430
+
"find-up",
2431
+
"get-caller-file",
2432
+
"require-directory",
2433
+
"require-main-filename",
2434
+
"set-blocking",
2435
+
"string-width",
2436
+
"which-module",
2437
+
"y18n",
2438
+
"yargs-parser"
2439
+
]
2440
+
},
2441
+
"yesno@0.4.0": {
2442
+
"integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA=="
1152
2443
},
1153
2444
"zod@3.25.46": {
1154
2445
"integrity": "sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ=="
docs/.nojekyll
docs/.nojekyll
This is a binary file and will not be displayed.
+18
docs/README.md
+18
docs/README.md
···
1
+
# Skylite
2
+
3
+
> An attempt at splitting the (Bluesky) AppView
4
+
5
+
- Uses [Microcosm](https://microcosm.blue/)
6
+
- Portable with [SQLite](https://jsr.io/@db/sqlite) and [Deno](https://deno.land/)
7
+
- Built with [type safety](https://www.npmjs.com/package/@atproto/lex-cli)
8
+
9
+

10
+
11
+
read more about the structure of Skylite in [structure.md](structure.md)
12
+
13
+
# Skylite Dev Docs
14
+
skylite dev docs is a documentation website to host all of the notes for developing skylite
15
+
16
+
all lexicons are listed in the [Lexicons](httpindex) section
17
+
18
+
more notes in [Dev Notes](notesindex) section
+11
docs/_coverpage.md
+11
docs/_coverpage.md
···
1
+
<!--  -->
2
+
3
+
# Skylite Dev Docs <small>pre alpha</small>
4
+
5
+
> Documentation for Designing and Developing Skylite
6
+
7
+
docs are still being written!
8
+
9
+
[Git Repo](https://tangled.sh/@whey.party/skylite)
10
+
[Dev Notes](notesindex.md)
11
+
[Lexicons](httpindex.md)
+35
docs/app.bsky.actor.getProfile.md
+35
docs/app.bsky.actor.getProfile.md
···
1
+
## app.bsky.actor.getProfile
2
+
3
+
```js
4
+
{
5
+
"lexicon": 1,
6
+
"id": "app.bsky.actor.getProfile",
7
+
"defs": {
8
+
"main": {
9
+
"type": "query",
10
+
"description": "Get detailed profile view of an actor. Does not require auth, but contains relevant metadata with auth.",
11
+
"parameters": {
12
+
"type": "params",
13
+
"required": [
14
+
"actor"
15
+
],
16
+
"properties": {
17
+
"actor": {
18
+
"type": "string",
19
+
"format": "at-identifier",
20
+
"description": "Handle or DID of account to fetch profile of."
21
+
}
22
+
}
23
+
},
24
+
"output": {
25
+
"encoding": "application/json",
26
+
"schema": {
27
+
"type": "ref",
28
+
"ref": "app.bsky.actor.defs#profileViewDetailed"
29
+
}
30
+
}
31
+
}
32
+
}
33
+
}
34
+
```
35
+
---
+50
docs/app.bsky.actor.getProfiles.md
+50
docs/app.bsky.actor.getProfiles.md
···
1
+
2
+
## app.bsky.actor.getProfiles
3
+
4
+
```js
5
+
{
6
+
"lexicon": 1,
7
+
"id": "app.bsky.actor.getProfiles",
8
+
"defs": {
9
+
"main": {
10
+
"type": "query",
11
+
"description": "Get detailed profile views of multiple actors.",
12
+
"parameters": {
13
+
"type": "params",
14
+
"required": [
15
+
"actors"
16
+
],
17
+
"properties": {
18
+
"actors": {
19
+
"type": "array",
20
+
"items": {
21
+
"type": "string",
22
+
"format": "at-identifier"
23
+
},
24
+
"maxLength": 25
25
+
}
26
+
}
27
+
},
28
+
"output": {
29
+
"encoding": "application/json",
30
+
"schema": {
31
+
"type": "object",
32
+
"required": [
33
+
"profiles"
34
+
],
35
+
"properties": {
36
+
"profiles": {
37
+
"type": "array",
38
+
"items": {
39
+
"type": "ref",
40
+
"ref": "app.bsky.actor.defs#profileViewDetailed"
41
+
}
42
+
}
43
+
}
44
+
}
45
+
}
46
+
}
47
+
}
48
+
}
49
+
```
50
+
---
+57
docs/app.bsky.feed.getActorFeeds.md
+57
docs/app.bsky.feed.getActorFeeds.md
···
1
+
## app.bsky.feed.getActorFeeds
2
+
3
+
```js
4
+
{
5
+
"lexicon": 1,
6
+
"id": "app.bsky.feed.getActorFeeds",
7
+
"defs": {
8
+
"main": {
9
+
"type": "query",
10
+
"description": "Get a list of feeds (feed generator records) created by the actor (in the actor's repo).",
11
+
"parameters": {
12
+
"type": "params",
13
+
"required": [
14
+
"actor"
15
+
],
16
+
"properties": {
17
+
"actor": {
18
+
"type": "string",
19
+
"format": "at-identifier"
20
+
},
21
+
"limit": {
22
+
"type": "integer",
23
+
"minimum": 1,
24
+
"maximum": 100,
25
+
"default": 50
26
+
},
27
+
"cursor": {
28
+
"type": "string"
29
+
}
30
+
}
31
+
},
32
+
"output": {
33
+
"encoding": "application/json",
34
+
"schema": {
35
+
"type": "object",
36
+
"required": [
37
+
"feeds"
38
+
],
39
+
"properties": {
40
+
"cursor": {
41
+
"type": "string"
42
+
},
43
+
"feeds": {
44
+
"type": "array",
45
+
"items": {
46
+
"type": "ref",
47
+
"ref": "app.bsky.feed.defs#generatorView"
48
+
}
49
+
}
50
+
}
51
+
}
52
+
}
53
+
}
54
+
}
55
+
}
56
+
```
57
+
---
+54
docs/app.bsky.feed.getFeedGenerator.md
+54
docs/app.bsky.feed.getFeedGenerator.md
···
1
+
2
+
## app.bsky.feed.getFeedGenerator
3
+
4
+
```js
5
+
{
6
+
"lexicon": 1,
7
+
"id": "app.bsky.feed.getFeedGenerator",
8
+
"defs": {
9
+
"main": {
10
+
"type": "query",
11
+
"description": "Get information about a feed generator. Implemented by AppView.",
12
+
"parameters": {
13
+
"type": "params",
14
+
"required": [
15
+
"feed"
16
+
],
17
+
"properties": {
18
+
"feed": {
19
+
"type": "string",
20
+
"format": "at-uri",
21
+
"description": "AT-URI of the feed generator record."
22
+
}
23
+
}
24
+
},
25
+
"output": {
26
+
"encoding": "application/json",
27
+
"schema": {
28
+
"type": "object",
29
+
"required": [
30
+
"view",
31
+
"isOnline",
32
+
"isValid"
33
+
],
34
+
"properties": {
35
+
"view": {
36
+
"type": "ref",
37
+
"ref": "app.bsky.feed.defs#generatorView"
38
+
},
39
+
"isOnline": {
40
+
"type": "boolean",
41
+
"description": "Indicates whether the feed generator service has been online recently, or else seems to be inactive."
42
+
},
43
+
"isValid": {
44
+
"type": "boolean",
45
+
"description": "Indicates whether the feed generator service is compatible with the record declaration."
46
+
}
47
+
}
48
+
}
49
+
}
50
+
}
51
+
}
52
+
}
53
+
```
54
+
---
+50
docs/app.bsky.feed.getFeedGenerators.md
+50
docs/app.bsky.feed.getFeedGenerators.md
···
1
+
2
+
3
+
## app.bsky.feed.getFeedGenerators
4
+
5
+
```js
6
+
{
7
+
"lexicon": 1,
8
+
"id": "app.bsky.feed.getFeedGenerators",
9
+
"defs": {
10
+
"main": {
11
+
"type": "query",
12
+
"description": "Get information about a list of feed generators.",
13
+
"parameters": {
14
+
"type": "params",
15
+
"required": [
16
+
"feeds"
17
+
],
18
+
"properties": {
19
+
"feeds": {
20
+
"type": "array",
21
+
"items": {
22
+
"type": "string",
23
+
"format": "at-uri"
24
+
}
25
+
}
26
+
}
27
+
},
28
+
"output": {
29
+
"encoding": "application/json",
30
+
"schema": {
31
+
"type": "object",
32
+
"required": [
33
+
"feeds"
34
+
],
35
+
"properties": {
36
+
"feeds": {
37
+
"type": "array",
38
+
"items": {
39
+
"type": "ref",
40
+
"ref": "app.bsky.feed.defs#generatorView"
41
+
}
42
+
}
43
+
}
44
+
}
45
+
}
46
+
}
47
+
}
48
+
}
49
+
```
50
+
---
+52
docs/app.bsky.feed.getPosts.md
+52
docs/app.bsky.feed.getPosts.md
···
1
+
2
+
3
+
## app.bsky.feed.getPosts
4
+
5
+
```js
6
+
{
7
+
"lexicon": 1,
8
+
"id": "app.bsky.feed.getPosts",
9
+
"defs": {
10
+
"main": {
11
+
"type": "query",
12
+
"description": "Gets post views for a specified list of posts (by AT-URI). This is sometimes referred to as 'hydrating' a 'feed skeleton'.",
13
+
"parameters": {
14
+
"type": "params",
15
+
"required": [
16
+
"uris"
17
+
],
18
+
"properties": {
19
+
"uris": {
20
+
"type": "array",
21
+
"description": "List of post AT-URIs to return hydrated views for.",
22
+
"items": {
23
+
"type": "string",
24
+
"format": "at-uri"
25
+
},
26
+
"maxLength": 25
27
+
}
28
+
}
29
+
},
30
+
"output": {
31
+
"encoding": "application/json",
32
+
"schema": {
33
+
"type": "object",
34
+
"required": [
35
+
"posts"
36
+
],
37
+
"properties": {
38
+
"posts": {
39
+
"type": "array",
40
+
"items": {
41
+
"type": "ref",
42
+
"ref": "app.bsky.feed.defs#postView"
43
+
}
44
+
}
45
+
}
46
+
}
47
+
}
48
+
}
49
+
}
50
+
}
51
+
```
52
+
---
docs/assets/tldrawgraph.png
docs/assets/tldrawgraph.png
This is a binary file and will not be displayed.
+191
docs/customdefs.md
+191
docs/customdefs.md
···
1
+
## party.whey.app.bsky.actor.defs
2
+
3
+
```js
4
+
{
5
+
"lexicon": 1,
6
+
"id": "party.whey.app.bsky.actor.defs",
7
+
"defs": {
8
+
"profileViewBasicRef": {
9
+
"type": "object",
10
+
"required": [
11
+
"did"
12
+
],
13
+
"properties": {
14
+
"did": {
15
+
"type": "string",
16
+
"format": "did"
17
+
}
18
+
}
19
+
},
20
+
"profileViewRef": {
21
+
"type": "object",
22
+
"required": [
23
+
"did"
24
+
],
25
+
"properties": {
26
+
"did": {
27
+
"type": "string",
28
+
"format": "did"
29
+
}
30
+
}
31
+
},
32
+
"profileViewDetailedRef": {
33
+
"type": "object",
34
+
"required": [
35
+
"did"
36
+
],
37
+
"properties": {
38
+
"did": {
39
+
"type": "string",
40
+
"format": "did"
41
+
}
42
+
}
43
+
}
44
+
}
45
+
}
46
+
```
47
+
---
48
+
49
+
## party.whey.app.bsky.feed.defs
50
+
51
+
```js
52
+
{
53
+
"lexicon": 1,
54
+
"id": "party.whey.app.bsky.feed.defs",
55
+
"defs": {
56
+
"postViewRef": {
57
+
"type": "object",
58
+
"description": "A pointer to a app.bsky.feed.defs#postView",
59
+
"required": [
60
+
"uri",
61
+
"cid"
62
+
],
63
+
"properties": {
64
+
"uri": {
65
+
"type": "string",
66
+
"format": "at-uri"
67
+
},
68
+
"cid": {
69
+
"type": "string",
70
+
"format": "cid"
71
+
}
72
+
}
73
+
},
74
+
"feedViewPostRef": {
75
+
"type": "object",
76
+
"required": [
77
+
"post"
78
+
],
79
+
"properties": {
80
+
"post": {
81
+
"type": "union",
82
+
"refs": [
83
+
"app.bsky.feed.defs#postView",
84
+
"#postViewRef"
85
+
]
86
+
},
87
+
"reply": {
88
+
"type": "union",
89
+
"refs": [
90
+
"app.bsky.feed.defs#replyRef",
91
+
"#replyRef"
92
+
]
93
+
},
94
+
"reason": {
95
+
"type": "union",
96
+
"refs": [
97
+
"app.bsky.feed.defs#reasonRepost",
98
+
"app.bsky.feed.defs#reasonPin"
99
+
]
100
+
},
101
+
"feedContext": {
102
+
"type": "string",
103
+
"description": "Context provided by feed generator that may be passed back alongside interactions.",
104
+
"maxLength": 2000
105
+
},
106
+
"reqId": {
107
+
"type": "string",
108
+
"description": "Unique identifier per request that may be passed back alongside interactions.",
109
+
"maxLength": 100
110
+
}
111
+
}
112
+
},
113
+
"replyRef": {
114
+
"type": "object",
115
+
"required": [
116
+
"root",
117
+
"parent"
118
+
],
119
+
"properties": {
120
+
"root": {
121
+
"type": "union",
122
+
"refs": [
123
+
"#postViewRef",
124
+
"app.bsky.feed.defs#postView",
125
+
"app.bsky.feed.defs#notFoundPost",
126
+
"app.bsky.feed.defs#blockedPost"
127
+
]
128
+
},
129
+
"parent": {
130
+
"type": "union",
131
+
"refs": [
132
+
"#postViewRef",
133
+
"app.bsky.feed.defs#postView",
134
+
"app.bsky.feed.defs#notFoundPost",
135
+
"app.bsky.feed.defs#blockedPost"
136
+
]
137
+
},
138
+
"grandparentAuthor": {
139
+
"type": "union",
140
+
"refs": [
141
+
"party.whey.app.bsky.actor.defs#profileViewBasicRef",
142
+
"app.bsky.actor.defs#profileViewBasic"
143
+
],
144
+
"description": "When parent is a reply to another post, this is the author of that post."
145
+
}
146
+
}
147
+
},
148
+
"threadViewPostRef": {
149
+
"type": "object",
150
+
"required": [
151
+
"post"
152
+
],
153
+
"properties": {
154
+
"post": {
155
+
"type": "union",
156
+
"refs": [
157
+
"#postViewRef",
158
+
"app.bsky.feed.defs#postView"
159
+
]
160
+
},
161
+
"parent": {
162
+
"type": "union",
163
+
"refs": [
164
+
"#threadViewPostRef",
165
+
"app.bsky.feed.defs#threadViewPost",
166
+
"app.bsky.feed.defs#notFoundPost",
167
+
"app.bsky.feed.defs#blockedPost"
168
+
]
169
+
},
170
+
"replies": {
171
+
"type": "array",
172
+
"items": {
173
+
"type": "union",
174
+
"refs": [
175
+
"#threadViewPostRef",
176
+
"app.bsky.feed.defs#threadViewPost",
177
+
"app.bsky.feed.defs#notFoundPost",
178
+
"app.bsky.feed.defs#blockedPost"
179
+
]
180
+
}
181
+
},
182
+
"threadContext": {
183
+
"type": "ref",
184
+
"ref": "app.bsky.feed.defs#threadContext"
185
+
}
186
+
}
187
+
}
188
+
}
189
+
}
190
+
```
191
+
---
+21
docs/httpindex.md
+21
docs/httpindex.md
···
1
+
# Lexicons
2
+
- [Why?](whylexicons.md)
3
+
- [app.bsky.actor.getProfile](app.bsky.actor.getProfile.md)
4
+
- [app.bsky.actor.getProfiles](app.bsky.actor.getProfiles.md)
5
+
- [app.bsky.feed.getActorFeeds](app.bsky.feed.getActorFeeds.md)
6
+
- [app.bsky.feed.getFeedGenerator](app.bsky.feed.getFeedGenerator.md)
7
+
- [app.bsky.feed.getFeedGenerators](app.bsky.feed.getFeedGenerators.md)
8
+
- [app.bsky.feed.getPosts](app.bsky.feed.getPosts.md)
9
+
- [custom defs](customdefs.md)
10
+
- [party.whey.app.bsky.feed.getActorLikesPartial](party.whey.app.bsky.feed.getActorLikesPartial.md)
11
+
- [party.whey.app.bsky.feed.getAuthorFeedPartial](party.whey.app.bsky.feed.getAuthorFeedPartial.md)
12
+
- [party.whey.app.bsky.feed.getLikesPartial](party.whey.app.bsky.feed.getLikesPartial.md)
13
+
- [party.whey.app.bsky.feed.getPostThreadPartial](party.whey.app.bsky.feed.getPostThreadPartial.md)
14
+
- [party.whey.app.bsky.feed.getQuotesPartial](party.whey.app.bsky.feed.getQuotesPartial.md)
15
+
- [party.whey.app.bsky.feed.getRepostedByPartial](party.whey.app.bsky.feed.getRepostedByPartial.md)
16
+
<!-- idk about these -->
17
+
- [party.whey.app.bsky.feed.getListFeedPartial](party.whey.app.bsky.feed.getListFeedPartial.md)
18
+
<!-- not implemented yet -->
19
+
- [app.bsky.graph.getLists](app.bsky.graph.getLists.md)
20
+
- [app.bsky.graph.getList](app.bsky.graph.getList.md)
21
+
- [app.bsky.graph.getActorStarterPacks](app.bsky.graph.getActorStarterPacks.md)
+48
docs/index.html
+48
docs/index.html
···
1
+
<!DOCTYPE html>
2
+
<html lang="en">
3
+
<head>
4
+
<meta charset="UTF-8" />
5
+
<title>Document</title>
6
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
7
+
<meta name="description" content="Description" />
8
+
<meta
9
+
name="viewport"
10
+
content="width=device-width, initial-scale=1.0, minimum-scale=1.0"
11
+
/>
12
+
<link rel="stylesheet" media="(prefers-color-scheme: light)" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
13
+
<link rel="stylesheet" media="(prefers-color-scheme: dark)" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple-dark.css">
14
+
<style>
15
+
.cover.show{
16
+
max-height: 50dvh;
17
+
height: 50dvh;
18
+
min-height: 400px;
19
+
}
20
+
.app-nav{
21
+
position: fixed;
22
+
}
23
+
section.show+main>aside{
24
+
display: none;
25
+
}
26
+
section.show+main>.sidebar-toggle{
27
+
display: none;
28
+
}
29
+
section.show+main>.content{
30
+
margin-left: 0;
31
+
}
32
+
</style>
33
+
</head>
34
+
<body>
35
+
<div id="app"></div>
36
+
<script>
37
+
window.$docsify = {
38
+
name: "Skylite Dev Docs",
39
+
//repo: "https://tangled.sh/@whey.party/skylite",
40
+
loadSidebar: true,
41
+
loadNavbar: true,
42
+
coverpage: true,
43
+
};
44
+
</script>
45
+
<!-- Docsify v4 -->
46
+
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
47
+
</body>
48
+
</html>
+1
docs/indexing.md
+1
docs/indexing.md
···
1
+
# Indexing
+6
docs/notesindex.md
+6
docs/notesindex.md
+68
docs/party.whey.app.bsky.feed.getActorLikesPartial.md
+68
docs/party.whey.app.bsky.feed.getActorLikesPartial.md
···
1
+
## party.whey.app.bsky.feed.getActorLikesPartial
2
+
3
+
```js
4
+
{
5
+
"lexicon": 1,
6
+
"id": "party.whey.app.bsky.feed.getActorLikesPartial",
7
+
"defs": {
8
+
"main": {
9
+
"type": "query",
10
+
"description": "Get a list of posts liked by an actor. May require auth, (if so, actor must be the requesting account).",
11
+
"parameters": {
12
+
"type": "params",
13
+
"required": [
14
+
"actor"
15
+
],
16
+
"properties": {
17
+
"actor": {
18
+
"type": "string",
19
+
"format": "at-identifier"
20
+
},
21
+
"limit": {
22
+
"type": "integer",
23
+
"minimum": 1,
24
+
"maximum": 100,
25
+
"default": 50
26
+
},
27
+
"cursor": {
28
+
"type": "string"
29
+
}
30
+
}
31
+
},
32
+
"output": {
33
+
"encoding": "application/json",
34
+
"schema": {
35
+
"type": "object",
36
+
"required": [
37
+
"feed"
38
+
],
39
+
"properties": {
40
+
"cursor": {
41
+
"type": "string"
42
+
},
43
+
"feed": {
44
+
"type": "array",
45
+
"items": {
46
+
"type": "union",
47
+
"refs": [
48
+
"party.whey.app.bsky.feed.defs#feedViewPostRef",
49
+
"app.bsky.feed.defs#feedViewPost"
50
+
]
51
+
}
52
+
}
53
+
}
54
+
}
55
+
},
56
+
"errors": [
57
+
{
58
+
"name": "BlockedActor"
59
+
},
60
+
{
61
+
"name": "BlockedByActor"
62
+
}
63
+
]
64
+
}
65
+
}
66
+
}
67
+
```
68
+
---
+85
docs/party.whey.app.bsky.feed.getAuthorFeedPartial.md
+85
docs/party.whey.app.bsky.feed.getAuthorFeedPartial.md
···
1
+
2
+
## party.whey.app.bsky.feed.getAuthorFeedPartial
3
+
4
+
```js
5
+
{
6
+
"lexicon": 1,
7
+
"id": "party.whey.app.bsky.feed.getAuthorFeedPartial",
8
+
"defs": {
9
+
"main": {
10
+
"type": "query",
11
+
"description": "Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.",
12
+
"parameters": {
13
+
"type": "params",
14
+
"required": [
15
+
"actor"
16
+
],
17
+
"properties": {
18
+
"actor": {
19
+
"type": "string",
20
+
"format": "at-identifier"
21
+
},
22
+
"limit": {
23
+
"type": "integer",
24
+
"minimum": 1,
25
+
"maximum": 100,
26
+
"default": 50
27
+
},
28
+
"cursor": {
29
+
"type": "string"
30
+
},
31
+
"filter": {
32
+
"type": "string",
33
+
"description": "Combinations of post/repost types to include in response.",
34
+
"knownValues": [
35
+
"posts_with_replies",
36
+
"posts_no_replies",
37
+
"posts_with_media",
38
+
"posts_and_author_threads",
39
+
"posts_with_video"
40
+
],
41
+
"default": "posts_with_replies"
42
+
},
43
+
"includePins": {
44
+
"type": "boolean",
45
+
"default": false
46
+
}
47
+
}
48
+
},
49
+
"output": {
50
+
"encoding": "application/json",
51
+
"schema": {
52
+
"type": "object",
53
+
"required": [
54
+
"feed"
55
+
],
56
+
"properties": {
57
+
"cursor": {
58
+
"type": "string"
59
+
},
60
+
"feed": {
61
+
"type": "array",
62
+
"items": {
63
+
"type": "union",
64
+
"refs": [
65
+
"party.whey.app.bsky.feed.defs#feedViewPostRef",
66
+
"app.bsky.feed.defs#feedViewPost"
67
+
]
68
+
}
69
+
}
70
+
}
71
+
}
72
+
},
73
+
"errors": [
74
+
{
75
+
"name": "BlockedActor"
76
+
},
77
+
{
78
+
"name": "BlockedByActor"
79
+
}
80
+
]
81
+
}
82
+
}
83
+
}
84
+
```
85
+
---
+95
docs/party.whey.app.bsky.feed.getLikesPartial.md
+95
docs/party.whey.app.bsky.feed.getLikesPartial.md
···
1
+
2
+
## party.whey.app.bsky.feed.getLikesPartial
3
+
4
+
```js
5
+
{
6
+
"lexicon": 1,
7
+
"id": "party.whey.app.bsky.feed.getLikesPartial",
8
+
"defs": {
9
+
"main": {
10
+
"type": "query",
11
+
"description": "Get like records which reference a subject (by AT-URI and CID).",
12
+
"parameters": {
13
+
"type": "params",
14
+
"required": [
15
+
"uri"
16
+
],
17
+
"properties": {
18
+
"uri": {
19
+
"type": "string",
20
+
"format": "at-uri",
21
+
"description": "AT-URI of the subject (eg, a post record)."
22
+
},
23
+
"cid": {
24
+
"type": "string",
25
+
"format": "cid",
26
+
"description": "CID of the subject record (aka, specific version of record), to filter likes."
27
+
},
28
+
"limit": {
29
+
"type": "integer",
30
+
"minimum": 1,
31
+
"maximum": 100,
32
+
"default": 50
33
+
},
34
+
"cursor": {
35
+
"type": "string"
36
+
}
37
+
}
38
+
},
39
+
"output": {
40
+
"encoding": "application/json",
41
+
"schema": {
42
+
"type": "object",
43
+
"required": [
44
+
"uri",
45
+
"likes"
46
+
],
47
+
"properties": {
48
+
"uri": {
49
+
"type": "string",
50
+
"format": "at-uri"
51
+
},
52
+
"cid": {
53
+
"type": "string",
54
+
"format": "cid"
55
+
},
56
+
"cursor": {
57
+
"type": "string"
58
+
},
59
+
"likes": {
60
+
"type": "array",
61
+
"items": {
62
+
"type": "ref",
63
+
"ref": "#like"
64
+
}
65
+
}
66
+
}
67
+
}
68
+
}
69
+
},
70
+
"like": {
71
+
"type": "object",
72
+
"required": [
73
+
"indexedAt",
74
+
"createdAt",
75
+
"actor"
76
+
],
77
+
"properties": {
78
+
"indexedAt": {
79
+
"type": "string",
80
+
"format": "datetime"
81
+
},
82
+
"createdAt": {
83
+
"type": "string",
84
+
"format": "datetime"
85
+
},
86
+
"actor": {
87
+
"type": "ref",
88
+
"ref": "party.whey.app.bsky.actor.defs#profileViewRef"
89
+
}
90
+
}
91
+
}
92
+
}
93
+
}
94
+
```
95
+
---
+65
docs/party.whey.app.bsky.feed.getListFeedPartial.md
+65
docs/party.whey.app.bsky.feed.getListFeedPartial.md
···
1
+
2
+
3
+
## party.whey.app.bsky.feed.getListFeedPartial
4
+
5
+
```js
6
+
{
7
+
"lexicon": 1,
8
+
"id": "party.whey.app.bsky.feed.getListFeedPartial",
9
+
"defs": {
10
+
"main": {
11
+
"type": "query",
12
+
"description": "Get a feed of recent posts from a list (posts and reposts from any actors on the list). Does not require auth.",
13
+
"parameters": {
14
+
"type": "params",
15
+
"required": [
16
+
"list"
17
+
],
18
+
"properties": {
19
+
"list": {
20
+
"type": "string",
21
+
"format": "at-uri",
22
+
"description": "Reference (AT-URI) to the list record."
23
+
},
24
+
"limit": {
25
+
"type": "integer",
26
+
"minimum": 1,
27
+
"maximum": 100,
28
+
"default": 50
29
+
},
30
+
"cursor": {
31
+
"type": "string"
32
+
}
33
+
}
34
+
},
35
+
"output": {
36
+
"encoding": "application/json",
37
+
"schema": {
38
+
"type": "object",
39
+
"required": [
40
+
"feed"
41
+
],
42
+
"properties": {
43
+
"cursor": {
44
+
"type": "string"
45
+
},
46
+
"feed": {
47
+
"type": "array",
48
+
"items": {
49
+
"type": "ref",
50
+
"ref": "party.whey.app.bsky.feed.defs#feedViewPostRef"
51
+
}
52
+
}
53
+
}
54
+
}
55
+
},
56
+
"errors": [
57
+
{
58
+
"name": "UnknownList"
59
+
}
60
+
]
61
+
}
62
+
}
63
+
}
64
+
```
65
+
---
+73
docs/party.whey.app.bsky.feed.getPostThreadPartial.md
+73
docs/party.whey.app.bsky.feed.getPostThreadPartial.md
···
1
+
2
+
3
+
## party.whey.app.bsky.feed.getPostThreadPartial
4
+
5
+
```js
6
+
{
7
+
"lexicon": 1,
8
+
"id": "party.whey.app.bsky.feed.getPostThreadPartial",
9
+
"defs": {
10
+
"main": {
11
+
"type": "query",
12
+
"description": "Get posts in a thread. Does not require auth, but additional metadata and filtering will be applied for authed requests.",
13
+
"parameters": {
14
+
"type": "params",
15
+
"required": [
16
+
"uri"
17
+
],
18
+
"properties": {
19
+
"uri": {
20
+
"type": "string",
21
+
"format": "at-uri",
22
+
"description": "Reference (AT-URI) to post record."
23
+
},
24
+
"depth": {
25
+
"type": "integer",
26
+
"description": "How many levels of reply depth should be included in response.",
27
+
"default": 6,
28
+
"minimum": 0,
29
+
"maximum": 1000
30
+
},
31
+
"parentHeight": {
32
+
"type": "integer",
33
+
"description": "How many levels of parent (and grandparent, etc) post to include.",
34
+
"default": 80,
35
+
"minimum": 0,
36
+
"maximum": 1000
37
+
}
38
+
}
39
+
},
40
+
"output": {
41
+
"encoding": "application/json",
42
+
"schema": {
43
+
"type": "object",
44
+
"required": [
45
+
"thread"
46
+
],
47
+
"properties": {
48
+
"thread": {
49
+
"type": "union",
50
+
"refs": [
51
+
"party.whey.app.bsky.feed.defs#threadViewPostRef",
52
+
"app.bsky.feed.defs#threadViewPost",
53
+
"app.bsky.feed.defs#notFoundPost",
54
+
"app.bsky.feed.defs#blockedPost"
55
+
]
56
+
},
57
+
"threadgate": {
58
+
"type": "ref",
59
+
"ref": "app.bsky.feed.defs#threadgateView"
60
+
}
61
+
}
62
+
}
63
+
},
64
+
"errors": [
65
+
{
66
+
"name": "NotFound"
67
+
}
68
+
]
69
+
}
70
+
}
71
+
}
72
+
```
73
+
---
+77
docs/party.whey.app.bsky.feed.getQuotesPartial.md
+77
docs/party.whey.app.bsky.feed.getQuotesPartial.md
···
1
+
2
+
3
+
## party.whey.app.bsky.feed.getQuotesPartial
4
+
5
+
```js
6
+
{
7
+
"lexicon": 1,
8
+
"id": "party.whey.app.bsky.feed.getQuotesPartial",
9
+
"defs": {
10
+
"main": {
11
+
"type": "query",
12
+
"description": "Get a list of quotes for a given post.",
13
+
"parameters": {
14
+
"type": "params",
15
+
"required": [
16
+
"uri"
17
+
],
18
+
"properties": {
19
+
"uri": {
20
+
"type": "string",
21
+
"format": "at-uri",
22
+
"description": "Reference (AT-URI) of post record"
23
+
},
24
+
"cid": {
25
+
"type": "string",
26
+
"format": "cid",
27
+
"description": "If supplied, filters to quotes of specific version (by CID) of the post record."
28
+
},
29
+
"limit": {
30
+
"type": "integer",
31
+
"minimum": 1,
32
+
"maximum": 100,
33
+
"default": 50
34
+
},
35
+
"cursor": {
36
+
"type": "string"
37
+
}
38
+
}
39
+
},
40
+
"output": {
41
+
"encoding": "application/json",
42
+
"schema": {
43
+
"type": "object",
44
+
"required": [
45
+
"uri",
46
+
"posts"
47
+
],
48
+
"properties": {
49
+
"uri": {
50
+
"type": "string",
51
+
"format": "at-uri"
52
+
},
53
+
"cid": {
54
+
"type": "string",
55
+
"format": "cid"
56
+
},
57
+
"cursor": {
58
+
"type": "string"
59
+
},
60
+
"posts": {
61
+
"type": "array",
62
+
"items": {
63
+
"type": "union",
64
+
"refs": [
65
+
"party.whey.app.bsky.feed.defs#postViewRef",
66
+
"app.bsky.feed.defs#postView"
67
+
]
68
+
}
69
+
}
70
+
}
71
+
}
72
+
}
73
+
}
74
+
}
75
+
}
76
+
```
77
+
---
+75
docs/party.whey.app.bsky.feed.getRepostedByPartial.md
+75
docs/party.whey.app.bsky.feed.getRepostedByPartial.md
···
1
+
2
+
## party.whey.app.bsky.feed.getRepostedByPartial
3
+
4
+
```js
5
+
{
6
+
"lexicon": 1,
7
+
"id": "party.whey.app.bsky.feed.getRepostedByPartial",
8
+
"defs": {
9
+
"main": {
10
+
"type": "query",
11
+
"description": "Get a list of reposts for a given post.",
12
+
"parameters": {
13
+
"type": "params",
14
+
"required": [
15
+
"uri"
16
+
],
17
+
"properties": {
18
+
"uri": {
19
+
"type": "string",
20
+
"format": "at-uri",
21
+
"description": "Reference (AT-URI) of post record"
22
+
},
23
+
"cid": {
24
+
"type": "string",
25
+
"format": "cid",
26
+
"description": "If supplied, filters to reposts of specific version (by CID) of the post record."
27
+
},
28
+
"limit": {
29
+
"type": "integer",
30
+
"minimum": 1,
31
+
"maximum": 100,
32
+
"default": 50
33
+
},
34
+
"cursor": {
35
+
"type": "string"
36
+
}
37
+
}
38
+
},
39
+
"output": {
40
+
"encoding": "application/json",
41
+
"schema": {
42
+
"type": "object",
43
+
"required": [
44
+
"uri",
45
+
"repostedBy"
46
+
],
47
+
"properties": {
48
+
"uri": {
49
+
"type": "string",
50
+
"format": "at-uri"
51
+
},
52
+
"cid": {
53
+
"type": "string",
54
+
"format": "cid"
55
+
},
56
+
"cursor": {
57
+
"type": "string"
58
+
},
59
+
"repostedBy": {
60
+
"type": "array",
61
+
"items": {
62
+
"type": "union",
63
+
"refs": [
64
+
"party.whey.app.bsky.actor.defs#profileViewRef",
65
+
"app.bsky.actor.defs#profileView"
66
+
]
67
+
}
68
+
}
69
+
}
70
+
}
71
+
}
72
+
}
73
+
}
74
+
}
75
+
```
+11
docs/structure.md
+11
docs/structure.md
···
1
+
# Structure
2
+
3
+

4
+
5
+
skylite splits the appview into two parts
6
+
7
+
- Public Access Index Server (Index)
8
+
- Contextual View Compositor Server (View)
9
+
10
+
in short, the index server hosts the hydration and skeleton indexes for users. and the view server collects data from many index servers and layers on top personal preferences and moderation data before handing it off to the application.
11
+
+6
docs/todo.md
+6
docs/todo.md
+13
docs/whylexicons.md
+13
docs/whylexicons.md
···
1
+
# why
2
+
3
+
designing lexicons are weird
4
+
5
+
these are the XRPC methods i think are required for a minimal functioning bluesky index to function and pass around data
6
+
7
+
some of the methods here reuse existing app.bsky.* XRPC methods, but some are custom under the party.whey.* namespace.
8
+
9
+
this is done because i believe that it is expensive to force every single node to return inlined / hydrated responses, when the view server that ingests and composites the final view might not even use the provided inlined / hydrated data in the first place.
10
+
11
+
and so, i created "Partial" variants of existing app.bsky.* methods, that allow for "skeleton" responses. specifically, for all methods relating to posts, they are allowed to return "PostViewRef" objects instead of the hydrated "PostView" object. PostViewRef is currently just identical to a strongRef and i am not yet certain if we should add more optional fields to it.
12
+
13
+
i do not think that the current lexicons are perfect, but they are good enough that i can continue development of other parts of the skylite system for now
+4
-2
index/onboardingBackfill.ts
+4
-2
index/onboardingBackfill.ts
···
1
-
import { systemDB, handleIndex } from "../main.ts"
1
+
import { indexServerIndexer } from "../indexserver.ts";
2
+
import { systemDB } from "../main.ts"
2
3
import { FINEPDSAndHandleFromDid } from "../utils/identity.ts";
3
4
4
5
···
68
69
const rev = undefined;
69
70
const aturi = uri;
70
71
71
-
handleIndex({
72
+
indexServerIndexer({
72
73
op,
73
74
doer,
74
75
rev,
75
76
aturi,
76
77
value,
77
78
indexsrc: "onboarding_backfill",
79
+
userdbname: did,
78
80
})
79
81
return;
80
82
// console.log(`[BACKFILL] ${collection} -> ${uri}`);
+1
index/types.ts
+1
index/types.ts
+304
-5
indexserver.ts
+304
-5
indexserver.ts
···
1
+
import { indexHandlerContext } from "./index/types.ts";
2
+
3
+
import { validateRecord } from "./utils/records.ts";
4
+
import { searchParamsToJson, withCors } from "./utils/server.ts";
5
+
import * as IndexServerTypes from "./utils/indexservertypes.ts";
6
+
1
7
export async function indexServerHandler(req: Request): Promise<Response> {
2
8
const url = new URL(req.url);
3
-
4
-
if (url.pathname === "/ping") {
5
-
return new Response("pong", { status: 200 });
9
+
const pathname = url.pathname;
10
+
const bskyUrl = `https://api.bsky.app${pathname}${url.search}`;
11
+
const hasAuth = req.headers.has("authorization");
12
+
const xrpcMethod = pathname.startsWith("/xrpc/")
13
+
? pathname.slice("/xrpc/".length)
14
+
: null;
15
+
const searchParams = searchParamsToJson(url.searchParams);
16
+
const jsonUntyped = searchParams;
17
+
18
+
switch (xrpcMethod) {
19
+
case "app.bsky.actor.getProfile": {
20
+
const jsonTyped =
21
+
jsonUntyped as IndexServerTypes.AppBskyActorGetProfile.QueryParams;
22
+
23
+
const response: IndexServerTypes.AppBskyActorGetProfile.OutputSchema = {};
24
+
25
+
return new Response(JSON.stringify(response), {
26
+
headers: withCors({ "Content-Type": "application/json" }),
27
+
});
28
+
}
29
+
case "app.bsky.actor.getProfiles": {
30
+
const jsonTyped =
31
+
jsonUntyped as IndexServerTypes.AppBskyActorGetProfiles.QueryParams;
32
+
33
+
const response: IndexServerTypes.AppBskyActorGetProfiles.OutputSchema =
34
+
{};
35
+
36
+
return new Response(JSON.stringify(response), {
37
+
headers: withCors({ "Content-Type": "application/json" }),
38
+
});
39
+
}
40
+
case "app.bsky.feed.getActorFeeds": {
41
+
const jsonTyped =
42
+
jsonUntyped as IndexServerTypes.AppBskyFeedGetActorFeeds.QueryParams;
43
+
44
+
const response: IndexServerTypes.AppBskyFeedGetActorFeeds.OutputSchema =
45
+
{};
46
+
47
+
return new Response(JSON.stringify(response), {
48
+
headers: withCors({ "Content-Type": "application/json" }),
49
+
});
50
+
}
51
+
case "app.bsky.feed.getFeedGenerator": {
52
+
const jsonTyped =
53
+
jsonUntyped as IndexServerTypes.AppBskyFeedGetFeedGenerator.QueryParams;
54
+
55
+
const response: IndexServerTypes.AppBskyFeedGetFeedGenerator.OutputSchema =
56
+
{};
57
+
58
+
return new Response(JSON.stringify(response), {
59
+
headers: withCors({ "Content-Type": "application/json" }),
60
+
});
61
+
}
62
+
case "app.bsky.feed.getFeedGenerators": {
63
+
const jsonTyped =
64
+
jsonUntyped as IndexServerTypes.AppBskyFeedGetFeedGenerators.QueryParams;
65
+
66
+
const response: IndexServerTypes.AppBskyFeedGetFeedGenerators.OutputSchema =
67
+
{};
68
+
69
+
return new Response(JSON.stringify(response), {
70
+
headers: withCors({ "Content-Type": "application/json" }),
71
+
});
72
+
}
73
+
case "app.bsky.feed.getPosts": {
74
+
const jsonTyped =
75
+
jsonUntyped as IndexServerTypes.AppBskyFeedGetPosts.QueryParams;
76
+
77
+
const response: IndexServerTypes.AppBskyFeedGetPosts.OutputSchema = {};
78
+
79
+
return new Response(JSON.stringify(response), {
80
+
headers: withCors({ "Content-Type": "application/json" }),
81
+
});
82
+
}
83
+
case "party.whey.app.bsky.feed.getActorLikesPartial": {
84
+
const jsonTyped =
85
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetActorLikesPartial.QueryParams;
86
+
87
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetActorLikesPartial.OutputSchema =
88
+
{};
89
+
90
+
return new Response(JSON.stringify(response), {
91
+
headers: withCors({ "Content-Type": "application/json" }),
92
+
});
93
+
}
94
+
case "party.whey.app.bsky.feed.getAuthorFeedPartial": {
95
+
const jsonTyped =
96
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetAuthorFeedPartial.QueryParams;
97
+
98
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetAuthorFeedPartial.OutputSchema =
99
+
{};
100
+
101
+
return new Response(JSON.stringify(response), {
102
+
headers: withCors({ "Content-Type": "application/json" }),
103
+
});
104
+
}
105
+
case "party.whey.app.bsky.feed.getLikesPartial": {
106
+
const jsonTyped =
107
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetLikesPartial.QueryParams;
108
+
109
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetLikesPartial.OutputSchema =
110
+
{};
111
+
112
+
return new Response(JSON.stringify(response), {
113
+
headers: withCors({ "Content-Type": "application/json" }),
114
+
});
115
+
}
116
+
case "party.whey.app.bsky.feed.getPostThreadPartial": {
117
+
const jsonTyped =
118
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetPostThreadPartial.QueryParams;
119
+
120
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetPostThreadPartial.OutputSchema =
121
+
{};
122
+
123
+
return new Response(JSON.stringify(response), {
124
+
headers: withCors({ "Content-Type": "application/json" }),
125
+
});
126
+
}
127
+
case "party.whey.app.bsky.feed.getQuotesPartial": {
128
+
const jsonTyped =
129
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetQuotesPartial.QueryParams;
130
+
131
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetQuotesPartial.OutputSchema =
132
+
{};
133
+
134
+
return new Response(JSON.stringify(response), {
135
+
headers: withCors({ "Content-Type": "application/json" }),
136
+
});
137
+
}
138
+
case "party.whey.app.bsky.feed.getRepostedByPartial": {
139
+
const jsonTyped =
140
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetRepostedByPartial.QueryParams;
141
+
142
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetRepostedByPartial.OutputSchema =
143
+
{};
144
+
145
+
return new Response(JSON.stringify(response), {
146
+
headers: withCors({ "Content-Type": "application/json" }),
147
+
});
148
+
}
149
+
case "party.whey.app.bsky.feed.getListFeedPartial": {
150
+
const jsonTyped =
151
+
jsonUntyped as IndexServerTypes.PartyWheyAppBskyFeedGetListFeedPartial.QueryParams;
152
+
153
+
const response: IndexServerTypes.PartyWheyAppBskyFeedGetListFeedPartial.OutputSchema =
154
+
{};
155
+
156
+
return new Response(JSON.stringify(response), {
157
+
headers: withCors({ "Content-Type": "application/json" }),
158
+
});
159
+
}
160
+
/* three more coming soon
161
+
app.bsky.graph.getLists
162
+
app.bsky.graph.getList
163
+
app.bsky.graph.getActorStarterPacks
164
+
*/
165
+
default: {
166
+
return new Response(
167
+
JSON.stringify({
168
+
error: "XRPCNotSupported",
169
+
message:
170
+
"HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that XRPC Not Supported",
171
+
}),
172
+
{
173
+
status: 404,
174
+
headers: withCors({ "Content-Type": "application/json" }),
175
+
}
176
+
);
177
+
}
6
178
}
7
179
8
-
return new Response("Not Found", { status: 404 });
9
-
}
180
+
// return new Response("Not Found", { status: 404 });
181
+
}
182
+
183
+
type linksQuery = {
184
+
target: string;
185
+
collection: string;
186
+
path: string;
187
+
cursor?: string;
188
+
};
189
+
type linksRecord = {
190
+
did: string;
191
+
collection: string;
192
+
rkey: string;
193
+
};
194
+
type linksRecordsResponse = {
195
+
total: string;
196
+
linking_records: linksRecord[];
197
+
cursor?: string;
198
+
};
199
+
type linksDidsResponse = {
200
+
total: string;
201
+
linking_dids: string[];
202
+
cursor?: string;
203
+
};
204
+
type linksCountResponse = {
205
+
total: string;
206
+
};
207
+
type linksAllResponse = {
208
+
links: Record<
209
+
string,
210
+
Record<
211
+
string,
212
+
{
213
+
records: number;
214
+
distinct_dids: number;
215
+
}
216
+
>
217
+
>;
218
+
};
219
+
220
+
type linksAllQuery = {
221
+
target: string;
222
+
};
223
+
224
+
export async function constellationAPIHandler(req: Request): Promise<Response> {
225
+
const url = new URL(req.url);
226
+
const pathname = url.pathname;
227
+
// const bskyUrl = `https://api.bsky.app${pathname}${url.search}`;
228
+
// const hasAuth = req.headers.has("authorization");
229
+
// const constellationMethod = pathname.startsWith("/links")
230
+
// ? pathname.slice("/links".length)
231
+
// : null;
232
+
const searchParams = searchParamsToJson(url.searchParams);
233
+
const jsonUntyped = searchParams;
234
+
235
+
switch (pathname) {
236
+
case "/links": {
237
+
const jsonTyped = jsonUntyped as linksQuery;
238
+
239
+
const response: linksRecordsResponse = {};
240
+
241
+
return new Response(JSON.stringify(response), {
242
+
headers: withCors({ "Content-Type": "application/json" }),
243
+
});
244
+
}
245
+
case "/links/distinct-dids": {
246
+
const jsonTyped = jsonUntyped as linksQuery;
247
+
248
+
const response: linksDidsResponse = {};
249
+
250
+
return new Response(JSON.stringify(response), {
251
+
headers: withCors({ "Content-Type": "application/json" }),
252
+
});
253
+
}
254
+
case "/links/count": {
255
+
const jsonTyped = jsonUntyped as linksQuery;
256
+
257
+
const response: linksCountResponse = {};
258
+
259
+
return new Response(JSON.stringify(response), {
260
+
headers: withCors({ "Content-Type": "application/json" }),
261
+
});
262
+
}
263
+
case "/links/count/distinct-dids": {
264
+
const jsonTyped = jsonUntyped as linksQuery;
265
+
266
+
const response: linksCountResponse = {};
267
+
268
+
return new Response(JSON.stringify(response), {
269
+
headers: withCors({ "Content-Type": "application/json" }),
270
+
});
271
+
}
272
+
case "/links/all": {
273
+
const jsonTyped = jsonUntyped as linksAllQuery;
274
+
275
+
const response: linksAllResponse = {};
276
+
277
+
return new Response(JSON.stringify(response), {
278
+
headers: withCors({ "Content-Type": "application/json" }),
279
+
});
280
+
}
281
+
default: {
282
+
return new Response(
283
+
JSON.stringify({
284
+
error: "idk NotSupported",
285
+
message:
286
+
"HEY hello there my name is whey dot party and you have used my custom appview that is very cool but have you considered that idk Not Supported",
287
+
}),
288
+
{
289
+
status: 404,
290
+
headers: withCors({ "Content-Type": "application/json" }),
291
+
}
292
+
);
293
+
}
294
+
}
295
+
}
296
+
297
+
export function indexServerIndexer(ctx: indexHandlerContext) {
298
+
const record = validateRecord(ctx.value);
299
+
switch (record?.$type) {
300
+
case "app.bsky.feed.like": {
301
+
return;
302
+
}
303
+
default: {
304
+
// what the hell
305
+
return;
306
+
}
307
+
}
308
+
}
+19
-29
main.ts
+19
-29
main.ts
···
13
13
import * as ViewServerTypes from "./utils/viewservertypes.ts";
14
14
import * as ATPAPI from "npm:@atproto/api";
15
15
import { didDocument } from "./utils/diddoc.ts";
16
-
import { cachedFetch, searchParamsToJson } from "./utils/server.ts";
17
-
import { indexServerHandler } from "./indexserver.ts";
16
+
import { cachedFetch, searchParamsToJson, withCors } from "./utils/server.ts";
17
+
import { constellationAPIHandler, indexServerHandler } from "./indexserver.ts";
18
18
import { viewServerHandler } from "./viewserver.ts";
19
19
20
20
export const slingshoturl = Deno.env.get("SLINGSHOT_URL");
···
70
70
"/xrpc/party.whey.app.bsky.feed.getPostThreadPartial",
71
71
"/xrpc/party.whey.app.bsky.feed.getQuotesPartial",
72
72
"/xrpc/party.whey.app.bsky.feed.getRepostedByPartial",
73
+
// more federated endpoints, not planned yet, lexicons will come later
74
+
/*
75
+
app.bsky.graph.getLists // doesnt need to because theres no items[], and its self ProfileViewBasic
76
+
app.bsky.graph.getList // needs to be Partial-ed (items[] union with ProfileViewRef)
77
+
app.bsky.graph.getActorStarterPacks // maybe doesnt need to be Partial-ed because its self ProfileViewBasic
78
+
79
+
app.bsky.feed.getListFeed // uhh actually already exists its getListFeedPartial
80
+
*/
81
+
"/xrpc/party.whey.app.bsky.feed.getListFeedPartial",
73
82
]);
74
83
75
84
Deno.serve(
···
114
123
// const xrpcMethod = pathname.startsWith("/xrpc/")
115
124
// ? pathname.slice("/xrpc/".length)
116
125
// : null;
126
+
const constellationMethod = pathname.startsWith("/links")
127
+
? pathname.slice("/links".length)
128
+
: null;
129
+
130
+
if (constellationMethod) {
131
+
return await constellationAPIHandler(req);
132
+
}
117
133
118
134
if (indexServerRoutes.has(pathname)) {
119
135
return await indexServerHandler(req);
···
123
139
}
124
140
);
125
141
126
-
export function withCors(headers: HeadersInit = {}) {
127
-
return {
128
-
"Access-Control-Allow-Origin": "*",
129
-
...headers,
130
-
};
131
-
}
132
-
const corsfree = {
133
-
"Access-Control-Allow-Origin": "*",
134
-
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
135
-
"Access-Control-Allow-Headers": "Content-Type, Authorization",
136
-
};
137
-
const json = "application/json";
138
-
139
142
// ------------------------------------------
140
143
// Indexer
141
-
// ------------------------------------------
142
-
143
-
export function handleIndex(ctx: indexHandlerContext) {
144
-
const record = validateRecord(ctx.value);
145
-
switch (record?.$type) {
146
-
case "app.bsky.feed.like": {
147
-
return;
148
-
}
149
-
default: {
150
-
// what the hell
151
-
return;
152
-
}
153
-
}
154
-
}
144
+
// ------------------------------------------
+8
utils/server.ts
+8
utils/server.ts
+18
-2
viewserver.ts
+18
-2
viewserver.ts
···
1
1
import ky from "npm:ky";
2
2
import { isGeneratorView } from "./indexserver/types/app/bsky/feed/defs.ts";
3
-
import { withCors } from "./main.ts";
4
3
import * as ViewServerTypes from "./utils/viewservertypes.ts";
5
4
import * as ATPAPI from "npm:@atproto/api";
6
5
import {
···
10
9
cachedFetch,
11
10
didWebToHttps,
12
11
getSlingshotRecord,
12
+
withCors,
13
13
} from "./utils/server.ts";
14
+
import { validateRecord } from "./utils/records.ts";
15
+
import { indexHandlerContext } from "./index/types.ts";
16
+
14
17
15
18
export async function viewServerHandler(req: Request): Promise<Response> {
16
19
const url = new URL(req.url);
···
474
477
}
475
478
}
476
479
477
-
return new Response("Not Found", { status: 404 });
480
+
// return new Response("Not Found", { status: 404 });
478
481
}
479
482
480
483
async function sendItToApiBskyApp(req: Request): Promise<Response> {
···
523
526
headers: proxyRes.headers,
524
527
});
525
528
}
529
+
530
+
export function viewServerIndexer(ctx: indexHandlerContext) {
531
+
const record = validateRecord(ctx.value);
532
+
switch (record?.$type) {
533
+
case "app.bsky.feed.like": {
534
+
return;
535
+
}
536
+
default: {
537
+
// what the hell
538
+
return;
539
+
}
540
+
}
541
+
}