Link bookmarking tool built on aproto (early alpha)

huge commit, somewhat works

I just haven't commited in too long oops

finxol.io c942c1f6 5a36d14f

verified
+8 -1
.zed/settings.json
···
{
-
"language_servers": ["deno"]
+
"language_servers": [
+
"deno",
+
"!vtsls",
+
"!typescript-language-server",
+
"!biome",
+
"!harper",
+
"..."
+
]
}
+16 -2
app.config.ts
···
import { defineConfig } from "@solidjs/start/config"
-
import UnoCSS from "unocss/vite"
+
import tailwindcss from "@tailwindcss/vite"
+
+
import { dirname, resolve } from "node:path"
+
import { fileURLToPath } from "node:url"
+
+
const __filename = fileURLToPath(import.meta.url)
+
const __dirname = dirname(__filename)
export default defineConfig({
+
middleware: "src/middleware/protected.ts",
vite: {
-
plugins: [UnoCSS()],
+
plugins: [tailwindcss()],
+
build: { target: "esnext" },
+
resolve: {
+
alias: {
+
"@": resolve(__dirname, "./src"),
+
},
+
},
},
+
server: { esbuild: { options: { target: "esnext" } } },
})
+16
components.json
···
+
{
+
"$schema": "https://shadcn-solid.com/schema.json",
+
"tailwind": {
+
"config": "tailwind.config.cjs",
+
"css": {
+
"path": "src/assets/styles.css",
+
"variable": true
+
},
+
"color": "slate",
+
"prefix": ""
+
},
+
"alias": {
+
"component": "@/components",
+
"cn": "@/lib/cn"
+
}
+
}
+1 -1
deno.json
···
{
"lint": {
"rules": {
-
"tags": ["recommended"],
+
"tags": ["recommended", "react", "jsx"],
"exclude": ["no-sloppy-imports"]
}
},
+6
lex.config.ts
···
+
import { defineLexiconConfig } from '@atcute/lex-cli';
+
+
export default defineLexiconConfig({
+
files: ['lexicons/**/*.json'],
+
outdir: 'src/lexicons/',
+
});
+19 -3
package.json
···
"scripts": {
"dev": "NODE_ENV=development vinxi dev",
"build": "vinxi build",
-
"build:lexicons": "tsp compile ./src/typelex/*.tsp",
+
"build:lexicons": "pnpm run generate:lexicons && lex gen-ts-obj ./lexicons/**/*.json > ./src/lexicons/lex.ts",
+
"generate:lexicons": "tsp compile ./src/typelex/*.tsp",
"start": "vinxi start"
},
"dependencies": {
+
"@atcute/atproto": "^3.1.4",
+
"@atcute/bluesky": "^3.2.3",
+
"@atcute/client": "^4.0.3",
+
"@atcute/identity": "^1.1.0",
+
"@atcute/identity-resolver": "^1.1.3",
+
"@atcute/lex-cli": "^2.2.2",
+
"@atcute/lexicons": "^1.2.2",
"@atproto-labs/handle-resolver-node": "^0.1.20",
+
"@atproto/api": "^0.17.3",
+
"@atproto/lex-cli": "^0.9.5",
+
"@atproto/lexicon": "^0.5.1",
"@atproto/oauth-client": "^0.3.8",
"@atproto/syntax": "^0.4.1",
+
"@atproto/xrpc": "^0.7.5",
"@bigmoves/atproto-oauth-client": "jsr:^0.2.0",
"@solidjs/router": "^0.15.0",
"@solidjs/start": "^1.1.0",
+
"@tailwindcss/vite": "^4.1.14",
"@typelex/emitter": "^0.1.6",
"@typespec/compiler": "^1.5.0",
"@unocss/reset": "^0.65.1",
-
"iron-session": "^8.0.4",
+
"class-variance-authority": "^0.7.1",
+
"clsx": "^2.1.1",
"solid-js": "^1.9.5",
-
"unocss": "^0.65.1",
+
"tailwind-merge": "^3.3.1",
+
"tailwindcss": "^4.1.14",
+
"tailwindcss-animate": "^1.0.7",
"vinxi": "^0.5.7"
},
"engines": {
+872 -608
pnpm-lock.yaml
···
.:
dependencies:
+
'@atcute/atproto':
+
specifier: ^3.1.4
+
version: 3.1.4
+
'@atcute/bluesky':
+
specifier: ^3.2.3
+
version: 3.2.3
+
'@atcute/client':
+
specifier: ^4.0.3
+
version: 4.0.3
+
'@atcute/identity':
+
specifier: ^1.1.0
+
version: 1.1.0
+
'@atcute/identity-resolver':
+
specifier: ^1.1.3
+
version: 1.1.3(@atcute/identity@1.1.0)
+
'@atcute/lex-cli':
+
specifier: ^2.2.2
+
version: 2.2.2
+
'@atcute/lexicons':
+
specifier: ^1.2.2
+
version: 1.2.2
'@atproto-labs/handle-resolver-node':
specifier: ^0.1.20
version: 0.1.20
+
'@atproto/api':
+
specifier: ^0.17.3
+
version: 0.17.3
+
'@atproto/lex-cli':
+
specifier: ^0.9.5
+
version: 0.9.5
+
'@atproto/lexicon':
+
specifier: ^0.5.1
+
version: 0.5.1
'@atproto/oauth-client':
specifier: ^0.3.8
version: 0.3.22
'@atproto/syntax':
specifier: ^0.4.1
version: 0.4.1
+
'@atproto/xrpc':
+
specifier: ^0.7.5
+
version: 0.7.5
'@bigmoves/atproto-oauth-client':
specifier: jsr:^0.2.0
version: '@jsr/bigmoves__atproto-oauth-client@0.2.0'
···
version: 0.15.3(solid-js@1.9.9)
'@solidjs/start':
specifier: ^1.1.0
-
version: 1.2.0(solid-js@1.9.9)(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
version: 1.2.0(solid-js@1.9.9)(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
'@tailwindcss/vite':
+
specifier: ^4.1.14
+
version: 4.1.14(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@typelex/emitter':
specifier: ^0.1.6
version: 0.1.6(@typespec/compiler@1.5.0)
···
'@unocss/reset':
specifier: ^0.65.1
version: 0.65.4
-
iron-session:
-
specifier: ^8.0.4
-
version: 8.0.4
+
class-variance-authority:
+
specifier: ^0.7.1
+
version: 0.7.1
+
clsx:
+
specifier: ^2.1.1
+
version: 2.1.1
solid-js:
specifier: ^1.9.5
version: 1.9.9
-
unocss:
-
specifier: ^0.65.1
-
version: 0.65.4(postcss@8.5.6)(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)
+
tailwind-merge:
+
specifier: ^3.3.1
+
version: 3.3.1
+
tailwindcss:
+
specifier: ^4.1.14
+
version: 4.1.14
+
tailwindcss-animate:
+
specifier: ^1.0.7
+
version: 1.0.7(tailwindcss@4.1.14)
vinxi:
specifier: ^0.5.7
-
version: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
+
version: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
packages:
-
'@ampproject/remapping@2.3.0':
-
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
-
engines: {node: '>=6.0.0'}
+
'@atcute/atproto@3.1.4':
+
resolution: {integrity: sha512-v0/ue7mZYtjYw4vWbtda51bLwW88mqsUQB8F/UZNO18ANAQWmKq1HDceVqjvruaLe2QPqE43XM3WkEyZ2FhOrA==}
-
'@antfu/install-pkg@1.1.0':
-
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+
'@atcute/bluesky@3.2.3':
+
resolution: {integrity: sha512-IdPQQ54F1BLhW5z49k81ZUC/GQl/tVygZ+CzLHYvQySHA6GJRcvPzwEf8aV21u0SZOJF+yF4CWEGNgtryyxPmg==}
-
'@antfu/utils@8.1.1':
-
resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
+
'@atcute/client@4.0.3':
+
resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==}
+
+
'@atcute/identity-resolver@1.1.3':
+
resolution: {integrity: sha512-KZgGgg99CWaV7Df3+h3X/WMrDzTPQVfsaoIVbTNLx2B56BvCL2EmaxPSVw/7BFUJMZHlVU4rtoEB4lyvNyMswA==}
+
peerDependencies:
+
'@atcute/identity': ^1.0.0
+
+
'@atcute/identity@1.1.0':
+
resolution: {integrity: sha512-6vRvRqJatDB+JUQsb+UswYmtBGQnSZcqC3a2y6H5DB/v5KcIh+6nFFtc17G0+3W9rxdk7k9M4KkgkdKf/YDNoQ==}
+
+
'@atcute/lex-cli@2.2.2':
+
resolution: {integrity: sha512-5hScXu4i01WNLkmMmLtQgyOBwZh9M4nijhJ9BZExA+d33/rGlJ4Us1oclw/rbEWPAjqkhA38t30KGvOfKr3chw==}
+
hasBin: true
+
+
'@atcute/lexicon-doc@1.1.3':
+
resolution: {integrity: sha512-HlQBmB4NCZPzREyVzr7lzjRxSiRHook2xfa7DgA3dk3oYZ+KnnPEtS6M1sAmAAddtUdrOrJ+0xJPQHkfElZmpQ==}
+
+
'@atcute/lexicons@1.2.2':
+
resolution: {integrity: sha512-bgEhJq5Z70/0TbK5sx+tAkrR8FsCODNiL2gUEvS5PuJfPxmFmRYNWaMGehxSPaXWpU2+Oa9ckceHiYbrItDTkA==}
+
+
'@atcute/util-fetch@1.0.2':
+
resolution: {integrity: sha512-6kOwQzaoPu7ss0EwvgSOPVg/JIJdozbXva5d/g99bBg8RaSX8se//INOyr/nby/GwrpxCIZU9Wzm+pl7xerI0Q==}
'@atproto-labs/did-resolver@0.1.13':
resolution: {integrity: sha512-DG3YNaCKc6PAIv1Gsz3E1Kufw2t14OBxe4LdKK7KKLCNoex51hm+A5yMevShe3BSll+QosqWYIEgkPSc5xBoGQ==}
···
'@atproto-labs/simple-store@0.3.0':
resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==}
+
'@atproto/api@0.17.3':
+
resolution: {integrity: sha512-pdQXhUAapNPdmN00W0vX5ta/aMkHqfgBHATt20X02XwxQpY2AnrPm2Iog4FyjsZqoHooAtCNV/NWJ4xfddJzsg==}
+
'@atproto/common-web@0.4.3':
resolution: {integrity: sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==}
···
'@atproto/jwk@0.2.0':
resolution: {integrity: sha512-foOxExbw04XCaoLaGdv9BQj0Ac7snZsk6IpQjOsjYatf+i62Pi9bUkZ0MAoA75HPk8ZmKoDnbA60uBMmiOPPHQ==}
+
'@atproto/lex-cli@0.9.5':
+
resolution: {integrity: sha512-zun4jhD1dbjD7IHtLIjh/1UsMx+6E8+OyOT2GXYAKIj9N6wmLKM/v2OeQBKxcyqUmtRi57lxWnGikWjjU7pplQ==}
+
engines: {node: '>=18.7.0'}
+
hasBin: true
+
'@atproto/lexicon@0.4.14':
resolution: {integrity: sha512-jiKpmH1QER3Gvc7JVY5brwrfo+etFoe57tKPQX/SmPwjvUsFnJAow5xLIryuBaJgFAhnTZViXKs41t//pahGHQ==}
+
'@atproto/lexicon@0.5.1':
+
resolution: {integrity: sha512-y8AEtYmfgVl4fqFxqXAeGvhesiGkxiy3CWoJIfsFDDdTlZUC8DFnZrYhcqkIop3OlCkkljvpSJi1hbeC1tbi8A==}
+
'@atproto/oauth-client@0.3.22':
resolution: {integrity: sha512-IJYkUSGGklV7tQ0S2+5smh8Xmu5MwfxBUNXMtqiooeU2nj+UcNk3/b0nE4MS05JNfwh2BXgHv3P8hrhVG2+RAA==}
···
'@atproto/xrpc@0.7.0':
resolution: {integrity: sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==}
+
+
'@atproto/xrpc@0.7.5':
+
resolution: {integrity: sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA==}
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
···
'@babel/types@7.28.4':
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
engines: {node: '>=6.9.0'}
+
+
'@badrap/valita@0.4.6':
+
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
+
engines: {node: '>= 18'}
'@cloudflare/kv-asset-handler@0.4.0':
resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
···
cpu: [x64]
os: [win32]
-
'@iconify/types@2.0.0':
-
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+
'@externdefs/collider@0.3.0':
+
resolution: {integrity: sha512-x5CpeZ4c8n+1wMFthUMWSQKqCGcQo52/Qbda5ES+JFRRg/D8Ep6/JOvUUq5HExFuv/wW+6UYG2U/mXzw0IAd8Q==}
+
peerDependencies:
+
'@badrap/valita': ^0.4.4
-
'@iconify/utils@2.3.0':
-
resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
+
'@inquirer/ansi@1.0.0':
+
resolution: {integrity: sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==}
+
engines: {node: '>=18'}
+
+
'@inquirer/checkbox@4.2.4':
+
resolution: {integrity: sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/confirm@5.1.18':
+
resolution: {integrity: sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/core@10.2.2':
+
resolution: {integrity: sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/editor@4.2.20':
+
resolution: {integrity: sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/expand@4.0.20':
+
resolution: {integrity: sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/external-editor@1.0.2':
+
resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/figures@1.0.13':
+
resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==}
+
engines: {node: '>=18'}
+
+
'@inquirer/input@4.2.4':
+
resolution: {integrity: sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/number@3.0.20':
+
resolution: {integrity: sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/password@4.0.20':
+
resolution: {integrity: sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/prompts@7.8.6':
+
resolution: {integrity: sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/rawlist@4.1.8':
+
resolution: {integrity: sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/search@3.1.3':
+
resolution: {integrity: sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/select@4.3.4':
+
resolution: {integrity: sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
+
'@inquirer/type@3.0.8':
+
resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
'@ioredis/commands@1.4.0':
resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==}
···
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
-
-
'@polka/url@1.0.0-next.29':
-
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
'@poppinss/colors@4.1.5':
resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==}
···
resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==}
engines: {node: '>=18'}
+
'@sindresorhus/merge-streams@2.3.0':
+
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
+
engines: {node: '>=18'}
+
'@sindresorhus/merge-streams@4.0.0':
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
···
'@speed-highlight/core@1.2.7':
resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==}
+
'@standard-schema/spec@1.0.0':
+
resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+
+
'@tailwindcss/node@4.1.14':
+
resolution: {integrity: sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==}
+
+
'@tailwindcss/oxide-android-arm64@4.1.14':
+
resolution: {integrity: sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [android]
+
+
'@tailwindcss/oxide-darwin-arm64@4.1.14':
+
resolution: {integrity: sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@tailwindcss/oxide-darwin-x64@4.1.14':
+
resolution: {integrity: sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [darwin]
+
+
'@tailwindcss/oxide-freebsd-x64@4.1.14':
+
resolution: {integrity: sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [freebsd]
+
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14':
+
resolution: {integrity: sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==}
+
engines: {node: '>= 10'}
+
cpu: [arm]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.14':
+
resolution: {integrity: sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.14':
+
resolution: {integrity: sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.14':
+
resolution: {integrity: sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [linux]
+
+
'@tailwindcss/oxide-linux-x64-musl@4.1.14':
+
resolution: {integrity: sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [linux]
+
+
'@tailwindcss/oxide-wasm32-wasi@4.1.14':
+
resolution: {integrity: sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==}
+
engines: {node: '>=14.0.0'}
+
cpu: [wasm32]
+
bundledDependencies:
+
- '@napi-rs/wasm-runtime'
+
- '@emnapi/core'
+
- '@emnapi/runtime'
+
- '@tybys/wasm-util'
+
- '@emnapi/wasi-threads'
+
- tslib
+
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.14':
+
resolution: {integrity: sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==}
+
engines: {node: '>= 10'}
+
cpu: [arm64]
+
os: [win32]
+
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.14':
+
resolution: {integrity: sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==}
+
engines: {node: '>= 10'}
+
cpu: [x64]
+
os: [win32]
+
+
'@tailwindcss/oxide@4.1.14':
+
resolution: {integrity: sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==}
+
engines: {node: '>= 10'}
+
+
'@tailwindcss/vite@4.1.14':
+
resolution: {integrity: sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==}
+
peerDependencies:
+
vite: ^5.2.0 || ^6 || ^7
+
'@tanstack/directive-functions-plugin@1.121.21':
resolution: {integrity: sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw==}
engines: {node: '>=12'}
···
'@tanstack/server-functions-plugin@1.121.21':
resolution: {integrity: sha512-a05fzK+jBGacsSAc1vE8an7lpBh4H0PyIEcivtEyHLomgSeElAJxm9E2It/0nYRZ5Lh23m0okbhzJNaYWZpAOg==}
engines: {node: '>=12'}
+
+
'@ts-morph/common@0.25.0':
+
resolution: {integrity: sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==}
'@typelex/emitter@0.1.6':
resolution: {integrity: sha512-sC6hbXInFjI028tflS+oIrFt9v4AwoTcTLa+GEExaedOPMeSivj9joIs0k6k6TXW3RpglNJIPFz1n8UBq5ya6Q==}
···
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
-
'@unocss/astro@0.65.4':
-
resolution: {integrity: sha512-ex1CJOQ6yeftBEPcbA9/W47/YoV+mhQnrAoc8MA1VVrvvFKDitICFU62+nSt3NWRe53XL/fXnQbcbCb8AAgKlA==}
-
peerDependencies:
-
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0
-
peerDependenciesMeta:
-
vite:
-
optional: true
-
-
'@unocss/cli@0.65.4':
-
resolution: {integrity: sha512-D/4hY5Hezh3QETscl4i+ojb+q8YU9Cl9AYJ8v3gsjc/GjTmEuIOD5V4x+/aN25vY5wjqgoApOgaIDGCV3b+2Ig==}
-
engines: {node: '>=14'}
-
hasBin: true
-
-
'@unocss/config@0.65.4':
-
resolution: {integrity: sha512-/vCt4AXnJ4p4Ow6xqsYwdrelF9533yhZjzkg3SQmL3rKeSkicPayKpeq8nkYECdhDI03VTCVD+6oh5Y/26Hg7A==}
-
engines: {node: '>=14'}
-
-
'@unocss/core@0.65.4':
-
resolution: {integrity: sha512-a2JOoFutrhqd5RgPhIR5FIXrDoHDU3gwCbPrpT6KYTjsqlSc/fv02yZ+JGOZFN3MCFhCmaPTs+idDFtwb3xU8g==}
-
-
'@unocss/extractor-arbitrary-variants@0.65.4':
-
resolution: {integrity: sha512-GbvTgsDaHplfWfsQtOY8RrvEZvptmvR9k9NwQ5NsZBNIG1JepYVel93CVQvsxT5KioKcoWngXxTYLNOGyxLs0g==}
-
-
'@unocss/inspector@0.65.4':
-
resolution: {integrity: sha512-byg9x549Ul17U4Ety7ufDwC0UOygypoq4QnLEPzhlZ0KJG1f7WmXKYanOhupeg3h4qCj6Nc/xdZYMGbHl9QRIg==}
-
-
'@unocss/postcss@0.65.4':
-
resolution: {integrity: sha512-8peDRo0+rNQsnKh/H2uZEVy67sV2cC16rAeSLpgbVJUMNfZlmF0rC2DNGsOV17uconUXSwz7+mGcHKNiv+8YlQ==}
-
engines: {node: '>=14'}
-
peerDependencies:
-
postcss: ^8.4.21
-
-
'@unocss/preset-attributify@0.65.4':
-
resolution: {integrity: sha512-zxE9hJJ5b37phjdzDdZsxX559ZlmH9rFlY5LVEcQySTnsfY0znviHxPbD2iRpCBCRd+YC5HfFd2jb3XlnTKMJQ==}
-
-
'@unocss/preset-icons@0.65.4':
-
resolution: {integrity: sha512-5sSzTN72X2Ag3VH48xY1pYudeWnql9jqdMiwgZuLJcmvETBNGelXy2wGxm7tsUUEx/l40Yr04Ck8XRPGT9jLBw==}
-
-
'@unocss/preset-mini@0.65.4':
-
resolution: {integrity: sha512-dcO2PzSl87qN1KdQWcfZDIKEhpdFeImWbYfiXtE7k6pi1393FJkdHEopgI/1ZciIQN1CkTvQJ5c7EpEVWftYRA==}
-
-
'@unocss/preset-tagify@0.65.4':
-
resolution: {integrity: sha512-qll6koqdFEkvmz594vKnxj9+3nfM3ugkJxYHrTkqtwx7DAnTgtM8fInFFGZelvjwUzR3o3+Zw6uMhFkLTVTfvg==}
-
-
'@unocss/preset-typography@0.65.4':
-
resolution: {integrity: sha512-Dl940ATrviWD9Vh+4fcN0QZXb6wA7al+c7QkdVAzW7I+NtdN2ELvLcN0cY22KnLRpwztzmg52Qp2J/1QnqrLTw==}
-
-
'@unocss/preset-uno@0.65.4':
-
resolution: {integrity: sha512-56bdBtf476i+soQCQmT36uGzcF2z+7DGCnG1hwWiw6XAbL6gmRMQsubwi1c8z8TcTQNBsOFUnOziFil0gbWufw==}
-
-
'@unocss/preset-web-fonts@0.65.4':
-
resolution: {integrity: sha512-UB/MvXHUTqMNVH1bbiKZ/ZtZUI5tsYlTYAvBrnXPO1Cztuwr8hJKSi4RCfI9g+YYtKHX4uYuxUbW5bcN85gmBQ==}
-
-
'@unocss/preset-wind@0.65.4':
-
resolution: {integrity: sha512-0rbNbw5E8Lvh2yf4R1Mq+lxI/wL5Tm6+r+crE0uAAhCPe9kxPHW4k+x1cWKDIwq6Vudlm3cNX85N49wN5tYgdA==}
-
'@unocss/reset@0.65.4':
resolution: {integrity: sha512-m685H0KFvVMz6R2i5GDIFv4RS9Z7y2G8hJK7xg2OWli+7w8l2ZMihYvXKofPsst4q/ms8EgKXpWc/qqUOTucvA==}
-
'@unocss/rule-utils@0.65.4':
-
resolution: {integrity: sha512-+EzdJEWcqGcO6HwbBTe7vEdBRpuKkBiz4MycQeLD6GEio04T45y6VHHO7/WTqxltbO4YwwW9/s2TKRMxKtoG8g==}
-
engines: {node: '>=14'}
-
-
'@unocss/transformer-attributify-jsx@0.65.4':
-
resolution: {integrity: sha512-n438EzWdTKlLCOlAUSpFjmH6FflctqzIReMzMZSJDkmkorymc+C5GpjN3Nty2cKRJXIl6Vwq0oxPuB59RT+FIw==}
-
-
'@unocss/transformer-compile-class@0.65.4':
-
resolution: {integrity: sha512-n1yHDC/iIbcj/9fBUTXkSoASKfLBuRoCN7P1a0ecPc8Gu+uOGfoxafOhrlqC+tpD3hlQGoL+0h74BHSKh+L23Q==}
-
-
'@unocss/transformer-directives@0.65.4':
-
resolution: {integrity: sha512-zkoDEwzPkgXi6ohW7P11gbArwfTRMZ9knYSUYoPEltQz+UZYzeRQ85exiAmdz5MsbCAuhQEr577Kd/CWfhjEuA==}
-
-
'@unocss/transformer-variant-group@0.65.4':
-
resolution: {integrity: sha512-ggO6xMGeOeoD5GHS2xXBJrYFuzqyiZ25tM0zHAMJn9QU9GIu1NwWvcXluvLCF/MRIygBJGPpAE98aEICI6ifEA==}
-
-
'@unocss/vite@0.65.4':
-
resolution: {integrity: sha512-02pRcVLfb5UUxMJwudnjS/0ZQdSlskjuXVHdpZpLBZCA8hhoru2uEOsPbUOBRNNMjDj6ld00pmgk/+im07M35Q==}
-
peerDependencies:
-
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0
-
'@vercel/nft@0.30.2':
resolution: {integrity: sha512-pquXF3XZFg/T3TBor08rUhIGgOhdSilbn7WQLVP/aVSSO+25Rs4H/m3nxNDQ2x3znX7Z3yYjryN8xaLwypcwQg==}
engines: {node: '>=18'}
···
resolution: {integrity: sha512-0BsG95qac3dkhfdRZxqzqYWJE4NvPL7ILlV43B6K6ho1etXWB2e5b0IxsUAUbyqpqiXM7mSRivojuXjb2G4OsQ==}
peerDependencies:
vinxi: ^0.5.5
-
-
'@vue/compiler-core@3.5.22':
-
resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==}
-
-
'@vue/compiler-dom@3.5.22':
-
resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==}
-
-
'@vue/compiler-sfc@3.5.22':
-
resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==}
-
-
'@vue/compiler-ssr@3.5.22':
-
resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==}
-
-
'@vue/reactivity@3.5.22':
-
resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==}
-
-
'@vue/runtime-core@3.5.22':
-
resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==}
-
-
'@vue/runtime-dom@3.5.22':
-
resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==}
-
-
'@vue/server-renderer@3.5.22':
-
resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==}
-
peerDependencies:
-
vue: 3.5.22
-
-
'@vue/shared@3.5.22':
-
resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==}
abbrev@3.0.1:
resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==}
···
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
+
ajv@8.17.1:
+
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
···
async@3.2.6:
resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+
await-lock@2.2.2:
+
resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
b4a@1.7.3:
resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
···
resolution: {integrity: sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==}
hasBin: true
-
binary-extensions@2.3.0:
-
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
-
engines: {node: '>=8'}
-
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
···
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
bundle-require@5.1.0:
-
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
-
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
peerDependencies:
-
esbuild: '>=0.18'
-
c12@3.3.0:
resolution: {integrity: sha512-K9ZkuyeJQeqLEyqldbYLG3wjqwpw4BVaAqvmxq3GYKK0b1A/yYQdIcJxkzAOWcNVWhJpRXAPfZFueekiY/L8Dw==}
peerDependencies:
···
magicast:
optional: true
-
cac@6.7.14:
-
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
-
engines: {node: '>=8'}
-
camelcase@8.0.0:
resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
engines: {node: '>=16'}
···
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
chalk@4.1.2:
+
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+
engines: {node: '>=10'}
+
chalk@5.6.2:
resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
···
chardet@2.1.0:
resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
-
chokidar@3.6.0:
-
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
-
engines: {node: '>= 8.10.0'}
-
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
···
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+
class-variance-authority@0.7.1:
+
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+
cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
···
cliui@9.0.1:
resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
engines: {node: '>=20'}
+
+
clsx@2.1.1:
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+
engines: {node: '>=6'}
cluster-key-slot@1.1.2:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
+
code-block-writer@13.0.3:
+
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
+
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
···
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
colorette@2.0.20:
-
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
-
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+
commander@9.5.0:
+
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+
engines: {node: ^12.20.0 || >=14}
commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
···
cookie-es@2.0.0:
resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==}
-
cookie@0.7.2:
-
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
-
engines: {node: '>= 0.6'}
-
cookie@1.0.2:
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
engines: {node: '>=18'}
···
crossws@0.3.5:
resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
-
-
css-tree@3.1.0:
-
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
-
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
···
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
-
entities@4.5.0:
-
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
-
engines: {node: '>=0.12'}
+
enhanced-resolve@5.18.3:
+
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
+
engines: {node: '>=10.13.0'}
entities@6.0.1:
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
+
env-paths@3.0.0:
+
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
error-stack-parser-es@1.0.5:
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
···
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
+
+
esm-env@1.2.2:
+
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
···
exsolve@1.0.7:
resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
+
+
fast-deep-equal@3.1.3:
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
···
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
+
fast-uri@3.1.0:
+
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
···
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
-
globals@15.15.0:
-
resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
+
globby@14.1.0:
+
resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
engines: {node: '>=18'}
globby@15.0.0:
···
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
gzip-size@6.0.0:
-
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
-
engines: {node: '>=10'}
-
gzip-size@7.0.0:
resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
···
h3@1.15.4:
resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
+
has-flag@4.0.0:
+
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+
engines: {node: '>=8'}
+
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
···
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
+
iconv-lite@0.7.0:
+
resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
+
engines: {node: '>=0.10.0'}
+
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@7.0.5:
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
engines: {node: '>= 4'}
-
-
importx@0.5.2:
-
resolution: {integrity: sha512-YEwlK86Ml5WiTxN/ECUYC5U7jd1CisAVw7ya4i9ZppBoHfFkT2+hChhr3PE2fYxUKLkNyivxEQpa5Ruil1LJBQ==}
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
···
resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
engines: {node: '>= 10'}
-
iron-session@8.0.4:
-
resolution: {integrity: sha512-9ivNnaKOd08osD0lJ3i6If23GFS2LsxyMU8Gf/uBUEgm8/8CC1hrrCHFDpMo3IFbpBgwoo/eairRsaD3c5itxA==}
-
iron-webcrypto@1.2.1:
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
-
-
is-binary-path@2.1.0:
-
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
-
engines: {node: '>=8'}
is-core-module@2.16.1:
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
···
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
is-unicode-supported@2.1.0:
+
resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
+
engines: {node: '>=18'}
+
is-what@4.1.16:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
···
engines: {node: '>=6'}
hasBin: true
+
json-schema-traverse@1.0.0:
+
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
···
knitwork@1.2.0:
resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==}
-
kolorist@1.8.0:
-
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
-
lazystream@1.0.1:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
+
lightningcss-darwin-arm64@1.30.1:
+
resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [darwin]
+
+
lightningcss-darwin-x64@1.30.1:
+
resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [darwin]
+
+
lightningcss-freebsd-x64@1.30.1:
+
resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [freebsd]
+
+
lightningcss-linux-arm-gnueabihf@1.30.1:
+
resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm]
+
os: [linux]
+
+
lightningcss-linux-arm64-gnu@1.30.1:
+
resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [linux]
+
+
lightningcss-linux-arm64-musl@1.30.1:
+
resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [linux]
+
+
lightningcss-linux-x64-gnu@1.30.1:
+
resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [linux]
+
+
lightningcss-linux-x64-musl@1.30.1:
+
resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [linux]
+
+
lightningcss-win32-arm64-msvc@1.30.1:
+
resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [arm64]
+
os: [win32]
+
+
lightningcss-win32-x64-msvc@1.30.1:
+
resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
+
engines: {node: '>= 12.0.0'}
+
cpu: [x64]
+
os: [win32]
+
+
lightningcss@1.30.1:
+
resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
+
engines: {node: '>= 12.0.0'}
+
listhen@1.9.0:
resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==}
hasBin: true
-
-
load-tsconfig@0.2.5:
-
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
-
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
local-pkg@1.1.2:
resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
···
mdast-util-to-hast@13.2.0:
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
-
-
mdn-data@2.12.2:
-
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
merge-anything@5.1.7:
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
···
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
-
mrmime@2.0.1:
-
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
-
engines: {node: '>=10'}
-
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
···
multiformats@9.9.0:
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
+
mustache@4.2.0:
+
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
+
hasBin: true
+
+
mute-stream@2.0.0:
+
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
+
engines: {node: ^18.17.0 || >=20.5.0}
+
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
···
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
-
package-manager-detector@1.4.0:
-
resolution: {integrity: sha512-rRZ+pR1Usc+ND9M2NkmCvE/LYJS+8ORVV9X0KuNSY/gFsp7RBHJM/ADh9LYq4Vvfq6QkKrW6/weuh8SMEtN5gw==}
-
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
parseurl@1.3.3:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
+
+
path-browserify@1.0.1:
+
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
···
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
-
perfect-debounce@1.0.0:
-
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
-
perfect-debounce@2.0.0:
resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==}
···
postcss@8.5.6:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+
+
prettier@3.6.2:
+
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
+
engines: {node: '>=14'}
+
hasBin: true
pretty-bytes@7.1.0:
resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==}
···
readdir-glob@1.1.3:
resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
-
readdirp@3.6.0:
-
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
-
engines: {node: '>=8.10.0'}
-
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
···
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+
engines: {node: '>=0.10.0'}
+
+
require-from-string@2.0.2:
+
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
requires-port@1.0.0:
···
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
safer-buffer@2.1.2:
+
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
···
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
-
-
sirv@3.0.2:
-
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
-
engines: {node: '>=18'}
slash@5.1.0:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
···
resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
engines: {node: '>=18'}
+
supports-color@7.2.0:
+
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+
engines: {node: '>=8'}
+
supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
···
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
+
tailwind-merge@3.3.1:
+
resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==}
+
+
tailwindcss-animate@1.0.7:
+
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
+
peerDependencies:
+
tailwindcss: '>=3.0.0 || insiders'
+
+
tailwindcss@4.1.14:
+
resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==}
+
+
tapable@2.3.0:
+
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
+
engines: {node: '>=6'}
+
tar-stream@3.1.7:
resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
···
resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==}
engines: {node: '>=18'}
+
temporal-polyfill@0.3.0:
+
resolution: {integrity: sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==}
+
+
temporal-spec@0.3.0:
+
resolution: {integrity: sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==}
+
terracotta@1.0.6:
resolution: {integrity: sha512-yVrmT/Lg6a3tEbeYEJH8ksb1PYkR5FA9k5gr1TchaSNIiA2ZWs5a+koEbePXwlBP0poaV7xViZ/v50bQFcMgqw==}
engines: {node: '>=10'}
···
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
+
tlds@1.260.0:
+
resolution: {integrity: sha512-78+28EWBhCEE7qlyaHA9OR3IPvbCLiDh3Ckla593TksfFc9vfTsgvH7eS+dr3o9qr31gwGbogcI16yN91PoRjQ==}
+
hasBin: true
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
···
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
-
totalist@3.0.1:
-
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
-
engines: {node: '>=6'}
-
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+
ts-morph@24.0.0:
+
resolution: {integrity: sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
···
ultrahtml@1.6.0:
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
-
-
unconfig@0.6.1:
-
resolution: {integrity: sha512-cVU+/sPloZqOyJEAfNwnQSFCzFrZm85vcVkryH7lnlB/PiTycUkAjt5Ds79cfIshGOZ+M5v3PBDnKgpmlE5DtA==}
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
···
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
-
-
unocss@0.65.4:
-
resolution: {integrity: sha512-KUCW5OzI20Ik6j1zXkkrpWhxZ59TwSKl6+DvmYHEzMfaEcrHlBZaFSApAoSt2CYSvo6SluGiKyr+Im1UTkd4KA==}
-
engines: {node: '>=14'}
-
peerDependencies:
-
'@unocss/webpack': 0.65.4
-
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0
-
peerDependenciesMeta:
-
'@unocss/webpack':
-
optional: true
-
vite:
-
optional: true
unplugin-utils@0.3.1:
resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
···
vite:
optional: true
-
vue-flow-layout@0.1.1:
-
resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==}
-
peerDependencies:
-
vue: ^3.4.37
+
vscode-jsonrpc@8.2.0:
+
resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
+
engines: {node: '>=14.0.0'}
-
vue@3.5.22:
-
resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==}
-
peerDependencies:
-
typescript: '*'
-
peerDependenciesMeta:
-
typescript:
-
optional: true
+
vscode-languageserver-protocol@3.17.5:
+
resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
+
+
vscode-languageserver-textdocument@1.0.12:
+
resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+
vscode-languageserver-types@3.17.5:
+
resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
+
+
vscode-languageserver@9.0.1:
+
resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
+
hasBin: true
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
···
widest-line@5.0.0:
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
engines: {node: '>=18'}
+
+
wrap-ansi@6.2.0:
+
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+
engines: {node: '>=8'}
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
···
resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
+
yesno@0.4.0:
+
resolution: {integrity: sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==}
+
yoctocolors-cjs@2.1.3:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
···
snapshots:
-
'@ampproject/remapping@2.3.0':
+
'@atcute/atproto@3.1.4':
+
dependencies:
+
'@atcute/lexicons': 1.2.2
+
+
'@atcute/bluesky@3.2.3':
+
dependencies:
+
'@atcute/atproto': 3.1.4
+
'@atcute/lexicons': 1.2.2
+
+
'@atcute/client@4.0.3':
+
dependencies:
+
'@atcute/identity': 1.1.0
+
'@atcute/lexicons': 1.2.2
+
+
'@atcute/identity-resolver@1.1.3(@atcute/identity@1.1.0)':
+
dependencies:
+
'@atcute/identity': 1.1.0
+
'@atcute/lexicons': 1.2.2
+
'@atcute/util-fetch': 1.0.2
+
'@badrap/valita': 0.4.6
+
+
'@atcute/identity@1.1.0':
dependencies:
-
'@jridgewell/gen-mapping': 0.3.13
-
'@jridgewell/trace-mapping': 0.3.31
+
'@atcute/lexicons': 1.2.2
+
'@badrap/valita': 0.4.6
-
'@antfu/install-pkg@1.1.0':
+
'@atcute/lex-cli@2.2.2':
dependencies:
-
package-manager-detector: 1.4.0
-
tinyexec: 1.0.1
+
'@atcute/lexicon-doc': 1.1.3
+
'@badrap/valita': 0.4.6
+
'@externdefs/collider': 0.3.0(@badrap/valita@0.4.6)
+
picocolors: 1.1.1
+
prettier: 3.6.2
-
'@antfu/utils@8.1.1': {}
+
'@atcute/lexicon-doc@1.1.3':
+
dependencies:
+
'@badrap/valita': 0.4.6
+
+
'@atcute/lexicons@1.2.2':
+
dependencies:
+
'@standard-schema/spec': 1.0.0
+
esm-env: 1.2.2
+
+
'@atcute/util-fetch@1.0.2':
+
dependencies:
+
'@badrap/valita': 0.4.6
'@atproto-labs/did-resolver@0.1.13':
dependencies:
···
'@atproto-labs/simple-store@0.3.0': {}
+
'@atproto/api@0.17.3':
+
dependencies:
+
'@atproto/common-web': 0.4.3
+
'@atproto/lexicon': 0.5.1
+
'@atproto/syntax': 0.4.1
+
'@atproto/xrpc': 0.7.5
+
await-lock: 2.2.2
+
multiformats: 9.9.0
+
tlds: 1.260.0
+
zod: 3.25.76
+
'@atproto/common-web@0.4.3':
dependencies:
graphemer: 1.4.0
···
multiformats: 9.9.0
zod: 3.25.76
+
'@atproto/lex-cli@0.9.5':
+
dependencies:
+
'@atproto/lexicon': 0.5.1
+
'@atproto/syntax': 0.4.1
+
chalk: 4.1.2
+
commander: 9.5.0
+
prettier: 3.6.2
+
ts-morph: 24.0.0
+
yesno: 0.4.0
+
zod: 3.25.76
+
'@atproto/lexicon@0.4.14':
+
dependencies:
+
'@atproto/common-web': 0.4.3
+
'@atproto/syntax': 0.4.1
+
iso-datestring-validator: 2.2.2
+
multiformats: 9.9.0
+
zod: 3.25.76
+
+
'@atproto/lexicon@0.5.1':
dependencies:
'@atproto/common-web': 0.4.3
'@atproto/syntax': 0.4.1
···
'@atproto/xrpc@0.7.0':
dependencies:
'@atproto/lexicon': 0.4.14
+
zod: 3.25.76
+
+
'@atproto/xrpc@0.7.5':
+
dependencies:
+
'@atproto/lexicon': 0.5.1
zod: 3.25.76
'@babel/code-frame@7.26.2':
···
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
+
'@badrap/valita@0.4.6': {}
+
'@cloudflare/kv-asset-handler@0.4.0':
dependencies:
mime: 3.0.0
···
'@esbuild/win32-x64@0.25.10':
optional: true
-
'@iconify/types@2.0.0': {}
-
-
'@iconify/utils@2.3.0':
+
'@externdefs/collider@0.3.0(@badrap/valita@0.4.6)':
dependencies:
-
'@antfu/install-pkg': 1.1.0
-
'@antfu/utils': 8.1.1
-
'@iconify/types': 2.0.0
-
debug: 4.4.3
-
globals: 15.15.0
-
kolorist: 1.8.0
-
local-pkg: 1.1.2
-
mlly: 1.8.0
-
transitivePeerDependencies:
-
- supports-color
+
'@badrap/valita': 0.4.6
'@inquirer/ansi@1.0.0': {}
···
'@pkgjs/parseargs@0.11.0':
optional: true
-
'@polka/url@1.0.0-next.29': {}
-
'@poppinss/colors@4.1.5':
dependencies:
kleur: 4.1.5
···
'@sindresorhus/is@7.1.0': {}
+
'@sindresorhus/merge-streams@2.3.0': {}
+
'@sindresorhus/merge-streams@4.0.0': {}
'@solidjs/router@0.15.3(solid-js@1.9.9)':
dependencies:
solid-js: 1.9.9
-
'@solidjs/start@1.2.0(solid-js@1.9.9)(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))':
+
'@solidjs/start@1.2.0(solid-js@1.9.9)(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
-
'@tanstack/server-functions-plugin': 1.121.21(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
-
'@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
-
'@vinxi/server-components': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
+
'@tanstack/server-functions-plugin': 1.121.21(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
'@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
'@vinxi/server-components': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
cookie-es: 2.0.0
defu: 6.1.4
error-stack-parser: 2.1.4
···
source-map-js: 1.2.1
terracotta: 1.0.6(solid-js@1.9.9)
tinyglobby: 0.2.15
-
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
vite-plugin-solid: 2.11.9(solid-js@1.9.9)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
+
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
vite-plugin-solid: 2.11.9(solid-js@1.9.9)(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- '@testing-library/jest-dom'
- solid-js
···
'@speed-highlight/core@1.2.7': {}
-
'@tanstack/directive-functions-plugin@1.121.21(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))':
+
'@standard-schema/spec@1.0.0': {}
+
+
'@tailwindcss/node@4.1.14':
+
dependencies:
+
'@jridgewell/remapping': 2.3.5
+
enhanced-resolve: 5.18.3
+
jiti: 2.6.1
+
lightningcss: 1.30.1
+
magic-string: 0.30.19
+
source-map-js: 1.2.1
+
tailwindcss: 4.1.14
+
+
'@tailwindcss/oxide-android-arm64@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-darwin-arm64@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-darwin-x64@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-freebsd-x64@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-linux-x64-musl@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-wasm32-wasi@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.14':
+
optional: true
+
+
'@tailwindcss/oxide@4.1.14':
+
dependencies:
+
detect-libc: 2.1.2
+
tar: 7.5.1
+
optionalDependencies:
+
'@tailwindcss/oxide-android-arm64': 4.1.14
+
'@tailwindcss/oxide-darwin-arm64': 4.1.14
+
'@tailwindcss/oxide-darwin-x64': 4.1.14
+
'@tailwindcss/oxide-freebsd-x64': 4.1.14
+
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.14
+
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.14
+
'@tailwindcss/oxide-linux-arm64-musl': 4.1.14
+
'@tailwindcss/oxide-linux-x64-gnu': 4.1.14
+
'@tailwindcss/oxide-linux-x64-musl': 4.1.14
+
'@tailwindcss/oxide-wasm32-wasi': 4.1.14
+
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.14
+
'@tailwindcss/oxide-win32-x64-msvc': 4.1.14
+
+
'@tailwindcss/vite@4.1.14(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+
dependencies:
+
'@tailwindcss/node': 4.1.14
+
'@tailwindcss/oxide': 4.1.14
+
tailwindcss: 4.1.14
+
vite: 6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
+
'@tanstack/directive-functions-plugin@1.121.21(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.28.4
···
'@tanstack/router-utils': 1.132.31
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
+
vite: 6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
···
transitivePeerDependencies:
- supports-color
-
'@tanstack/server-functions-plugin@1.121.21(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))':
+
'@tanstack/server-functions-plugin@1.121.21(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.28.4
···
'@babel/template': 7.27.2
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
-
'@tanstack/directive-functions-plugin': 1.121.21(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
+
'@tanstack/directive-functions-plugin': 1.121.21(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
transitivePeerDependencies:
- supports-color
- vite
+
+
'@ts-morph/common@0.25.0':
+
dependencies:
+
minimatch: 9.0.5
+
path-browserify: 1.0.1
+
tinyglobby: 0.2.15
'@typelex/emitter@0.1.6(@typespec/compiler@1.5.0)':
dependencies:
···
'@ungap/structured-clone@1.3.0': {}
-
'@unocss/astro@0.65.4(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/reset': 0.65.4
-
'@unocss/vite': 0.65.4(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)
-
optionalDependencies:
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
transitivePeerDependencies:
-
- rollup
-
- supports-color
-
- vue
-
-
'@unocss/cli@0.65.4(rollup@4.52.4)':
-
dependencies:
-
'@ampproject/remapping': 2.3.0
-
'@rollup/pluginutils': 5.3.0(rollup@4.52.4)
-
'@unocss/config': 0.65.4
-
'@unocss/core': 0.65.4
-
'@unocss/preset-uno': 0.65.4
-
cac: 6.7.14
-
chokidar: 3.6.0
-
colorette: 2.0.20
-
consola: 3.4.2
-
magic-string: 0.30.19
-
pathe: 1.1.2
-
perfect-debounce: 1.0.0
-
tinyglobby: 0.2.15
-
transitivePeerDependencies:
-
- rollup
-
- supports-color
-
-
'@unocss/config@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
unconfig: 0.6.1
-
transitivePeerDependencies:
-
- supports-color
-
-
'@unocss/core@0.65.4': {}
-
-
'@unocss/extractor-arbitrary-variants@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/inspector@0.65.4(vue@3.5.22)':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
colorette: 2.0.20
-
gzip-size: 6.0.0
-
sirv: 3.0.2
-
vue-flow-layout: 0.1.1(vue@3.5.22)
-
transitivePeerDependencies:
-
- vue
-
-
'@unocss/postcss@0.65.4(postcss@8.5.6)':
-
dependencies:
-
'@unocss/config': 0.65.4
-
'@unocss/core': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
css-tree: 3.1.0
-
postcss: 8.5.6
-
tinyglobby: 0.2.15
-
transitivePeerDependencies:
-
- supports-color
-
-
'@unocss/preset-attributify@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/preset-icons@0.65.4':
-
dependencies:
-
'@iconify/utils': 2.3.0
-
'@unocss/core': 0.65.4
-
ofetch: 1.4.1
-
transitivePeerDependencies:
-
- supports-color
-
-
'@unocss/preset-mini@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/extractor-arbitrary-variants': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
-
'@unocss/preset-tagify@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/preset-typography@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/preset-mini': 0.65.4
-
-
'@unocss/preset-uno@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/preset-mini': 0.65.4
-
'@unocss/preset-wind': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
-
'@unocss/preset-web-fonts@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
ofetch: 1.4.1
-
-
'@unocss/preset-wind@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/preset-mini': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
'@unocss/reset@0.65.4': {}
-
'@unocss/rule-utils@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
magic-string: 0.30.19
-
-
'@unocss/transformer-attributify-jsx@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/transformer-compile-class@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/transformer-directives@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
'@unocss/rule-utils': 0.65.4
-
css-tree: 3.1.0
-
-
'@unocss/transformer-variant-group@0.65.4':
-
dependencies:
-
'@unocss/core': 0.65.4
-
-
'@unocss/vite@0.65.4(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)':
-
dependencies:
-
'@ampproject/remapping': 2.3.0
-
'@rollup/pluginutils': 5.3.0(rollup@4.52.4)
-
'@unocss/config': 0.65.4
-
'@unocss/core': 0.65.4
-
'@unocss/inspector': 0.65.4(vue@3.5.22)
-
chokidar: 3.6.0
-
magic-string: 0.30.19
-
tinyglobby: 0.2.15
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
transitivePeerDependencies:
-
- rollup
-
- supports-color
-
- vue
-
'@vercel/nft@0.30.2(rollup@4.52.4)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.0
···
untun: 0.1.3
uqr: 0.1.2
-
'@vinxi/plugin-directives@0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))':
+
'@vinxi/plugin-directives@0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/parser': 7.28.4
acorn: 8.15.0
···
magicast: 0.2.11
recast: 0.23.11
tslib: 2.8.1
-
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
+
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
-
'@vinxi/server-components@0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))':
+
'@vinxi/server-components@0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
-
'@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
+
'@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
acorn: 8.15.0
acorn-loose: 8.5.2
acorn-typescript: 1.4.13(acorn@8.15.0)
astring: 1.9.0
magicast: 0.2.11
recast: 0.23.11
-
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
-
'@vue/compiler-core@3.5.22':
-
dependencies:
-
'@babel/parser': 7.28.4
-
'@vue/shared': 3.5.22
-
entities: 4.5.0
-
estree-walker: 2.0.2
-
source-map-js: 1.2.1
-
-
'@vue/compiler-dom@3.5.22':
-
dependencies:
-
'@vue/compiler-core': 3.5.22
-
'@vue/shared': 3.5.22
-
-
'@vue/compiler-sfc@3.5.22':
-
dependencies:
-
'@babel/parser': 7.28.4
-
'@vue/compiler-core': 3.5.22
-
'@vue/compiler-dom': 3.5.22
-
'@vue/compiler-ssr': 3.5.22
-
'@vue/shared': 3.5.22
-
estree-walker: 2.0.2
-
magic-string: 0.30.19
-
postcss: 8.5.6
-
source-map-js: 1.2.1
-
-
'@vue/compiler-ssr@3.5.22':
-
dependencies:
-
'@vue/compiler-dom': 3.5.22
-
'@vue/shared': 3.5.22
-
-
'@vue/reactivity@3.5.22':
-
dependencies:
-
'@vue/shared': 3.5.22
-
-
'@vue/runtime-core@3.5.22':
-
dependencies:
-
'@vue/reactivity': 3.5.22
-
'@vue/shared': 3.5.22
-
-
'@vue/runtime-dom@3.5.22':
-
dependencies:
-
'@vue/reactivity': 3.5.22
-
'@vue/runtime-core': 3.5.22
-
'@vue/shared': 3.5.22
-
csstype: 3.1.3
-
-
'@vue/server-renderer@3.5.22(vue@3.5.22)':
-
dependencies:
-
'@vue/compiler-ssr': 3.5.22
-
'@vue/shared': 3.5.22
-
vue: 3.5.22
-
-
'@vue/shared@3.5.22': {}
+
vinxi: 0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
abbrev@3.0.1: {}
···
async@3.2.6: {}
+
await-lock@2.2.2: {}
+
b4a@1.7.3: {}
babel-dead-code-elimination@1.0.10:
···
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.13: {}
-
-
binary-extensions@2.3.0: {}
bindings@1.5.0:
dependencies:
···
base64-js: 1.5.1
ieee754: 1.2.1
-
bundle-require@5.1.0(esbuild@0.25.10):
-
dependencies:
-
esbuild: 0.25.10
-
load-tsconfig: 0.2.5
-
c12@3.3.0(magicast@0.3.5):
dependencies:
chokidar: 4.0.3
···
optionalDependencies:
magicast: 0.3.5
-
cac@6.7.14: {}
-
camelcase@8.0.0: {}
caniuse-lite@1.0.30001748: {}
ccount@2.0.1: {}
+
chalk@4.1.2:
+
dependencies:
+
ansi-styles: 4.3.0
+
supports-color: 7.2.0
+
chalk@5.6.2: {}
change-case@5.4.4: {}
···
chardet@2.1.0: {}
-
chokidar@3.6.0:
-
dependencies:
-
anymatch: 3.1.3
-
braces: 3.0.3
-
glob-parent: 5.1.2
-
is-binary-path: 2.1.0
-
is-glob: 4.0.3
-
normalize-path: 3.0.0
-
readdirp: 3.6.0
-
optionalDependencies:
-
fsevents: 2.3.3
-
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
···
dependencies:
consola: 3.4.2
+
class-variance-authority@0.7.1:
+
dependencies:
+
clsx: 2.1.1
+
cli-boxes@3.0.0: {}
cli-width@4.1.0: {}
···
strip-ansi: 7.1.2
wrap-ansi: 9.0.2
+
clsx@2.1.1: {}
+
cluster-key-slot@1.1.2: {}
+
+
code-block-writer@13.0.3: {}
color-convert@2.0.1:
dependencies:
···
color-name@1.1.4: {}
-
colorette@2.0.20: {}
-
comma-separated-tokens@2.0.3: {}
commander@2.20.3: {}
+
+
commander@9.5.0: {}
commondir@1.0.1: {}
···
cookie-es@2.0.0: {}
-
cookie@0.7.2: {}
-
cookie@1.0.2: {}
core-util-is@1.0.3: {}
···
crossws@0.3.5:
dependencies:
uncrypto: 0.1.3
-
-
css-tree@3.1.0:
-
dependencies:
-
mdn-data: 2.12.2
-
source-map-js: 1.2.1
csstype@3.1.3: {}
···
encodeurl@2.0.0: {}
-
entities@4.5.0: {}
+
enhanced-resolve@5.18.3:
+
dependencies:
+
graceful-fs: 4.2.11
+
tapable: 2.3.0
entities@6.0.1: {}
+
env-paths@3.0.0: {}
+
error-stack-parser-es@1.0.5: {}
error-stack-parser@2.1.4:
···
escape-html@1.0.3: {}
escape-string-regexp@5.0.0: {}
+
+
esm-env@1.2.2: {}
esprima@4.0.1: {}
···
exsolve@1.0.7: {}
+
fast-deep-equal@3.1.3: {}
+
fast-fifo@1.3.2: {}
fast-glob@3.3.3:
···
merge2: 1.4.1
micromatch: 4.0.8
+
fast-uri@3.1.0: {}
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
···
get-tsconfig@4.11.0:
dependencies:
resolve-pkg-maps: 1.0.0
+
optional: true
giget@2.0.0:
dependencies:
···
package-json-from-dist: 1.0.1
path-scurry: 1.11.1
-
globals@15.15.0: {}
+
globby@14.1.0:
+
dependencies:
+
'@sindresorhus/merge-streams': 2.3.0
+
fast-glob: 3.3.3
+
ignore: 7.0.5
+
path-type: 6.0.0
+
slash: 5.1.0
+
unicorn-magic: 0.3.0
globby@15.0.0:
dependencies:
···
graceful-fs@4.2.11: {}
graphemer@1.4.0: {}
-
-
gzip-size@6.0.0:
-
dependencies:
-
duplexer: 0.1.2
gzip-size@7.0.0:
dependencies:
···
radix3: 1.1.2
ufo: 1.6.1
uncrypto: 0.1.3
+
+
has-flag@4.0.0: {}
hasown@2.0.2:
dependencies:
···
human-signals@5.0.0: {}
+
iconv-lite@0.7.0:
+
dependencies:
+
safer-buffer: 2.1.2
+
ieee754@1.2.1: {}
ignore@7.0.5: {}
-
importx@0.5.2:
-
dependencies:
-
bundle-require: 5.1.0(esbuild@0.25.10)
-
debug: 4.4.3
-
esbuild: 0.25.10
-
jiti: 2.6.1
-
pathe: 2.0.3
-
tsx: 4.20.6
-
transitivePeerDependencies:
-
- supports-color
-
inherits@2.0.4: {}
ioredis@5.8.1:
···
ipaddr.js@2.2.0: {}
-
iron-session@8.0.4:
-
dependencies:
-
cookie: 0.7.2
-
iron-webcrypto: 1.2.1
-
uncrypto: 0.1.3
-
iron-webcrypto@1.2.1: {}
-
-
is-binary-path@2.1.0:
-
dependencies:
-
binary-extensions: 2.3.0
is-core-module@2.16.1:
dependencies:
···
jsesc@3.1.0: {}
+
json-schema-traverse@1.0.0: {}
+
json5@2.2.3: {}
kleur@4.1.5: {}
···
knitwork@1.2.0: {}
-
kolorist@1.8.0: {}
-
lazystream@1.0.1:
dependencies:
readable-stream: 2.3.8
+
lightningcss-darwin-arm64@1.30.1:
+
optional: true
+
+
lightningcss-darwin-x64@1.30.1:
+
optional: true
+
+
lightningcss-freebsd-x64@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm-gnueabihf@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm64-gnu@1.30.1:
+
optional: true
+
+
lightningcss-linux-arm64-musl@1.30.1:
+
optional: true
+
+
lightningcss-linux-x64-gnu@1.30.1:
+
optional: true
+
+
lightningcss-linux-x64-musl@1.30.1:
+
optional: true
+
+
lightningcss-win32-arm64-msvc@1.30.1:
+
optional: true
+
+
lightningcss-win32-x64-msvc@1.30.1:
+
optional: true
+
+
lightningcss@1.30.1:
+
dependencies:
+
detect-libc: 2.1.2
+
optionalDependencies:
+
lightningcss-darwin-arm64: 1.30.1
+
lightningcss-darwin-x64: 1.30.1
+
lightningcss-freebsd-x64: 1.30.1
+
lightningcss-linux-arm-gnueabihf: 1.30.1
+
lightningcss-linux-arm64-gnu: 1.30.1
+
lightningcss-linux-arm64-musl: 1.30.1
+
lightningcss-linux-x64-gnu: 1.30.1
+
lightningcss-linux-x64-musl: 1.30.1
+
lightningcss-win32-arm64-msvc: 1.30.1
+
lightningcss-win32-x64-msvc: 1.30.1
+
listhen@1.9.0:
dependencies:
'@parcel/watcher': 2.5.1
···
ufo: 1.6.1
untun: 0.1.3
uqr: 0.1.2
-
-
load-tsconfig@0.2.5: {}
local-pkg@1.1.2:
dependencies:
···
unist-util-visit: 5.0.0
vfile: 6.0.3
-
mdn-data@2.12.2: {}
-
merge-anything@5.1.7:
dependencies:
is-what: 4.1.16
···
pkg-types: 1.3.1
ufo: 1.6.1
-
mrmime@2.0.1: {}
-
ms@2.0.0: {}
ms@2.1.3: {}
multiformats@9.9.0: {}
+
mustache@4.2.0: {}
+
+
mute-stream@2.0.0: {}
+
nanoid@3.3.11: {}
nitropack@2.12.7:
···
package-json-from-dist@1.0.1: {}
-
package-manager-detector@1.4.0: {}
-
parse5@7.3.0:
dependencies:
entities: 6.0.1
parseurl@1.3.3: {}
+
+
path-browserify@1.0.1: {}
path-key@3.1.1: {}
···
pathe@2.0.3: {}
-
perfect-debounce@1.0.0: {}
-
perfect-debounce@2.0.0: {}
picocolors@1.1.1: {}
···
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
+
+
prettier@3.6.2: {}
pretty-bytes@7.1.0: {}
···
dependencies:
minimatch: 5.1.6
-
readdirp@3.6.0:
-
dependencies:
-
picomatch: 2.3.1
-
readdirp@4.1.2: {}
recast@0.23.11:
···
require-directory@2.1.1: {}
+
require-from-string@2.0.2: {}
+
requires-port@1.0.0: {}
resolve-from@5.0.0: {}
-
resolve-pkg-maps@1.0.0: {}
+
resolve-pkg-maps@1.0.0:
+
optional: true
resolve@1.22.10:
dependencies:
···
safe-buffer@5.1.2: {}
safe-buffer@5.2.1: {}
+
+
safer-buffer@2.1.2: {}
scule@1.3.0: {}
···
signal-exit@4.1.0: {}
-
sirv@3.0.2:
-
dependencies:
-
'@polka/url': 1.0.0-next.29
-
mrmime: 2.0.1
-
totalist: 3.0.1
-
slash@5.1.0: {}
smob@1.5.0: {}
···
supports-color@10.2.2: {}
+
supports-color@7.2.0:
+
dependencies:
+
has-flag: 4.0.0
+
supports-preserve-symlinks-flag@1.0.0: {}
system-architecture@0.1.0: {}
tagged-tag@1.0.0: {}
+
tailwind-merge@3.3.1: {}
+
+
tailwindcss-animate@1.0.7(tailwindcss@4.1.14):
+
dependencies:
+
tailwindcss: 4.1.14
+
+
tailwindcss@4.1.14: {}
+
+
tapable@2.3.0: {}
+
tar-stream@3.1.7:
dependencies:
b4a: 1.7.3
···
minizlib: 3.1.0
yallist: 5.0.0
+
temporal-polyfill@0.3.0:
+
dependencies:
+
temporal-spec: 0.3.0
+
+
temporal-spec@0.3.0: {}
+
terracotta@1.0.6(solid-js@1.9.9):
dependencies:
solid-js: 1.9.9
···
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
+
tlds@1.260.0: {}
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
toidentifier@1.0.1: {}
-
-
totalist@3.0.1: {}
tr46@0.0.3: {}
trim-lines@3.0.1: {}
+
ts-morph@24.0.0:
+
dependencies:
+
'@ts-morph/common': 0.25.0
+
code-block-writer: 13.0.3
+
tslib@2.8.1: {}
tsx@4.20.6:
···
get-tsconfig: 4.11.0
optionalDependencies:
fsevents: 2.3.3
+
optional: true
type-fest@4.41.0: {}
···
multiformats: 9.9.0
ultrahtml@1.6.0: {}
-
-
unconfig@0.6.1:
-
dependencies:
-
'@antfu/utils': 8.1.1
-
defu: 6.1.4
-
importx: 0.5.2
-
transitivePeerDependencies:
-
- supports-color
uncrypto@0.1.3: {}
···
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
-
unocss@0.65.4(postcss@8.5.6)(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22):
-
dependencies:
-
'@unocss/astro': 0.65.4(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)
-
'@unocss/cli': 0.65.4(rollup@4.52.4)
-
'@unocss/core': 0.65.4
-
'@unocss/postcss': 0.65.4(postcss@8.5.6)
-
'@unocss/preset-attributify': 0.65.4
-
'@unocss/preset-icons': 0.65.4
-
'@unocss/preset-mini': 0.65.4
-
'@unocss/preset-tagify': 0.65.4
-
'@unocss/preset-typography': 0.65.4
-
'@unocss/preset-uno': 0.65.4
-
'@unocss/preset-web-fonts': 0.65.4
-
'@unocss/preset-wind': 0.65.4
-
'@unocss/transformer-attributify-jsx': 0.65.4
-
'@unocss/transformer-compile-class': 0.65.4
-
'@unocss/transformer-directives': 0.65.4
-
'@unocss/transformer-variant-group': 0.65.4
-
'@unocss/vite': 0.65.4(rollup@4.52.4)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))(vue@3.5.22)
-
optionalDependencies:
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
transitivePeerDependencies:
-
- postcss
-
- rollup
-
- supports-color
-
- vue
-
unplugin-utils@0.3.1:
dependencies:
pathe: 2.0.3
···
'@types/unist': 3.0.3
vfile-message: 4.0.3
-
vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6):
+
vinxi@0.5.8(db0@0.3.4)(ioredis@5.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
···
unctx: 2.4.1
unenv: 1.10.0
unstorage: 1.17.1(db0@0.3.4)(ioredis@5.8.1)
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
+
vite: 6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
zod: 3.25.76
transitivePeerDependencies:
- '@azure/app-configuration'
···
- xml2js
- yaml
-
vite-plugin-solid@2.11.9(solid-js@1.9.9)(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)):
+
vite-plugin-solid@2.11.9(solid-js@1.9.9)(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.4
'@types/babel__core': 7.20.5
···
merge-anything: 5.1.7
solid-js: 1.9.9
solid-refresh: 0.6.3(solid-js@1.9.9)
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
-
vitefu: 1.1.1(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))
+
vite: 6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
vitefu: 1.1.1(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
-
vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6):
+
vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
···
optionalDependencies:
fsevents: 2.3.3
jiti: 2.6.1
+
lightningcss: 1.30.1
terser: 5.44.0
tsx: 4.20.6
+
yaml: 2.8.1
-
vitefu@1.1.1(vite@6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)):
+
vitefu@1.1.1(vite@6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
optionalDependencies:
-
vite: 6.3.6(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)
+
vite: 6.3.6(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
+
vscode-jsonrpc@8.2.0: {}
-
vue-flow-layout@0.1.1(vue@3.5.22):
+
vscode-languageserver-protocol@3.17.5:
dependencies:
-
vue: 3.5.22
+
vscode-jsonrpc: 8.2.0
+
vscode-languageserver-types: 3.17.5
-
vue@3.5.22:
+
vscode-languageserver-textdocument@1.0.12: {}
+
+
vscode-languageserver-types@3.17.5: {}
+
+
vscode-languageserver@9.0.1:
dependencies:
-
'@vue/compiler-dom': 3.5.22
-
'@vue/compiler-sfc': 3.5.22
-
'@vue/runtime-dom': 3.5.22
-
'@vue/server-renderer': 3.5.22(vue@3.5.22)
-
'@vue/shared': 3.5.22
+
vscode-languageserver-protocol: 3.17.5
webidl-conversions@3.0.1: {}
···
widest-line@5.0.0:
dependencies:
string-width: 7.2.0
+
+
wrap-ansi@6.2.0:
+
dependencies:
+
ansi-styles: 4.3.0
+
string-width: 4.2.3
+
strip-ansi: 6.0.1
wrap-ansi@7.0.0:
dependencies:
···
string-width: 7.2.0
y18n: 5.0.8
yargs-parser: 22.0.0
+
+
yesno@0.4.0: {}
yoctocolors-cjs@2.1.3: {}
+1
pnpm-workspace.yaml
···
onlyBuiltDependencies:
- '@parcel/watcher'
+
- '@tailwindcss/oxide'
- esbuild
+2 -4
src/app.tsx
···
-
import "@unocss/reset/tailwind.css"
-
import "virtual:uno.css"
-
import { Router } from "@solidjs/router"
import { FileRoutes } from "@solidjs/start/router"
import { Suspense } from "solid-js"
-
import Nav from "~/components/Nav"
+
import Nav from "@/components/Nav"
+
import "./assets/styles.css"
export default function App() {
return (
+65
src/assets/styles.css
···
+
@import "tailwindcss";
+
+
@layer base {
+
:root {
+
--background: 0 0% 100%;
+
--foreground: 222.2 84% 4.9%;
+
+
--card: 0 0% 100%;
+
--card-foreground: 222.2 84% 4.9%;
+
+
--popover: 0 0% 100%;
+
--popover-foreground: 222.2 84% 4.9%;
+
+
--primary: 222.2 47.4% 11.2%;
+
--primary-foreground: 210 40% 98%;
+
+
--secondary: 210 40% 96.1%;
+
--secondary-foreground: 222.2 47.4% 11.2%;
+
+
--muted: 210 40% 96.1%;
+
--muted-foreground: 215.4 16.3% 46.9%;
+
+
--accent: 210 40% 96.1%;
+
--accent-foreground: 222.2 47.4% 11.2%;
+
+
--destructive: 0 84.2% 60.2%;
+
--destructive-foreground: 210 40% 98%;
+
+
--border: 214.3 31.8% 91.4%;
+
--input: 214.3 31.8% 91.4%;
+
--ring: 222.2 84% 4.9%;
+
+
--radius: 0.5rem;
+
}
+
+
[data-kb-theme="dark"] {
+
--background: 222.2 84% 4.9%;
+
--foreground: 210 40% 98%;
+
+
--card: 222.2 84% 4.9%;
+
--card-foreground: 210 40% 98%;
+
+
--popover: 222.2 84% 4.9%;
+
--popover-foreground: 210 40% 98%;
+
+
--primary: 210 40% 98%;
+
--primary-foreground: 222.2 47.4% 11.2%;
+
+
--secondary: 217.2 32.6% 17.5%;
+
--secondary-foreground: 210 40% 98%;
+
+
--muted: 217.2 32.6% 17.5%;
+
--muted-foreground: 215 20.2% 65.1%;
+
+
--accent: 217.2 32.6% 17.5%;
+
--accent-foreground: 210 40% 98%;
+
+
--destructive: 0 62.8% 30.6%;
+
--destructive-foreground: 210 40% 98%;
+
+
--border: 217.2 32.6% 17.5%;
+
--input: 217.2 32.6% 17.5%;
+
--ring: 212.7 26.8% 83.9%;
+
}
+
}
+28
src/assets/theme.css
···
+
@theme {
+
--color-base-100: oklch(98% 0 0);
+
--color-base-200: oklch(96% 0.001 286.375);
+
--color-base-300: oklch(92% 0.004 286.32);
+
--color-base-content: oklch(21% 0.006 285.885);
+
--color-primary: oklch(90% 0.182 98.111);
+
--color-primary-content: oklch(28% 0.066 53.813);
+
--color-secondary: oklch(86% 0.005 56.366);
+
--color-secondary-content: oklch(14% 0.004 49.25);
+
--color-accent: oklch(80% 0.114 19.571);
+
--color-accent-content: oklch(25% 0.092 26.042);
+
--color-neutral: oklch(44% 0.017 285.786);
+
--color-neutral-content: oklch(98% 0 0);
+
--color-info: oklch(62% 0.214 259.815);
+
--color-info-content: oklch(97% 0.014 254.604);
+
--color-success: oklch(69% 0.17 162.48);
+
--color-success-content: oklch(97% 0.021 166.113);
+
--color-warning: oklch(70% 0.213 47.604);
+
--color-warning-content: oklch(98% 0.016 73.684);
+
--color-error: oklch(63% 0.237 25.331);
+
--color-error-content: oklch(97% 0.013 17.38);
+
--radius-selector: 0.5rem;
+
--radius-field: 0.25rem;
+
--radius-box: 2rem;
+
--size-selector: 0.25rem;
+
--size-field: 0.25rem;
+
--border: 1px;
+
}
-14
src/components/Counter.tsx
···
-
import { createSignal } from "solid-js"
-
-
export default function Counter() {
-
const [count, setCount] = createSignal<number>(0)
-
return (
-
<button
-
type="button"
-
class="w-[200px] rounded-full bg-gray-100 border-2 border-gray-300 focus:border-gray-400 active:border-gray-400 px-[2rem] py-[1rem]"
-
onClick={() => setCount(count() + 1)}
-
>
-
Clicks: {count()}
-
</button>
-
)
-
}
+30 -12
src/components/Nav.tsx
···
import { useLocation } from "@solidjs/router"
+
import { createResource, Show, Suspense } from "solid-js"
+
import { useAuthSession } from "../lib/auth/actions.ts"
export default function Nav() {
const location = useLocation()
···
path == location.pathname
? "border-sky-600"
: "border-transparent hover:border-sky-600"
+
return (
-
<nav class="bg-sky-800">
-
<ul class="container flex items-center p-3 text-gray-200">
-
<li class={`border-b-2 ${active("/")} mx-1.5 sm:mx-6`}>
-
<a href="/">Home</a>
-
</li>
-
<li class={`border-b-2 ${active("/about")} mx-1.5 sm:mx-6`}>
-
<a href="/about">About</a>
-
</li>
-
<li class={`border-b-2 ${active("/login")} mx-1.5 sm:mx-6`}>
-
<a href="/login">Login</a>
-
</li>
-
</ul>
+
<nav class="flex flex-row px-4 py-2 gap-4 justify-between items-center mx-4 my-2 rounded-xl bg-base-200 text-secondary-content">
+
<div class="flex flex-row gap-4">
+
<a href="/">Home</a>
+
<a href="/about">About</a>
+
</div>
+
+
<aside class="">
+
<Suspense>
+
<LoginAccount />
+
</Suspense>
+
</aside>
</nav>
)
}
+
+
function LoginAccount() {
+
const [session] = createResource(useAuthSession)
+
+
return (
+
<Show when={session()} fallback={<a href="/login">Login</a>}>
+
<a href="/account">
+
<img
+
src={session()?.avatar}
+
alt={session()?.handle}
+
class="size-12 rounded-full"
+
/>
+
</a>
+
</Show>
+
)
+
}
+3 -1
src/entry-server.tsx
···
</html>
)}
/>
-
))
+
), {
+
mode: "stream",
+
})
+1
src/lexicons/index.ts
···
+
export * as IngPinboardPinUrl from "./types/ing/pinboard/pin/url.ts"
src/lexicons/ing/pinboard/pin/url.json lexicons/ing/pinboard/pin/url.json
+46
src/lexicons/lex.ts
···
+
export const IngPinboardPinUrl = {
+
"lexicon": 1 as const,
+
"id": "ing.pinboard.pin.url" as const,
+
"defs": {
+
"main": {
+
"type": "record" as const,
+
"key": "tid" as const,
+
"record": {
+
"type": "object" as const,
+
"properties": {
+
"type": {
+
"type": "string",
+
"const": "url",
+
"description": "type of the pin",
+
},
+
"title": {
+
"type": "string",
+
"description": "title of the pin",
+
},
+
"description": {
+
"type": "string",
+
"maxGraphemes": 140,
+
"minGraphemes": 1,
+
"description": "description of the pin",
+
},
+
"url": {
+
"type": "string",
+
"format": "uri",
+
"description": "url of the pin",
+
},
+
"createdAt": {
+
"type": "string",
+
"format": "datetime",
+
},
+
} as const,
+
"required": [
+
"title",
+
"description",
+
"url",
+
"createdAt",
+
],
+
},
+
},
+
},
+
}
+
export type TIngPinboardPinUrl = typeof IngPinboardPinUrl
+45
src/lexicons/types/ing/pinboard/pin/url.ts
···
+
import type {} from "@atcute/lexicons";
+
import * as v from "@atcute/lexicons/validations";
+
import type {} from "@atcute/lexicons/ambient";
+
+
const _mainSchema = /*#__PURE__*/ v.record(
+
/*#__PURE__*/ v.tidString(),
+
/*#__PURE__*/ v.object({
+
$type: /*#__PURE__*/ v.literal("ing.pinboard.pin.url"),
+
createdAt: /*#__PURE__*/ v.datetimeString(),
+
/**
+
* description of the pin
+
* @minGraphemes 1
+
* @maxGraphemes 140
+
*/
+
description: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [
+
/*#__PURE__*/ v.stringGraphemes(1, 140),
+
]),
+
/**
+
* title of the pin
+
*/
+
title: /*#__PURE__*/ v.string(),
+
/**
+
* type of the pin
+
*/
+
type: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.literal("url")),
+
/**
+
* url of the pin
+
*/
+
url: /*#__PURE__*/ v.genericUriString(),
+
}),
+
);
+
+
type main$schematype = typeof _mainSchema;
+
+
export interface mainSchema extends main$schematype {}
+
+
export const mainSchema = _mainSchema as mainSchema;
+
+
export interface Main extends v.InferInput<typeof mainSchema> {}
+
+
declare module "@atcute/lexicons/ambient" {
+
interface Records {
+
"ing.pinboard.pin.url": mainSchema;
+
}
+
}
+19 -4
src/lib/auth/actions.ts
···
import { action, redirect } from "@solidjs/router"
import { isValidHandle } from "@atproto/syntax"
-
import { err, isErr, tryCatch } from "~/utils/trycatch.ts"
+
import { err, isErr, tryCatch } from "@/utils/trycatch.ts"
import { oauthClient } from "./client.ts"
+
import { getAuthSession } from "./utils.ts"
export const login = action(async (formData: FormData) => {
"use server"
// Validate
const handle = formData.get("handle")
-
console.log("handle:", handle)
+
if (typeof handle !== "string" || !isValidHandle(handle)) {
-
return err("Invalid handle")
+
throw err("Invalid handle")
}
const url = await tryCatch(oauthClient.authorize(handle, {
···
if (isErr(url)) {
console.error(url.error)
-
return err(url.error)
+
throw err(url.error)
}
return redirect(url.value.toString())
})
+
+
export const isAuthed = async () => {
+
"use server"
+
+
//deno-lint-ignore react-rules-of-hooks
+
const session = await useAuthSession()
+
+
return !!session.did
+
}
+
+
export const useAuthSession = async () => {
+
"use server"
+
return (await getAuthSession()).data
+
}
+1 -1
src/lib/auth/client.ts
···
-
import { config, isDev } from "~/lib/config"
+
import { config, isDev } from "@/lib/config"
import { SessionStore, StateStore } from "./storage"
import { AtprotoOAuthClient } from "@bigmoves/atproto-oauth-client"
+1
src/lib/auth/types.ts
···
+
export type SessionData = { did: string; handle: string; avatar: string }
+12
src/lib/auth/utils.ts
···
+
import { config } from "../config.ts"
+
import { SessionData } from "./types.ts"
+
+
import { useSession } from "vinxi/http"
+
+
export async function getAuthSession() {
+
//deno-lint-ignore react-rules-of-hooks
+
return await useSession<SessionData>({
+
password: config.COOKIE_SECRET,
+
name: "sid",
+
})
+
}
+5
src/lib/cn.ts
···
+
import type { ClassValue } from "clsx";
+
import clsx from "clsx";
+
import { twMerge } from "tailwind-merge";
+
+
export const cn = (...classLists: ClassValue[]) => twMerge(clsx(classLists));
+11 -2
src/lib/config.ts
···
+
export const isDev = Deno.env.get("NODE_ENV") === "development"
+
+
const requiredVars = !isDev ? ["PUBLIC_URL", "COOKIE_SECRET"] : []
+
const missingVars = requiredVars.filter((varName) => !Deno.env.get(varName))
+
+
if (missingVars.length > 0) {
+
throw new Error(
+
`Missing required environment variables: ${missingVars.join(", ")}`,
+
)
+
}
+
export const config = {
PORT: Deno.env.get("PORT") || 3000,
get PUBLIC_URL() {
···
},
COOKIE_SECRET: Deno.env.get("SESSION_SECRET") || "secret".repeat(12),
}
-
-
export const isDev = Deno.env.get("NODE_ENV") === "development"
+7
src/lib/xrpc.ts
···
+
import { XrpcClient as XC } from "@atproto/xrpc"
+
import { Lexicons } from "@atproto/lexicon"
+
import { OAuthSession } from "@atproto/oauth-client"
+
+
export function XrpcClient(session: OAuthSession, lexicon: Lexicons) {
+
return new XC(session.fetchHandler, lexicon)
+
}
+21
src/middleware/protected.ts
···
+
import { createMiddleware } from "@solidjs/start/middleware"
+
import { getAuthSession } from "@/lib/auth/utils.ts"
+
+
const protectedPrefixes = ["/profile", "/account", "/pins"]
+
+
export default createMiddleware({
+
onRequest: async (event) => {
+
const { pathname, origin } = new URL(event.request.url)
+
if (
+
protectedPrefixes.some((prefix) => pathname.startsWith(prefix))
+
) {
+
const session = await getAuthSession()
+
if (!session) {
+
return Response.redirect(
+
`${origin}/login?next=${encodeURIComponent(pathname)}`,
+
302,
+
)
+
}
+
}
+
},
+
})
-2
src/routes/about.tsx
···
import { A } from "@solidjs/router"
-
import Counter from "~/components/Counter"
export default function About() {
return (
···
<h1 class="max-6-xs text-6xl text-sky-700 font-thin uppercase my-16">
About Page
</h1>
-
<Counter />
<p class="mt-8">
Visit{" "}
<a
+70
src/routes/account/index.tsx
···
+
import { createResource, Show, Suspense } from "solid-js"
+
import { useAuthSession } from "@/lib/auth/actions.ts"
+
import { oauthClient } from "@/lib/auth/client.ts"
+
import { Agent } from "@atproto/api"
+
import { IngPinboardPinUrl, TIngPinboardPinUrl } from "@/lexicons/lex"
+
+
async function test() {
+
const session = await useAuthSession()
+
const oauthSession = await oauthClient.restore(session.did)
+
+
// Instantiate the api Agent using an OAuthSession
+
const agent = new Agent(oauthSession)
+
+
agent.lex.add(IngPinboardPinUrl)
+
+
const rec = {
+
$type: "ing.pinboard.pin.url",
+
type: "url",
+
title: "Hello, world!",
+
description: "This is a test pin",
+
url: "https://example.com",
+
createdAt: new Date().toISOString(),
+
}
+
+
const record = agent.lex.validate(
+
"ing.pinboard.pin.url",
+
rec,
+
)
+
+
if (!record.success) {
+
console.error("Validation failed:", record.error)
+
return
+
}
+
+
const res1 = await agent.com.atproto.repo.createRecord({
+
collection: "ing.pinboard.pin.url",
+
repo: agent.did ?? "",
+
record: record.value as TIngPinboardPinUrl,
+
})
+
+
console.log(res1)
+
}
+
+
export default function Profile() {
+
const [user] = createResource(useAuthSession)
+
+
void test()
+
+
return (
+
<main class="text-center mx-auto text-gray-700 p-4">
+
<h1 class="text-2xl mb-6">User Profile</h1>
+
+
<Suspense fallback={<div>Loading profile...</div>}>
+
<Show when={user()}>
+
<div class="space-y-4">
+
<h2 class="text-xl font-semibold">{user()?.handle}</h2>
+
<p class="text-sm text-gray-500">DID: {user()?.did}</p>
+
<Show when={user()?.avatar}>
+
<img
+
src={user()?.avatar}
+
alt={user()?.handle}
+
class="w-24 h-24 rounded-full mx-auto"
+
/>
+
</Show>
+
</div>
+
</Show>
+
</Suspense>
+
</main>
+
)
+
}
+1 -1
src/routes/client-metadata.json.ts
···
import { APIEvent } from "@solidjs/start/server"
-
import { oauthClient } from "~/lib/auth/client.ts"
+
import { oauthClient } from "@/lib/auth/client.ts"
export function GET(event: APIEvent) {
console.log("GET /oauth/callback")
-2
src/routes/index.tsx
···
import { A } from "@solidjs/router"
-
import Counter from "~/components/Counter"
export default function Home() {
return (
···
/>!
</div>
</h1>
-
<Counter />
<p class="mt-8">
Visit{" "}
<a
+16 -2
src/routes/login.tsx
···
-
import { login } from "~/lib/auth/actions.ts"
+
import { login } from "@/lib/auth/actions.ts"
+
import { useSubmission } from "@solidjs/router"
export default function About() {
+
const loginState = useSubmission(login)
+
return (
<main class="text-center mx-auto text-gray-700 p-4">
<h1 class="max-6-xs text-6xl text-sky-700 font-thin uppercase my-16">
···
class="flex flex-col w-52 mx-auto mt-6 gap-4"
>
<input name="handle" type="text" placeholder="Handle" />
+
+
{loginState.error && (
+
<div class="p-3 rounded-lg bg-red-100 text-red-700">
+
{loginState.error.error || "Login failed"}
+
</div>
+
)}
+
<button
type="submit"
-
class="bg-blue-500 rounded-lg text-slate-100"
+
class={"bg-blue-500 rounded-lg text-slate-100" +
+
(loginState.pending
+
? " opacity-50 cursor-not-allowed"
+
: "")}
+
disabled={loginState.pending}
>
Login
</button>
+100 -21
src/routes/oauth/callback.ts
···
import { APIEvent } from "@solidjs/start/server"
import { redirect } from "@solidjs/router"
-
import { oauthClient } from "~/lib/auth/client.ts"
-
import assert from "node:assert/strict"
-
import { getIronSession } from "iron-session"
-
import { config } from "~/lib/config.ts"
+
import { oauthClient } from "@/lib/auth/client.ts"
+
import { getAuthSession } from "@/lib/auth/utils.ts"
+
import { tryCatch } from "@/utils/trycatch.ts"
+
import type {} from "@atcute/atproto"
+
import type {} from "@atcute/bluesky"
+
import { Client, CredentialManager } from "@atcute/client"
+
import { isAtprotoDid } from "@atcute/identity"
+
import {
+
CompositeDidDocumentResolver,
+
DocumentNotFoundError,
+
FailedDocumentResolutionError,
+
HandleResolutionError,
+
ImproperDidError,
+
PlcDidDocumentResolver,
+
UnsupportedDidMethodError,
+
WebDidDocumentResolver,
+
} from "@atcute/identity-resolver"
+
+
type DID = `did:${string}:${string}`
+
+
async function resolveAliases(did: DID) {
+
// DID document resolution
+
const docResolver = new CompositeDidDocumentResolver({
+
methods: {
+
plc: new PlcDidDocumentResolver(),
+
web: new WebDidDocumentResolver(),
+
},
+
})
+
+
if (!isAtprotoDid(did)) {
+
return
+
}
+
+
const doc = await tryCatch(docResolver.resolve(did))
+
+
if (!doc.ok) {
+
if (doc.error instanceof DocumentNotFoundError) {
+
// did returned no document
+
console.error("Document not found")
+
}
+
if (doc.error instanceof UnsupportedDidMethodError) {
+
// resolver doesn't support did method (composite resolver)
+
console.error("Unsupported DID method")
+
}
+
if (doc.error instanceof ImproperDidError) {
+
// resolver considers did as invalid (atproto did:web)
+
console.error("Improper DID")
+
}
+
if (doc.error instanceof FailedDocumentResolutionError) {
+
// document resolution had thrown something unexpected (fetch error)
+
console.error("Failed document resolution")
+
}
+
+
if (doc.error instanceof HandleResolutionError) {
+
// the errors above extend this class, so you can do a catch-all.
+
console.error("Handle resolution error")
+
}
+
return
+
}
+
+
return doc.value.alsoKnownAs
+
}
-
type Session = { did: string }
+
async function getAvatar(did: DID) {
+
const rpc = new Client({
+
handler: new CredentialManager({
+
service: "https://public.api.bsky.app",
+
}),
+
})
+
+
const res = await rpc.get("app.bsky.actor.getProfile", {
+
params: { actor: did },
+
})
+
+
if (res.ok) {
+
return res.data.avatar
+
}
+
return undefined
+
}
export async function GET(event: APIEvent) {
const params = new URL(event.request.url).searchParams
-
try {
-
const { session } = await oauthClient.callback(params)
-
const clientSession = await getIronSession<Session>(
-
event.request,
-
event.response,
-
{
-
cookieName: "sid",
-
password: config.COOKIE_SECRET,
-
},
-
)
-
assert(!clientSession.did, "session already exists")
-
clientSession.did = session.did
-
await clientSession.save()
-
} catch (err) {
-
console.error({ err }, "oauth callback failed")
-
return redirect("/?error")
+
const { session } = await oauthClient.callback(params)
+
const clientSession = await getAuthSession()
+
+
if (clientSession.data.did) {
+
return redirect("/")
}
+
+
console.log("Session:", session)
+
+
const handles = await resolveAliases(session.did)
+
const avatar = await getAvatar(session.did)
+
+
if (!handles) {
+
console.error("No handles found")
+
return
+
}
+
+
await clientSession.update({
+
did: session.did,
+
handle: handles[0],
+
avatar,
+
})
+
return redirect("/")
}
+68
src/routes/pins/index.tsx
···
+
import { createResource, Show, Suspense } from "solid-js"
+
import { useAuthSession } from "@/lib/auth/actions.ts"
+
import { oauthClient } from "@/lib/auth/client.ts"
+
import { Agent } from "@atproto/api"
+
import { IngPinboardPinUrl } from "@/lexicons/lex"
+
+
async function usePins() {
+
const session = await useAuthSession()
+
const oauthSession = await oauthClient.restore(session.did)
+
+
// Instantiate the api Agent using an OAuthSession
+
const agent = new Agent(oauthSession)
+
+
agent.lex.add(IngPinboardPinUrl)
+
+
const res1 = await agent.com.atproto.repo.listRecords({
+
collection: "ing.pinboard.pin.url",
+
repo: agent.did ?? "",
+
})
+
+
if (!res1.success) {
+
console.error(res1.data)
+
return
+
}
+
+
return res1.data.records as {
+
uri: string
+
cid: string
+
value: {
+
url: string
+
type: "url"
+
"$type": "ing.pinboard.pin.url"
+
title: string
+
createdAt: string
+
description: string
+
}
+
}[]
+
}
+
+
export default function Pins() {
+
const [pins] = createResource(usePins)
+
+
return (
+
<main class="text-center mx-auto text-gray-700 p-4">
+
<h1 class="text-2xl mb-6">User Pins</h1>
+
+
<Suspense fallback={<div>Loading pins...</div>}>
+
<Show when={pins()}>
+
<div class="space-y-4">
+
{pins()?.map((rec) => (
+
<div>
+
<p>
+
{rec.value.title}
+
</p>
+
<p>
+
{rec.value.description}
+
</p>
+
<span>
+
{rec.value.url}
+
</span>
+
</div>
+
))}
+
</div>
+
</Show>
+
</Suspense>
+
</main>
+
)
+
}
+28
src/routes/profile/index.tsx
···
+
import { createResource, Show, Suspense } from "solid-js"
+
import { useAuthSession } from "@/lib/auth/actions.ts"
+
+
export default function Profile() {
+
const [user] = createResource(useAuthSession)
+
+
return (
+
<main class="text-center mx-auto text-gray-700 p-4">
+
<h1 class="text-2xl mb-6">User Profile</h1>
+
+
<Suspense fallback={<div>Loading profile...</div>}>
+
<Show when={user()}>
+
<div class="space-y-4">
+
<h2 class="text-xl font-semibold">{user()?.handle}</h2>
+
<p class="text-sm text-gray-500">DID: {user()?.did}</p>
+
<Show when={user()?.avatar}>
+
<img
+
src={user()?.avatar}
+
alt={user()?.handle}
+
class="w-24 h-24 rounded-full mx-auto"
+
/>
+
</Show>
+
</div>
+
</Show>
+
</Suspense>
+
</main>
+
)
+
}
+4 -4
src/utils/trycatch.ts
···
type Err = {
ok: false
value: undefined
-
error: string
+
error: string | Error
}
type Success<T> = {
···
return !result.ok
}
-
export function err(message: string): Err {
+
export function err(error: string | Error): Err {
return {
ok: false,
value: undefined,
-
error: message,
+
error,
}
}
···
} catch (error) {
console.error(error)
if (Error.isError(error)) {
-
return err(error.message)
+
return err(error)
}
return err(String(error))
}
+87
tailwind.config.cjs
···
+
/** @type {import('tailwindcss').Config} */
+
module.exports = {
+
darkMode: ["class", '[data-kb-theme="dark"]'],
+
content: ["src/routes/**/*.{ts,tsx}", "src/components/**/*.{ts,tsx}"],
+
prefix: "",
+
theme: {
+
container: {
+
center: true,
+
padding: "2rem",
+
screens: {
+
"2xl": "1400px",
+
},
+
},
+
extend: {
+
colors: {
+
border: "hsl(var(--border))",
+
input: "hsl(var(--input))",
+
ring: "hsl(var(--ring))",
+
background: "hsl(var(--background))",
+
foreground: "hsl(var(--foreground))",
+
primary: {
+
DEFAULT: "hsl(var(--primary))",
+
foreground: "hsl(var(--primary-foreground))",
+
},
+
secondary: {
+
DEFAULT: "hsl(var(--secondary))",
+
foreground: "hsl(var(--secondary-foreground))",
+
},
+
destructive: {
+
DEFAULT: "hsl(var(--destructive))",
+
foreground: "hsl(var(--destructive-foreground))",
+
},
+
muted: {
+
DEFAULT: "hsl(var(--muted))",
+
foreground: "hsl(var(--muted-foreground))",
+
},
+
accent: {
+
DEFAULT: "hsl(var(--accent))",
+
foreground: "hsl(var(--accent-foreground))",
+
},
+
popover: {
+
DEFAULT: "hsl(var(--popover))",
+
foreground: "hsl(var(--popover-foreground))",
+
},
+
card: {
+
DEFAULT: "hsl(var(--card))",
+
foreground: "hsl(var(--card-foreground))",
+
},
+
},
+
borderRadius: {
+
lg: "var(--radius)",
+
md: "calc(var(--radius) - 2px)",
+
sm: "calc(var(--radius) - 4px)",
+
},
+
keyframes: {
+
"accordion-down": {
+
from: { height: 0 },
+
to: { height: "var(--kb-accordion-content-height)" },
+
},
+
"accordion-up": {
+
from: { height: "var(--kb-accordion-content-height)" },
+
to: { height: 0 },
+
},
+
"collapsible-down": {
+
from: { height: 0 },
+
to: { height: "var(--kb-collapsible-content-height)" },
+
},
+
"collapsible-up": {
+
from: { height: "var(--kb-collapsible-content-height)" },
+
to: { height: 0 },
+
},
+
"caret-blink": {
+
"0%,70%,100%": { opacity: "1" },
+
"20%,50%": { opacity: "0" }
+
}
+
},
+
animation: {
+
"accordion-down": "accordion-down 0.2s ease-out",
+
"accordion-up": "accordion-up 0.2s ease-out",
+
"collapsible-down": "collapsible-down 0.2s ease-out",
+
"collapsible-up": "collapsible-up 0.2s ease-out",
+
"caret-blink": "caret-blink 1.25s ease-out infinite"
+
},
+
},
+
},
+
plugins: [require("tailwindcss-animate")],
+
};
+1 -1
tsconfig.json
···
"types": ["vinxi/types/client"],
"isolatedModules": true,
"paths": {
-
"~/*": ["./src/*"]
+
"@/*": ["./src/*"]
}
}
}
+1 -1
tspconfig.yaml
···
- "@typelex/emitter"
options:
"@typelex/emitter":
-
output-dir: "./src/lexicons"
+
output-dir: "./lexicons"
uno.config.ts

This is a binary file and will not be displayed.