diff --git a/apps/backend/.env.example b/apps/backend/.env.example deleted file mode 100644 index d600418..0000000 --- a/apps/backend/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -DATABASE_URL= -APP_URL= -PORT=3000 - -# https://better-auth.com/docs/installation#set-environment-variables -BETTER_AUTH_SECRET= - -GOOGLE_OAUTH_CLIENT_ID= -GOOGLE_OAUTH_CLIENT_SECRET= \ No newline at end of file diff --git a/apps/backend/.gitignore b/apps/backend/.gitignore deleted file mode 100644 index 6972de0..0000000 --- a/apps/backend/.gitignore +++ /dev/null @@ -1,43 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build -/dist - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env.local -.env.development.local -.env.test.local -.env.production.local - -# vercel -.vercel - -**/*.trace -**/*.zip -**/*.tar.gz -**/*.tgz -**/*.log -package-lock.json -**/*.bun \ No newline at end of file diff --git a/apps/backend/.prettierrc b/apps/backend/.prettierrc deleted file mode 100644 index 7101a4d..0000000 --- a/apps/backend/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "printWidth": 70, - "bracketSameLine": true, - "htmlWhitespaceSensitivity": "ignore" -} diff --git a/apps/backend/Dockerfile b/apps/backend/Dockerfile deleted file mode 100644 index 880b0e9..0000000 --- a/apps/backend/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM oven/bun AS build - -WORKDIR /app - -COPY / ./ - -ARG BETTER_AUTH_SECRET -ARG DATABASE_URL -ARG APP_URL -ARG GOOGLE_OAUTH_CLIENT_ID -ARG GOOGLE_OAUTH_CLIENT_SECRET - -ARG TURBO_TELEMETRY_DISABLED=1 - -RUN bun install -RUN bun run build --filter=!./apps/web - -CMD ["/app/apps/backend/build/file-router"] \ No newline at end of file diff --git a/apps/backend/README.md b/apps/backend/README.md deleted file mode 100644 index 688c87e..0000000 --- a/apps/backend/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Elysia with Bun runtime - -## Getting Started -To get started with this template, simply paste this command into your terminal: -```bash -bun create elysia ./elysia-example -``` - -## Development -To start the development server run: -```bash -bun run dev -``` - -Open http://localhost:3000/ with your browser to see the result. \ No newline at end of file diff --git a/apps/backend/bun.lock b/apps/backend/bun.lock deleted file mode 100644 index 628ffc4..0000000 --- a/apps/backend/bun.lock +++ /dev/null @@ -1,469 +0,0 @@ -{ - "lockfileVersion": 1, - "configVersion": 1, - "workspaces": { - "": { - "name": "elysia-template", - "dependencies": { - "@elysiajs/cors": "^1.4.0", - "@elysiajs/cron": "^1.4.1", - "@elysiajs/eden": "^1.4.5", - "@elysiajs/openapi": "^1.4.11", - "better-auth": "1.3.7", - "drizzle-orm": "^0.44.7", - "elysia": "latest", - "pg": "^8.16.3", - "tsdown": "0.15.10", - }, - "devDependencies": { - "@types/pg": "^8.15.6", - "bun-types": "latest", - "chokidar": "^5.0.0", - "croner": "^10.0.1", - "drizzle-kit": "^0.31.7", - "typescript": "^5.9.3", - }, - }, - }, - "packages": { - "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], - - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], - - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], - - "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], - - "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - - "@better-auth/utils": ["@better-auth/utils@0.2.6", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-3y/vaL5Ox33dBwgJ6ub3OPkVqr6B5xL2kgxNHG8eHZuryLyG/4JSPGqjbdRSgjuy9kALUZYDFl+ORIAxlWMSuA=="], - - "@better-fetch/fetch": ["@better-fetch/fetch@1.1.18", "", {}, "sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA=="], - - "@borewit/text-codec": ["@borewit/text-codec@0.1.1", "", {}, "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA=="], - - "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], - - "@elysiajs/cors": ["@elysiajs/cors@1.4.0", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-pb0SCzBfFbFSYA/U40HHO7R+YrcXBJXOWgL20eSViK33ol1e20ru2/KUaZYo5IMUn63yaTJI/bQERuQ+77ND8g=="], - - "@elysiajs/cron": ["@elysiajs/cron@1.4.1", "", { "dependencies": { "croner": "^6.0.3" }, "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-Y+jqXtMJ+m17QzNWlWc09ugd1Fn1Wh7lqE+y9qSW8eiQZEqsRADXWmbLuXRSRaSC5dkfOyRSiwNCp6n8L/yuqA=="], - - "@elysiajs/eden": ["@elysiajs/eden@1.4.5", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-hIOeH+S5NU/84A7+t8yB1JjxqjmzRkBF9fnLn6y+AH8EcF39KumOAnciMhIOkhhThVZvXZ3d+GsizRc+Fxoi8g=="], - - "@elysiajs/openapi": ["@elysiajs/openapi@1.4.11", "", { "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-d75bMxYJpN6qSDi/z9L1S7SLk1S/8Px+cTb3W2lrYzU8uQ5E0kXdy1oOMJEfTyVsz3OA19NP9KNxE7ztSbLBLg=="], - - "@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], - - "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], - - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - - "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], - - "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], - - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], - - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], - - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], - - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], - - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], - - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], - - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], - - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], - - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], - - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], - - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], - - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], - - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], - - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], - - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], - - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], - - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], - - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], - - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], - - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], - - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], - - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], - - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], - - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], - - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], - - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], - - "@hexagon/base64": ["@hexagon/base64@1.1.28", "", {}, "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw=="], - - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], - - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - - "@levischuck/tiny-cbor": ["@levischuck/tiny-cbor@0.2.11", "", {}, "sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow=="], - - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], - - "@noble/ciphers": ["@noble/ciphers@0.6.0", "", {}, "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ=="], - - "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], - - "@oxc-project/runtime": ["@oxc-project/runtime@0.99.0", "", {}, "sha512-8iE5/4OK0SLHqWzRxSvI1gjFPmIH6718s8iwkuco95rBZsCZIHq+5wy4lYsASxnH+8FOhbGndiUrcwsVG5i2zw=="], - - "@oxc-project/types": ["@oxc-project/types@0.95.0", "", {}, "sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ=="], - - "@peculiar/asn1-android": ["@peculiar/asn1-android@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ=="], - - "@peculiar/asn1-cms": ["@peculiar/asn1-cms@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "@peculiar/asn1-x509-attr": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA=="], - - "@peculiar/asn1-csr": ["@peculiar/asn1-csr@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ=="], - - "@peculiar/asn1-ecc": ["@peculiar/asn1-ecc@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw=="], - - "@peculiar/asn1-pfx": ["@peculiar/asn1-pfx@2.6.0", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.0", "@peculiar/asn1-pkcs8": "^2.6.0", "@peculiar/asn1-rsa": "^2.6.0", "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ=="], - - "@peculiar/asn1-pkcs8": ["@peculiar/asn1-pkcs8@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA=="], - - "@peculiar/asn1-pkcs9": ["@peculiar/asn1-pkcs9@2.6.0", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.0", "@peculiar/asn1-pfx": "^2.6.0", "@peculiar/asn1-pkcs8": "^2.6.0", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "@peculiar/asn1-x509-attr": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw=="], - - "@peculiar/asn1-rsa": ["@peculiar/asn1-rsa@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w=="], - - "@peculiar/asn1-schema": ["@peculiar/asn1-schema@2.6.0", "", { "dependencies": { "asn1js": "^3.0.6", "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg=="], - - "@peculiar/asn1-x509": ["@peculiar/asn1-x509@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "asn1js": "^3.0.6", "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA=="], - - "@peculiar/asn1-x509-attr": ["@peculiar/asn1-x509-attr@2.6.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA=="], - - "@peculiar/x509": ["@peculiar/x509@1.14.2", "", { "dependencies": { "@peculiar/asn1-cms": "^2.6.0", "@peculiar/asn1-csr": "^2.6.0", "@peculiar/asn1-ecc": "^2.6.0", "@peculiar/asn1-pkcs9": "^2.6.0", "@peculiar/asn1-rsa": "^2.6.0", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.0", "pvtsutils": "^1.3.6", "reflect-metadata": "^0.2.2", "tslib": "^2.8.1", "tsyringe": "^4.10.0" } }, "sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag=="], - - "@quansync/fs": ["@quansync/fs@0.1.5", "", { "dependencies": { "quansync": "^0.2.11" } }, "sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA=="], - - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-beta.44", "", { "os": "android", "cpu": "arm64" }, "sha512-g9ejDOehJFhxC1DIXQuZQ9bKv4lRDioOTL42cJjFjqKPl1L7DVb9QQQE1FxokGEIMr6FezLipxwnzOXWe7DNPg=="], - - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-beta.44", "", { "os": "darwin", "cpu": "arm64" }, "sha512-PxAW1PXLPmCzfhfKIS53kwpjLGTUdIfX4Ht+l9mj05C3lYCGaGowcNsYi2rdxWH24vSTmeK+ajDNRmmmrK0M7g=="], - - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-beta.44", "", { "os": "darwin", "cpu": "x64" }, "sha512-/CtQqs1oO9uSb5Ju60rZvsdjE7Pzn8EK2ISAdl2jedjMzeD/4neNyCbwyJOAPzU+GIQTZVyrFZJX+t7HXR1R/g=="], - - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-beta.44", "", { "os": "freebsd", "cpu": "x64" }, "sha512-V5Q5W9c4+2GJ4QabmjmVV6alY97zhC/MZBaLkDtHwGy3qwzbM4DYgXUbun/0a8AH5hGhuU27tUIlYz6ZBlvgOA=="], - - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.44", "", { "os": "linux", "cpu": "arm" }, "sha512-X6adjkHeFqKsTU0FXdNN9HY4LDozPqIfHcnXovE5RkYLWIjMWuc489mIZ6iyhrMbCqMUla9IOsh5dvXSGT9o9A=="], - - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-beta.44", "", { "os": "linux", "cpu": "arm64" }, "sha512-kRRKGZI4DXWa6ANFr3dLA85aSVkwPdgXaRjfanwY84tfc3LncDiIjyWCb042e3ckPzYhHSZ3LmisO+cdOIYL6Q=="], - - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-beta.44", "", { "os": "linux", "cpu": "arm64" }, "sha512-hMtiN9xX1NhxXBa2U3Up4XkVcsVp2h73yYtMDY59z9CDLEZLrik9RVLhBL5QtoX4zZKJ8HZKJtWuGYvtmkCbIQ=="], - - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-beta.44", "", { "os": "linux", "cpu": "x64" }, "sha512-rd1LzbpXQuR8MTG43JB9VyXDjG7ogSJbIkBpZEHJ8oMKzL6j47kQT5BpIXrg3b5UVygW9QCI2fpFdMocT5Kudg=="], - - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-beta.44", "", { "os": "linux", "cpu": "x64" }, "sha512-qI2IiPqmPRW25exXkuQr3TlweCDc05YvvbSDRPCuPsWkwb70dTiSoXn8iFxT4PWqTi71wWHg1Wyta9PlVhX5VA=="], - - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-beta.44", "", { "os": "none", "cpu": "arm64" }, "sha512-+vHvEc1pL5iJRFlldLC8mjm6P4Qciyfh2bh5ZI6yxDQKbYhCHRKNURaKz1mFcwxhVL5YMYsLyaqM3qizVif9MQ=="], - - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-beta.44", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.7" }, "cpu": "none" }, "sha512-XSgLxRrtFj6RpTeMYmmQDAwHjKseYGKUn5LPiIdW4Cq+f5SBSStL2ToBDxkbdxKPEbCZptnLPQ/nfKcAxrC8Xg=="], - - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-beta.44", "", { "os": "win32", "cpu": "arm64" }, "sha512-cF1LJdDIX02cJrFrX3wwQ6IzFM7I74BYeKFkzdcIA4QZ0+2WA7/NsKIgjvrunupepWb1Y6PFWdRlHSaz5AW1Wg=="], - - "@rolldown/binding-win32-ia32-msvc": ["@rolldown/binding-win32-ia32-msvc@1.0.0-beta.44", "", { "os": "win32", "cpu": "ia32" }, "sha512-5uaJonDafhHiMn+iEh7qUp3QQ4Gihv3lEOxKfN8Vwadpy0e+5o28DWI42DpJ9YBYMrVy4JOWJ/3etB/sptpUwA=="], - - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-beta.44", "", { "os": "win32", "cpu": "x64" }, "sha512-vsqhWAFJkkmgfBN/lkLCWTXF1PuPhMjfnAyru48KvF7mVh2+K7WkKYHezF3Fjz4X/mPScOcIv+g6cf6wnI6eWg=="], - - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.44", "", {}, "sha512-g6eW7Zwnr2c5RADIoqziHoVs6b3W5QTQ4+qbpfjbkMJ9x+8Og211VW/oot2dj9dVwaK/UyC6Yo+02gV+wWQVNg=="], - - "@simplewebauthn/browser": ["@simplewebauthn/browser@13.2.2", "", {}, "sha512-FNW1oLQpTJyqG5kkDg5ZsotvWgmBaC6jCHR7Ej0qUNep36Wl9tj2eZu7J5rP+uhXgHaLk+QQ3lqcw2vS5MX1IA=="], - - "@simplewebauthn/server": ["@simplewebauthn/server@13.2.2", "", { "dependencies": { "@hexagon/base64": "^1.1.27", "@levischuck/tiny-cbor": "^0.2.2", "@peculiar/asn1-android": "^2.3.10", "@peculiar/asn1-ecc": "^2.3.8", "@peculiar/asn1-rsa": "^2.3.8", "@peculiar/asn1-schema": "^2.3.8", "@peculiar/asn1-x509": "^2.3.8", "@peculiar/x509": "^1.13.0" } }, "sha512-HcWLW28yTMGXpwE9VLx9J+N2KEUaELadLrkPEEI9tpI5la70xNEVEsu/C+m3u7uoq4FulLqZQhgBCzR9IZhFpA=="], - - "@sinclair/typebox": ["@sinclair/typebox@0.34.41", "", {}, "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g=="], - - "@tokenizer/inflate": ["@tokenizer/inflate@0.4.1", "", { "dependencies": { "debug": "^4.4.3", "token-types": "^6.1.1" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="], - - "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], - - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], - - "@types/pg": ["@types/pg@8.15.6", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ=="], - - "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], - - "asn1js": ["asn1js@3.0.6", "", { "dependencies": { "pvtsutils": "^1.3.6", "pvutils": "^1.1.3", "tslib": "^2.8.1" } }, "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA=="], - - "ast-kit": ["ast-kit@2.2.0", "", { "dependencies": { "@babel/parser": "^7.28.5", "pathe": "^2.0.3" } }, "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw=="], - - "better-auth": ["better-auth@1.3.7", "", { "dependencies": { "@better-auth/utils": "0.2.6", "@better-fetch/fetch": "^1.1.18", "@noble/ciphers": "^0.6.0", "@noble/hashes": "^1.8.0", "@simplewebauthn/browser": "^13.1.2", "@simplewebauthn/server": "^13.1.2", "better-call": "^1.0.13", "defu": "^6.1.4", "jose": "^5.10.0", "kysely": "^0.28.5", "nanostores": "^0.11.4" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-/1fEyx2SGgJQM5ujozDCh9eJksnVkNU/J7Fk/tG5Y390l8nKbrPvqiFlCjlMM+scR+UABJbQzA6An7HT50LHyQ=="], - - "better-call": ["better-call@1.1.2", "", { "dependencies": { "@better-auth/utils": "^0.3.0", "@better-fetch/fetch": "^1.1.4", "rou3": "^0.5.1", "set-cookie-parser": "^2.7.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-7TOAl541WiXxNdMcmb/iAT26QVUkbCOWIRMemUN4EBlkfMw19E4LIPRUtQis2paKjrQ5pfqd6NLoHVk8Qn+THg=="], - - "birpc": ["birpc@2.8.0", "", {}, "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw=="], - - "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - - "bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], - - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], - - "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - - "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], - - "croner": ["croner@10.0.1", "", {}, "sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g=="], - - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - - "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], - - "diff": ["diff@8.0.2", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="], - - "drizzle-kit": ["drizzle-kit@0.31.7", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.25.4", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-hOzRGSdyKIU4FcTSFYGKdXEjFsncVwHZ43gY3WU5Bz9j5Iadp6Rh6hxLSQ1IWXpKLBKt/d5y1cpSPcV+FcoQ1A=="], - - "drizzle-orm": ["drizzle-orm@0.44.7", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ=="], - - "dts-resolver": ["dts-resolver@2.1.3", "", { "peerDependencies": { "oxc-resolver": ">=11.0.0" }, "optionalPeers": ["oxc-resolver"] }, "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw=="], - - "elysia": ["elysia@1.4.16", "", { "dependencies": { "cookie": "^1.0.2", "exact-mirror": "0.2.3", "fast-decode-uri-component": "^1.0.1", "memoirist": "^0.4.0" }, "peerDependencies": { "@sinclair/typebox": ">= 0.34.0 < 1", "@types/bun": ">= 1.2.0", "file-type": ">= 20.0.0", "openapi-types": ">= 12.0.0", "typescript": ">= 5.0.0" }, "optionalPeers": ["@types/bun", "typescript"] }, "sha512-KZtKN160/bdWVKg2hEgyoNXY8jRRquc+m6PboyisaLZL891I+Ufb7Ja6lDAD7vMQur8sLEWIcidZOzj5lWw9UA=="], - - "empathic": ["empathic@2.0.0", "", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="], - - "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - - "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], - - "exact-mirror": ["exact-mirror@0.2.3", "", { "peerDependencies": { "@sinclair/typebox": "^0.34.15" }, "optionalPeers": ["@sinclair/typebox"] }, "sha512-aLdARfO0W0ntufjDyytUJQMbNXoB9g+BbA8KcgIq4XOOTYRw48yUGON/Pr64iDrYNZKcKvKbqE0MPW56FF2BXA=="], - - "fast-decode-uri-component": ["fast-decode-uri-component@1.0.1", "", {}, "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="], - - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - - "file-type": ["file-type@21.1.1", "", { "dependencies": { "@tokenizer/inflate": "^0.4.1", "strtok3": "^10.3.4", "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" } }, "sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg=="], - - "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], - - "hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], - - "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - - "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], - - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - - "kysely": ["kysely@0.28.8", "", {}, "sha512-QUOgl5ZrS9IRuhq5FvOKFSsD/3+IA6MLE81/bOOTRA/YQpKDza2sFdN5g6JCB9BOpqMJDGefLCQ9F12hRS13TA=="], - - "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - - "memoirist": ["memoirist@0.4.0", "", {}, "sha512-zxTgA0mSYELa66DimuNQDvyLq36AwDlTuVRbnQtB+VuTcKWm5Qc4z3WkSpgsFWHNhexqkIooqpv4hdcqrX5Nmg=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "nanostores": ["nanostores@0.11.4", "", {}, "sha512-k1oiVNN4hDK8NcNERSZLQiMfRzEGtfnvZvdBvey3SQbgn8Dcrk0h1I6vpxApjb10PFUflZrgJ2WEZyJQ+5v7YQ=="], - - "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], - - "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "pg": ["pg@8.16.3", "", { "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw=="], - - "pg-cloudflare": ["pg-cloudflare@1.2.7", "", {}, "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg=="], - - "pg-connection-string": ["pg-connection-string@2.9.1", "", {}, "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w=="], - - "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], - - "pg-pool": ["pg-pool@3.10.1", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg=="], - - "pg-protocol": ["pg-protocol@1.10.3", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="], - - "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], - - "pgpass": ["pgpass@1.0.5", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="], - - "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - - "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], - - "postgres-bytea": ["postgres-bytea@1.0.0", "", {}, "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="], - - "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], - - "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], - - "pvtsutils": ["pvtsutils@1.3.6", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg=="], - - "pvutils": ["pvutils@1.1.5", "", {}, "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA=="], - - "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], - - "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], - - "reflect-metadata": ["reflect-metadata@0.2.2", "", {}, "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="], - - "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], - - "rolldown": ["rolldown@1.0.0-beta.44", "", { "dependencies": { "@oxc-project/types": "=0.95.0", "@rolldown/pluginutils": "1.0.0-beta.44" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.44", "@rolldown/binding-darwin-arm64": "1.0.0-beta.44", "@rolldown/binding-darwin-x64": "1.0.0-beta.44", "@rolldown/binding-freebsd-x64": "1.0.0-beta.44", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.44", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.44", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.44", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.44", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.44", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.44", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.44", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.44", "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.44", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.44" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-gcqgyCi3g93Fhr49PKvymE8PoaGS0sf6ajQrsYaQ8o5de6aUEbD6rJZiJbhOfpcqOnycgsAsUNPYri1h25NgsQ=="], - - "rolldown-plugin-dts": ["rolldown-plugin-dts@0.17.8", "", { "dependencies": { "@babel/generator": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "ast-kit": "^2.2.0", "birpc": "^2.8.0", "dts-resolver": "^2.1.3", "get-tsconfig": "^4.13.0", "magic-string": "^0.30.21", "obug": "^2.0.0" }, "peerDependencies": { "@ts-macro/tsc": "^0.3.6", "@typescript/native-preview": ">=7.0.0-dev.20250601.1", "rolldown": "^1.0.0-beta.44", "typescript": "^5.0.0", "vue-tsc": "~3.1.0" }, "optionalPeers": ["@ts-macro/tsc", "@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-76EEBlhF00yeY6M7VpMkWKI4r9WjuoMiOGey7j4D6zf3m0BR+ZrrY9hvSXdueJ3ljxSLq4DJBKFpX/X9+L7EKw=="], - - "rou3": ["rou3@0.5.1", "", {}, "sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ=="], - - "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - - "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], - - "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - - "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], - - "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], - - "strtok3": ["strtok3@10.3.4", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg=="], - - "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], - - "token-types": ["token-types@6.1.1", "", { "dependencies": { "@borewit/text-codec": "^0.1.0", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ=="], - - "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], - - "tsdown": ["tsdown@0.15.10", "", { "dependencies": { "ansis": "^4.2.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "debug": "^4.4.3", "diff": "^8.0.2", "empathic": "^2.0.0", "hookable": "^5.5.3", "rolldown": "1.0.0-beta.44", "rolldown-plugin-dts": "^0.17.1", "semver": "^7.7.3", "tinyexec": "^1.0.1", "tinyglobby": "^0.2.15", "tree-kill": "^1.2.2", "unconfig": "^7.3.3", "unrun": "^0.2.0" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "publint": "^0.3.0", "typescript": "^5.0.0", "unplugin-lightningcss": "^0.4.0", "unplugin-unused": "^0.5.0" }, "optionalPeers": ["@arethetypeswrong/core", "publint", "typescript", "unplugin-lightningcss", "unplugin-unused"], "bin": { "tsdown": "dist/run.mjs" } }, "sha512-8zbSN4GW7ZzhjIYl/rWrruGzl1cJiDtAjb8l5XVF2cVme1+aDLVcExw+Ph4gNcfdGg6ZfYPh5kmcpIfh5xHisw=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "tsyringe": ["tsyringe@4.10.0", "", { "dependencies": { "tslib": "^1.9.3" } }, "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw=="], - - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - - "uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="], - - "unconfig": ["unconfig@7.4.1", "", { "dependencies": { "@quansync/fs": "^0.1.5", "defu": "^6.1.4", "jiti": "^2.6.1", "quansync": "^0.2.11", "unconfig-core": "7.4.1" } }, "sha512-uyQ7LElcGizrOGZyIq9KU+xkuEjcRf9IpmDTkCSYv5mEeZzrXSj6rb51C0L+WTedsmAoVxW9WKrLWhSwebIM9Q=="], - - "unconfig-core": ["unconfig-core@7.4.1", "", { "dependencies": { "@quansync/fs": "^0.1.5", "quansync": "^0.2.11" } }, "sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA=="], - - "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], - - "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - - "unrun": ["unrun@0.2.12", "", { "dependencies": { "@oxc-project/runtime": "^0.99.0", "rolldown": "1.0.0-beta.52" }, "peerDependencies": { "synckit": "^0.11.11" }, "optionalPeers": ["synckit"], "bin": { "unrun": "dist/cli.mjs" } }, "sha512-wZzOr2/lao1hrjbqMveBXuent9WlG2m7NjkrnS/98oGmBRc0EHF+dlUf6ckePA2S50ipeoucIGDW44ea9WnJmg=="], - - "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], - - "zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], - - "@elysiajs/cron/croner": ["croner@6.0.7", "", {}, "sha512-k3Xx3Rcclfr60Yx4TmvsF3Yscuiql8LSvYLaphTsaq5Hk8La4Z/udmUANMOTKpgGGroI2F6/XOr9cU9OFkYluQ=="], - - "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], - - "better-call/@better-auth/utils": ["@better-auth/utils@0.3.0", "", {}, "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw=="], - - "tsdown/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - - "tsyringe/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "unrun/rolldown": ["rolldown@1.0.0-beta.52", "", { "dependencies": { "@oxc-project/types": "=0.99.0", "@rolldown/pluginutils": "1.0.0-beta.52" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-beta.52", "@rolldown/binding-darwin-arm64": "1.0.0-beta.52", "@rolldown/binding-darwin-x64": "1.0.0-beta.52", "@rolldown/binding-freebsd-x64": "1.0.0-beta.52", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.52", "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.52", "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.52", "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.52", "@rolldown/binding-linux-x64-musl": "1.0.0-beta.52", "@rolldown/binding-openharmony-arm64": "1.0.0-beta.52", "@rolldown/binding-wasm32-wasi": "1.0.0-beta.52", "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.52", "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.52", "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.52" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-Hbnpljue+JhMJrlOjQ1ixp9me7sUec7OjFvS+A1Qm8k8Xyxmw3ZhxFu7LlSXW1s9AX3POE9W9o2oqCEeR5uDmg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.18.20", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.20", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.20", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.20", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.20", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.20", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.20", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.20", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.20", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.20", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.20", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.20", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="], - - "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], - - "tsdown/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - - "unrun/rolldown/@oxc-project/types": ["@oxc-project/types@0.99.0", "", {}, "sha512-LLDEhXB7g1m5J+woRSgfKsFPS3LhR9xRhTeIoEBm5WrkwMxn6eZ0Ld0c0K5eHB57ChZX6I3uSmmLjZ8pcjlRcw=="], - - "unrun/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-beta.52", "", { "os": "android", "cpu": "arm64" }, "sha512-MBGIgysimZPqTDcLXI+i9VveijkP5C3EAncEogXhqfax6YXj1Tr2LY3DVuEOMIjWfMPMhtQSPup4fSTAmgjqIw=="], - - "unrun/rolldown/@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-beta.52", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MmKeoLnKu1d9j6r19K8B+prJnIZ7u+zQ+zGQ3YHXGnr41rzE3eqQLovlkvoZnRoxDGPA4ps0pGiwXy6YE3lJyg=="], - - "unrun/rolldown/@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-beta.52", "", { "os": "darwin", "cpu": "x64" }, "sha512-qpHedvQBmIjT8zdnjN3nWPR2qjQyJttbXniCEKKdHeAbZG9HyNPBUzQF7AZZGwmS9coQKL+hWg9FhWzh2dZ2IA=="], - - "unrun/rolldown/@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-beta.52", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDp7WbPapj/NVW0LSiH/CLwMhmLwwKb3R7mh2kWX+QW85X1DGVnIEyKh9PmNJjB/+suG1dJygdtdNPVXK1hylg=="], - - "unrun/rolldown/@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.52", "", { "os": "linux", "cpu": "arm" }, "sha512-9e4l6vy5qNSliDPqNfR6CkBOAx6PH7iDV4OJiEJzajajGrVy8gc/IKKJUsoE52G8ud8MX6r3PMl97NfwgOzB7g=="], - - "unrun/rolldown/@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-beta.52", "", { "os": "linux", "cpu": "arm64" }, "sha512-V48oDR84feRU2KRuzpALp594Uqlx27+zFsT6+BgTcXOtu7dWy350J1G28ydoCwKB+oxwsRPx2e7aeQnmd3YJbQ=="], - - "unrun/rolldown/@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-beta.52", "", { "os": "linux", "cpu": "arm64" }, "sha512-ENLmSQCWqSA/+YN45V2FqTIemg7QspaiTjlm327eUAMeOLdqmSOVVyrQexJGNTQ5M8sDYCgVAig2Kk01Ggmqaw=="], - - "unrun/rolldown/@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-beta.52", "", { "os": "linux", "cpu": "x64" }, "sha512-klahlb2EIFltSUubn/VLjuc3qxp1E7th8ukayPfdkcKvvYcQ5rJztgx8JsJSuAKVzKtNTqUGOhy4On71BuyV8g=="], - - "unrun/rolldown/@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-beta.52", "", { "os": "linux", "cpu": "x64" }, "sha512-UuA+JqQIgqtkgGN2c/AQ5wi8M6mJHrahz/wciENPTeI6zEIbbLGoth5XN+sQe2pJDejEVofN9aOAp0kaazwnVg=="], - - "unrun/rolldown/@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-beta.52", "", { "os": "none", "cpu": "arm64" }, "sha512-1BNQW8u4ro8bsN1+tgKENJiqmvc+WfuaUhXzMImOVSMw28pkBKdfZtX2qJPADV3terx+vNJtlsgSGeb3+W6Jiw=="], - - "unrun/rolldown/@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-beta.52", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.7" }, "cpu": "none" }, "sha512-K/p7clhCqJOQpXGykrFaBX2Dp9AUVIDHGc+PtFGBwg7V+mvBTv/tsm3LC3aUmH02H2y3gz4y+nUTQ0MLpofEEg=="], - - "unrun/rolldown/@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-beta.52", "", { "os": "win32", "cpu": "arm64" }, "sha512-a4EkXBtnYYsKipjS7QOhEBM4bU5IlR9N1hU+JcVEVeuTiaslIyhWVKsvf7K2YkQHyVAJ+7/A9BtrGqORFcTgng=="], - - "unrun/rolldown/@rolldown/binding-win32-ia32-msvc": ["@rolldown/binding-win32-ia32-msvc@1.0.0-beta.52", "", { "os": "win32", "cpu": "ia32" }, "sha512-5ZXcYyd4GxPA6QfbGrNcQjmjbuLGvfz6728pZMsQvGHI+06LT06M6TPtXvFvLgXtexc+OqvFe1yAIXJU1gob/w=="], - - "unrun/rolldown/@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-beta.52", "", { "os": "win32", "cpu": "x64" }, "sha512-tzpnRQXJrSzb8Z9sm97UD3cY0toKOImx+xRKsDLX4zHaAlRXWh7jbaKBePJXEN7gNw7Nm03PBNwphdtA8KSUYQ=="], - - "unrun/rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.52", "", {}, "sha512-/L0htLJZbaZFL1g9OHOblTxbCYIGefErJjtYOwgl9ZqNx27P3L0SDfjhhHIss32gu5NWgnxuT2a2Hnnv6QGHKA=="], - } -} diff --git a/apps/backend/drizzle.config.ts b/apps/backend/drizzle.config.ts deleted file mode 100644 index b237dfe..0000000 --- a/apps/backend/drizzle.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'drizzle-kit' - -export default defineConfig({ - schema: './lib/db/schema.ts', - dialect: 'postgresql', - dbCredentials: { - url: process.env.DATABASE_URL as string, - }, - migrations: { - prefix: 'timestamp', - }, -}) diff --git a/apps/backend/drizzle/20260319164154_huge_hammerhead/migration.sql b/apps/backend/drizzle/20260319164154_huge_hammerhead/migration.sql deleted file mode 100644 index 6eccabf..0000000 --- a/apps/backend/drizzle/20260319164154_huge_hammerhead/migration.sql +++ /dev/null @@ -1,53 +0,0 @@ -CREATE TABLE "account" ( - "id" text PRIMARY KEY, - "account_id" text NOT NULL, - "provider_id" text NOT NULL, - "user_id" text NOT NULL, - "access_token" text, - "refresh_token" text, - "id_token" text, - "access_token_expires_at" timestamp, - "refresh_token_expires_at" timestamp, - "scope" text, - "password" text, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp NOT NULL -); ---> statement-breakpoint -CREATE TABLE "session" ( - "id" text PRIMARY KEY, - "expires_at" timestamp NOT NULL, - "token" text NOT NULL, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp NOT NULL, - "ip_address" text, - "user_agent" text, - "user_id" text NOT NULL -); ---> statement-breakpoint -CREATE TABLE "user" ( - "id" text PRIMARY KEY, - "name" text NOT NULL, - "email" text NOT NULL UNIQUE, - "email_verified" boolean DEFAULT false NOT NULL, - "image" text, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp DEFAULT now() NOT NULL, - "username" text UNIQUE, - "display_username" text -); ---> statement-breakpoint -CREATE TABLE "verification" ( - "id" text PRIMARY KEY, - "identifier" text NOT NULL, - "value" text NOT NULL, - "expires_at" timestamp NOT NULL, - "created_at" timestamp DEFAULT now() NOT NULL, - "updated_at" timestamp DEFAULT now() NOT NULL -); ---> statement-breakpoint -CREATE INDEX "account_userId_idx" ON "account" ("user_id");--> statement-breakpoint -CREATE INDEX "session_userId_idx" ON "session" ("user_id");--> statement-breakpoint -CREATE INDEX "verification_identifier_idx" ON "verification" ("identifier");--> statement-breakpoint -ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE;--> statement-breakpoint -ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "user"("id") ON DELETE CASCADE; \ No newline at end of file diff --git a/apps/backend/drizzle/20260319164154_huge_hammerhead/snapshot.json b/apps/backend/drizzle/20260319164154_huge_hammerhead/snapshot.json deleted file mode 100644 index 105bfba..0000000 --- a/apps/backend/drizzle/20260319164154_huge_hammerhead/snapshot.json +++ /dev/null @@ -1,662 +0,0 @@ -{ - "version": "8", - "dialect": "postgres", - "id": "89969e62-dad8-4442-b9d7-bbee509f51b4", - "prevIds": [ - "00000000-0000-0000-0000-000000000000" - ], - "ddl": [ - { - "isRlsEnabled": false, - "name": "account", - "entityType": "tables", - "schema": "public" - }, - { - "isRlsEnabled": false, - "name": "session", - "entityType": "tables", - "schema": "public" - }, - { - "isRlsEnabled": false, - "name": "user", - "entityType": "tables", - "schema": "public" - }, - { - "isRlsEnabled": false, - "name": "verification", - "entityType": "tables", - "schema": "public" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "id", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "account_id", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "provider_id", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "user_id", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "access_token", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "refresh_token", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "id_token", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "access_token_expires_at", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "refresh_token_expires_at", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "scope", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "password", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "created_at", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "updated_at", - "entityType": "columns", - "schema": "public", - "table": "account" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "id", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "expires_at", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "token", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "created_at", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "updated_at", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "ip_address", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "user_agent", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "user_id", - "entityType": "columns", - "schema": "public", - "table": "session" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "id", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "name", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "email", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "boolean", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "false", - "generated": null, - "identity": null, - "name": "email_verified", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "image", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "created_at", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "updated_at", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "username", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": false, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "display_username", - "entityType": "columns", - "schema": "public", - "table": "user" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "id", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "identifier", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "type": "text", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "value", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": null, - "generated": null, - "identity": null, - "name": "expires_at", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "created_at", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "type": "timestamp", - "typeSchema": null, - "notNull": true, - "dimensions": 0, - "default": "now()", - "generated": null, - "identity": null, - "name": "updated_at", - "entityType": "columns", - "schema": "public", - "table": "verification" - }, - { - "nameExplicit": true, - "columns": [ - { - "value": "user_id", - "isExpression": false, - "asc": true, - "nullsFirst": false, - "opclass": null - } - ], - "isUnique": false, - "where": null, - "with": "", - "method": "btree", - "concurrently": false, - "name": "account_userId_idx", - "entityType": "indexes", - "schema": "public", - "table": "account" - }, - { - "nameExplicit": true, - "columns": [ - { - "value": "user_id", - "isExpression": false, - "asc": true, - "nullsFirst": false, - "opclass": null - } - ], - "isUnique": false, - "where": null, - "with": "", - "method": "btree", - "concurrently": false, - "name": "session_userId_idx", - "entityType": "indexes", - "schema": "public", - "table": "session" - }, - { - "nameExplicit": true, - "columns": [ - { - "value": "identifier", - "isExpression": false, - "asc": true, - "nullsFirst": false, - "opclass": null - } - ], - "isUnique": false, - "where": null, - "with": "", - "method": "btree", - "concurrently": false, - "name": "verification_identifier_idx", - "entityType": "indexes", - "schema": "public", - "table": "verification" - }, - { - "nameExplicit": false, - "columns": [ - "user_id" - ], - "schemaTo": "public", - "tableTo": "user", - "columnsTo": [ - "id" - ], - "onUpdate": "NO ACTION", - "onDelete": "CASCADE", - "name": "account_user_id_user_id_fkey", - "entityType": "fks", - "schema": "public", - "table": "account" - }, - { - "nameExplicit": false, - "columns": [ - "user_id" - ], - "schemaTo": "public", - "tableTo": "user", - "columnsTo": [ - "id" - ], - "onUpdate": "NO ACTION", - "onDelete": "CASCADE", - "name": "session_user_id_user_id_fkey", - "entityType": "fks", - "schema": "public", - "table": "session" - }, - { - "columns": [ - "id" - ], - "nameExplicit": false, - "name": "account_pkey", - "schema": "public", - "table": "account", - "entityType": "pks" - }, - { - "columns": [ - "id" - ], - "nameExplicit": false, - "name": "session_pkey", - "schema": "public", - "table": "session", - "entityType": "pks" - }, - { - "columns": [ - "id" - ], - "nameExplicit": false, - "name": "user_pkey", - "schema": "public", - "table": "user", - "entityType": "pks" - }, - { - "columns": [ - "id" - ], - "nameExplicit": false, - "name": "verification_pkey", - "schema": "public", - "table": "verification", - "entityType": "pks" - }, - { - "nameExplicit": false, - "columns": [ - "email" - ], - "nullsNotDistinct": false, - "name": "user_email_key", - "schema": "public", - "table": "user", - "entityType": "uniques" - }, - { - "nameExplicit": false, - "columns": [ - "username" - ], - "nullsNotDistinct": false, - "name": "user_username_key", - "schema": "public", - "table": "user", - "entityType": "uniques" - } - ], - "renames": [] -} \ No newline at end of file diff --git a/apps/backend/file-router/build.ts b/apps/backend/file-router/build.ts deleted file mode 100644 index f0a078d..0000000 --- a/apps/backend/file-router/build.ts +++ /dev/null @@ -1,96 +0,0 @@ -import fs from 'node:fs' -import { BunPlugin } from 'bun' -import path from 'node:path' - -export function globSync( - globPattern: string, - globOptions: { cwd?: string }, -) { - return Array.from(new Bun.Glob(globPattern).scanSync(globOptions)) -} - -const fsUsageMock = /* ts */ `{ - default: { - existsSync() { - return true; - }, - statSync() { - return { - isDirectory() { - return true; - } - } - } - } -}` - -const fileSourcesString = (files: string[], directory: string) => ` - const fileSources = { - ${files - .map( - (file) => /* ts */ ` - "${file.replaceAll('\\', '/')}": await import("${path - .resolve(directory, file) - .replace(/\\/gi, '\\\\')}"),`, - ) - .join('\n')} - } -` - -const filerouter = () => { - return { - name: 'file-router', - setup: (build) => { - const directory = './src/routes' - - build.onLoad( - { filter: /(.*)file-router(\/|\\)(.*).(ts)/i }, - async (args) => { - const pattern = '**/*.{ts,tsx,js,jsx,mjs,cjs}' - let content = String(await fs.promises.readFile(args.path)) - - const files = globSync(pattern, { cwd: directory }) - - content = content.replace('watch()', '') - content = content.replace( - 'delete require.cache[require.resolve(pathToFileURL(fullPath).href)]', - '', - ) - - content = content.replace( - 'const files = globSync(globPattern, globOptions)', - /* ts */ `const files = [${files - .map((file) => `"${file.replaceAll('\\', '/')}"`) - .join(',')}];`, - ) - - content = content.replace( - `import fs from 'node:fs'`, - `var { default: fs} = ${fsUsageMock}`, - ) - - content = content.replace( - '// insert imports', - fileSourcesString(files, directory), - ) - - content = content.replace( - /const file = (.*)/i, - 'const file = fileSources[filepath]', - ) - - return { contents: content } - }, - ) - }, - } satisfies BunPlugin -} - -await Bun.build({ - entrypoints: ['file-router/index.ts'], - target: 'bun', - outdir: 'build', - sourcemap: true, - plugins: [filerouter()], - compile: true, -}).then(console.log) diff --git a/apps/backend/file-router/hooks/on-file-create.ts b/apps/backend/file-router/hooks/on-file-create.ts deleted file mode 100644 index dcca381..0000000 --- a/apps/backend/file-router/hooks/on-file-create.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { getParamsFromFilePath } from '../utils/get-params-from-file-path' -import { transformToUrl } from '../utils/transform-to-url' - -type Stats = { - isFile(): boolean - isDirectory(): boolean - isBlockDevice(): boolean - isCharacterDevice(): boolean - isSymbolicLink(): boolean - isFIFO(): boolean - isSocket(): boolean - dev: number - ino: number - mode: number - nlink: number - uid: number - gid: number - rdev: number - size: number - blksize: number - blocks: number - atimeMs: number - mtimeMs: number - ctimeMs: number - birthtimeMs: number - atime: Date - mtime: Date - ctime: Date - birthtime: Date -} - -const generateTemplate = ({ params }: { params?: string }) => { - let config = '' - if (params) { - config += `{ params: ${params} }` - } - - if (config.length > 0) { - config = ',' + config - } - - return `import Elysia from 'elysia' -import { betterAuth } from '$lib/plugin/better-auth' - -export const route = new Elysia() - .use(betterAuth) - .get('/', async () => { - return 'hello' - }${config}) -` -} - -export const onFileCreate = async (path: string, stats?: Stats) => { - const file = Bun.file(path) - - const params = getParamsFromFilePath(path) - - const paramsTemplate = getParamsTemplate(params) - - let template: string - - template = generateTemplate({ params: paramsTemplate }) - - if ((await file.text()) === '') { - await file.write(template) - - console.log(await Bun.$`bunx prettier --write ${path}`) - } -} - -const getParamsTemplate = (params: string[]) => { - let result = '' - - if (params.length > 0) { - result += `t.Object({` - - params.map((param) => { - result += `"${param}": t.String(),` - }) - - result += `})` - } - - return result -} diff --git a/apps/backend/file-router/index.ts b/apps/backend/file-router/index.ts deleted file mode 100644 index 308bddd..0000000 --- a/apps/backend/file-router/index.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { createApp } from '$routes/index' -import { Elysia } from 'elysia' -import path from 'node:path' -import readline from 'node:readline' -import { pathToFileURL } from 'bun' -import chokidar from 'chokidar' -import { Cron } from 'croner' -import { onFileCreate } from './hooks/on-file-create' -import { transformToUrl } from './utils/transform-to-url' - -export function addRelativeIfNotDot(path: string) { - if (path.charAt(0) !== '.') return `./${path}` - - return path -} - -export function globSync( - globPattern: string, - globOptions: { cwd?: string }, -) { - return Array.from(new Bun.Glob(globPattern).scanSync(globOptions)) -} - -export function getPath(dir: string) { - if (path.isAbsolute(dir)) return dir - if (path.isAbsolute(process.argv[1])) - return path.join(process.argv[1], '..', dir) - - return path.join(process.cwd(), process.argv[1], '..', dir) -} - -const fileRouter = async () => { - const directoryPath = getPath('../src/routes') - - const globPattern = '**/*.{ts,tsx,js,jsx,mjs,cjs}' - const globOptions = { cwd: directoryPath } - - const files = globSync(globPattern, globOptions) - - const plugin = new Elysia({ name: 'file-router' }) - - // insert imports - - const paths: [path: string, exportName: string][] = [] - - for (const filepath of files) { - const fullPath = path.join(directoryPath, filepath) - const file = await import(pathToFileURL(fullPath).href) - - // prettier-ignore - delete require.cache[require.resolve(pathToFileURL(fullPath).href)] - - const url = transformToUrl(filepath) - - if (!file['route']) continue - - const importedValue = file['route'] - - plugin.group(url, {}, (app) => app.use(importedValue)) - - paths.push([fullPath.replace(directoryPath, ''), 'route']) - } - - const outputAbsolutePath = './src/route-types.ts' - - const imports: string[] = paths.map( - ([filePath, exportName], index) => { - const importPath = filePath.replace(/\.(ts|tsx)$/, '') - - return `import type ${ - exportName === 'default' - ? `Route${index}` - : `{ ${exportName} as Route${index} }` - } from "${addRelativeIfNotDot( - path - .relative( - path.dirname(outputAbsolutePath), - path.join(directoryPath, importPath), - ) - .replaceAll('\\', '/'), - )}";` - }, - ) - - const input = [ - `import type { ElysiaWithBaseUrl } from "../file-router/types.ts";`, - imports.join('\n'), - '', - `export type Route = ${paths - .map( - ([x], index) => - `ElysiaWithBaseUrl<"${ - transformToUrl(x) || '/' - }", typeof Route${index}>`, - ) - .join('\n\t\t\t& ')}`, - ].join('\n') - - await Bun.file(outputAbsolutePath).write(input) - - return plugin -} - -function clearScreen() { - const repeatCount = process.stdout.rows - 2 - const blank = repeatCount > 0 ? '\n'.repeat(repeatCount) : '' - console.log(blank) - readline.cursorTo(process.stdout, 0, 0) - readline.clearScreenDown(process.stdout) -} - -let app = createApp() -app.use(await fileRouter()) - -const server = Bun.serve({ - fetch: app.fetch, - port: Bun.env.PORT ?? 3000, -}) - -const reloadServer = async () => { - if ('cron' in app.store) { - // @ts-ignore - const cron = app.store.cron as Record - for (const [key, value] of Object.entries(cron)) { - // @ts-ignore - app.store.cron[key].stop() - } - } - app = createApp() - app.use(await fileRouter()) - - server.reload({ fetch: app.fetch }) - - clearScreen() - console.log( - `🦊 Elysia is running at http://${server.hostname}:${server.port}`, - ) -} - -const watch = () => { - chokidar - .watch('./src/routes', { persistent: true }) - .on('all', async (event, path) => { - console.log(event, path) - - for (const path of Object.keys(require.cache)) { - delete require.cache[path] - } - - try { - await reloadServer() - } catch (error) { - console.error(error) - } - }) - .on('add', async (path, stats) => { - console.log(path, stats) - - try { - await onFileCreate(path, stats) - } catch (error) { - console.error(error) - } - }) - - chokidar - .watch('./lib', { persistent: true }) - .on('all', async (event, path) => { - console.log(event, path) - - for (const path of Object.keys(require.cache)) { - delete require.cache[path] - } - - try { - await reloadServer() - } catch (error) { - console.error(error) - } - }) -} - -watch() diff --git a/apps/backend/file-router/types.ts b/apps/backend/file-router/types.ts deleted file mode 100644 index 4615707..0000000 --- a/apps/backend/file-router/types.ts +++ /dev/null @@ -1,65 +0,0 @@ -import type Elysia from 'elysia' -import type { AnyElysia, RouteBase, RouteSchema } from 'elysia' - -type PathToObject< - Path extends string, - Type extends RouteBase, -> = Path extends `${infer Head}/${infer Rest}` - ? Head extends '' - ? PathToObject - : { [K in Head]: PathToObject } - : { [K in Path]: Type } - -namespace ElysiaMatch { - export type RouteEnd = Record - - // biome-ignore lint/suspicious/noExplicitAny: - export type Fx = (...args: any[]) => AnyElysia - export type All = AnyElysia | Fx - - export type Extract = T extends Fx - ? ReturnType - : T -} - -type FlattenIndexRoutes = T extends object - ? { - [K in keyof T as K extends 'index' - ? T[K] extends ElysiaMatch.RouteEnd - ? never - : K - : K]: FlattenIndexRoutes - } & (T extends { index: infer I } - ? I extends ElysiaMatch.RouteEnd - ? FlattenIndexRoutes - : T - : T) - : T - -export type ElysiaWithBaseUrl< - BaseUrl extends string, - ElysiaType extends ElysiaMatch.All, -> = - ElysiaMatch.Extract extends Elysia< - infer BasePath, - // infer Scoped, - infer Singleton, - infer Definitions, - infer Metadata, - infer Routes, - infer Ephemeral, - infer Volatile - > - ? Elysia< - BasePath, - // Scoped, - Singleton, - Definitions, - Metadata, - FlattenIndexRoutes>, - Ephemeral, - Volatile - > - : never - -export type SoftString = T | (string & {}) diff --git a/apps/backend/file-router/utils/get-params-from-file-path.ts b/apps/backend/file-router/utils/get-params-from-file-path.ts deleted file mode 100644 index 8eb1a98..0000000 --- a/apps/backend/file-router/utils/get-params-from-file-path.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const getParamsFromFilePath = (path: string) => { - const params = path.match(/\[(.*?)\]/gu) || [] - return params.map((param) => { - return param.replaceAll( - /\[(.*?)\]/gu, - (_: string, match: string) => `${match}`, - ) - }) -} diff --git a/apps/backend/file-router/utils/transform-to-url.ts b/apps/backend/file-router/utils/transform-to-url.ts deleted file mode 100644 index e28a72f..0000000 --- a/apps/backend/file-router/utils/transform-to-url.ts +++ /dev/null @@ -1,30 +0,0 @@ -// https://github.com/wobsoriano/elysia-autoroutes/blob/main/src/utils/transformPathToUrl.ts#L4C31-L4C31 -export function transformToUrl(path: string) { - return ( - path - // Clean the url extensions - .replace(/\.(ts|tsx|js|jsx|mjs|cjs)$/u, '') - // Fix windows slashes - .replaceAll('\\', '/') - // Handle wild card based routes - users/[...id]/profile.ts -> users/*/profile - .replaceAll(/\[\.\.\..*\]/gu, '*') - // Handle generic square bracket based routes - users/[id]/index.ts -> users/:id - .replaceAll( - /\[(.*?)\]/gu, - (_: string, match: string) => `:${match}`, - ) - .replace(/\/?\((.*)\)/, '') - // Handle the case when multiple parameters are present in one file - // users / [id] - [name].ts to users /: id -:name and users / [id] - [name] / [age].ts to users /: id -: name /: age - .replaceAll(']-[', '-:') - .replaceAll(']/', '/') - .replaceAll(/\[|\]/gu, '') - // remove potential route methods in file name - .replace( - /(\.(?connect|delete|get|head|options|patch|post|put|trace))?(\.(?dev|prod|prerender))?$/, - '', - ) - // remove index from end of path - .replace(/\/?index$/, '') - ) -} diff --git a/apps/backend/lib/api-client.ts b/apps/backend/lib/api-client.ts deleted file mode 100644 index 0c74f84..0000000 --- a/apps/backend/lib/api-client.ts +++ /dev/null @@ -1,15 +0,0 @@ -// client.ts -import { treaty } from '@elysiajs/eden' -import { Route } from '$routes/route-types' - -export type Client = ReturnType> - -export const makeClient = (url: string): Client => { - const client = treaty(url, { - fetch: { - credentials: 'include', - }, - }) - - return client -} diff --git a/apps/backend/lib/auth.ts b/apps/backend/lib/auth.ts deleted file mode 100644 index 6b39f81..0000000 --- a/apps/backend/lib/auth.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { betterAuth } from 'better-auth' -import { drizzleAdapter } from '@better-auth/drizzle-adapter' -import { db } from './db' -import * as schema from './db/schema' -import { openAPI, username } from 'better-auth/plugins' - -export const auth = betterAuth({ - // baseURL: Bun.env.API_URL, - // trustedOrigins: [Bun.env.APP_URL!], - basePath: '/auth', - // secret: Bun.env.BETTER_AUTH_SECRET, - database: drizzleAdapter(db, { - provider: 'pg', - schema: schema, - }), - emailAndPassword: { - enabled: true, - disableSignUp: false, - }, - socialProviders: { - // google: { - // prompt: 'select_account consent', - // enabled: - // !!Bun.env.GOOGLE_OAUTH_CLIENT_ID && - // !!Bun.env.GOOGLE_OAUTH_CLIENT_SECRET, - // clientId: Bun.env.GOOGLE_OAUTH_CLIENT_ID!, - // clientSecret: Bun.env.GOOGLE_OAUTH_CLIENT_SECRET!, - // scope: [ - // 'https://www.googleapis.com/auth/userinfo.profile', - // 'https://www.googleapis.com/auth/userinfo.email', - // ], - // }, - }, - user: { - changeEmail: { - enabled: true, - }, - deleteUser: { - enabled: true, - }, - }, - telemetry: { - enabled: false, - }, - plugins: [username(), openAPI()], -}) diff --git a/apps/backend/lib/db/index.ts b/apps/backend/lib/db/index.ts deleted file mode 100644 index 5425bc1..0000000 --- a/apps/backend/lib/db/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { drizzle } from 'drizzle-orm/node-postgres' -import { relations } from './relations' -import * as pg from 'pg' - -const { Pool } = pg - -const pool = new Pool({ - // connectionString: Bun.env.DATABASE_URL, -}) - -export const db = drizzle({ client: pool, relations: relations }) diff --git a/apps/backend/lib/db/relations.ts b/apps/backend/lib/db/relations.ts deleted file mode 100644 index 9a79820..0000000 --- a/apps/backend/lib/db/relations.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineRelations } from 'drizzle-orm' -import * as schema from './schema' - -export const relations = defineRelations(schema, (r) => ({ - account: { - user: r.one.user({ - from: r.account.userId, - to: r.user.id, - }), - }, - user: { - accounts: r.many.account(), - sessions: r.many.session(), - }, - session: { - user: r.one.user({ - from: r.session.userId, - to: r.user.id, - }), - }, -})) diff --git a/apps/backend/lib/db/schema.ts b/apps/backend/lib/db/schema.ts deleted file mode 100644 index 4afc33c..0000000 --- a/apps/backend/lib/db/schema.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - pgTable, - text, - timestamp, - boolean, - index, -} from 'drizzle-orm/pg-core' - -export const user = pgTable('user', { - id: text().primaryKey(), - name: text().notNull(), - email: text().notNull().unique(), - emailVerified: boolean('email_verified').default(false).notNull(), - image: text(), - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at') - .defaultNow() - .$onUpdate(() => /* @__PURE__ */ new Date()) - .notNull(), - username: text().unique(), - displayUsername: text('display_username'), -}) - -export const session = pgTable( - 'session', - { - id: text().primaryKey(), - expiresAt: timestamp('expires_at').notNull(), - token: text().notNull(), - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at') - .$onUpdate(() => /* @__PURE__ */ new Date()) - .notNull(), - ipAddress: text('ip_address'), - userAgent: text('user_agent'), - userId: text('user_id') - .notNull() - .references(() => user.id, { onDelete: 'cascade' }), - }, - (table) => [index('session_userId_idx').on(table.userId)], -) - -export const account = pgTable( - 'account', - { - id: text().primaryKey(), - accountId: text('account_id').notNull(), - providerId: text('provider_id').notNull(), - userId: text('user_id') - .notNull() - .references(() => user.id, { onDelete: 'cascade' }), - accessToken: text('access_token'), - refreshToken: text('refresh_token'), - idToken: text('id_token'), - accessTokenExpiresAt: timestamp('access_token_expires_at'), - refreshTokenExpiresAt: timestamp('refresh_token_expires_at'), - scope: text(), - password: text(), - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').notNull(), - }, - (table) => [index('account_userId_idx').on(table.userId)], -) - -export const verification = pgTable( - 'verification', - { - id: text().primaryKey(), - identifier: text().notNull(), - value: text().notNull(), - expiresAt: timestamp('expires_at').notNull(), - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at') - .defaultNow() - .$onUpdate(() => /* @__PURE__ */ new Date()) - .notNull(), - }, - (table) => [ - index('verification_identifier_idx').on(table.identifier), - ], -) diff --git a/apps/backend/lib/logger.ts b/apps/backend/lib/logger.ts deleted file mode 100644 index 7f2c049..0000000 --- a/apps/backend/lib/logger.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { - Elysia, - ElysiaCustomStatusResponse, - InvertedStatusMap, -} from 'elysia' - -const colorStatus = (status?: number | string) => { - if (!status) return status - - if (typeof status === 'string') return status - // const colorEnabled = await getColorEnabledAsync() - switch ((status / 100) | 0) { - case 5: // red = error - return `\x1b[31m${status}\x1b[0m` - case 4: // yellow = warning - return `\x1b[33m${status}\x1b[0m` - case 3: // cyan = redirect - return `\x1b[36m${status}\x1b[0m` - case 2: // green = success - return `\x1b[32m${status}\x1b[0m` - } - // Fallback to unsupported status code. - // E.g.) Bun and Deno supports new Response with 101, but Node.js does not. - // And those may evolve to accept more status. - return `${status}` -} - -const colorTime = (time: number, output: string) => { - if (time <= 100) { - return `\x1b[32m${output}\x1b[0m` - } else if (time <= 300) { - return `\x1b[33m${output}\x1b[0m` - } else { - return `\x1b[31m${output}\x1b[0m` - } -} - -const humanize = (times: string[]) => { - const [delimiter, separator] = [',', '.'] - - const orderTimes = times.map((v) => - v.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + delimiter), - ) - - return orderTimes.join(separator) -} - -const time = (start: number) => { - const delta = Date.now() - start - return colorTime( - delta, - humanize([ - delta < 1000 ? delta + 'ms' : Math.round(delta / 1000) + 's', - ]), - ) -} - -export const logger = ({ - methods = ['GET', 'PUT', 'POST', 'DELETE'], -} = {}) => - new Elysia() - .derive({ as: 'global' }, () => ({ start: Date.now() })) - .onBeforeHandle({ as: 'global' }, (ctx) => { - if (!methods.includes(ctx.request.method)) return - console.log('-->', ctx.request.method, ctx.path) - }) - .onAfterHandle({ as: 'global' }, (ctx) => { - if (!methods.includes(ctx.request.method)) return - const response = - ctx.responseValue as ElysiaCustomStatusResponse< - keyof InvertedStatusMap, - any - > - console.log( - '<--', - ctx.request.method, - ctx.path, - colorStatus(response?.code || ctx.set.status), - `(${time(ctx.start)})`, - ) - }) - .onError({ as: 'global' }, (ctx) => { - if (!methods.includes(ctx.request.method)) return - console.log( - '-->', - ctx.request.method, - ctx.path, - ctx.set.status, - 'in', - ctx.start ? Date.now() - ctx.start : Number.NaN, - 'ms', - ) - }) diff --git a/apps/backend/lib/plugin/better-auth.ts b/apps/backend/lib/plugin/better-auth.ts deleted file mode 100644 index 90b2746..0000000 --- a/apps/backend/lib/plugin/better-auth.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { auth } from '$lib/auth' -import Elysia from 'elysia' - -export const betterAuth = new Elysia({ name: 'better-auth' }).macro({ - auth: { - async resolve({ status, request: { headers } }) { - const session = await auth.api.getSession({ - headers, - }) - - if (!session) return status(400) - - return { - user: session.user, - session: session.session, - } - }, - }, -}) diff --git a/apps/backend/package.json b/apps/backend/package.json deleted file mode 100644 index 4fd199e..0000000 --- a/apps/backend/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "backend", - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "tsdown --watch", - "build": "tsdown", - "dev:server": "bun run file-router/index.ts", - "build:server": "bun run file-router/build.ts", - "db:push": "bun x drizzle-kit push", - "db:generate": "bun x drizzle-kit generate", - "db:migrate": "bun x drizzle-kit migrate" - }, - "dependencies": { - "@better-auth/drizzle-adapter": "^1.5.5", - "@elysiajs/cors": "^1.4.0", - "@elysiajs/cron": "^1.4.1", - "@elysiajs/eden": "^1.4.5", - "@elysiajs/openapi": "^1.4.11", - "better-auth": "1.3.7", - "drizzle-orm": "^1.0.0-beta.17-67b1795", - "elysia": "latest", - "pg": "^8.16.3", - "tsdown": "0.15.10" - }, - "devDependencies": { - "@types/pg": "^8.15.6", - "bun-types": "latest", - "chokidar": "^5.0.0", - "croner": "^10.0.1", - "drizzle-kit": "^1.0.0-beta.17-67b1795", - "prettier": "^3.8.1", - "typescript": "^5.9.3" - }, - "main": "dist/api-client.js", - "types": "dist/api-client.d.ts", - "module": "./dist/api-client.js", - "exports": { - ".": "./dist/api-client.js", - "./package.json": "./package.json" - } -} diff --git a/apps/backend/src/better-auth-openapi.ts b/apps/backend/src/better-auth-openapi.ts deleted file mode 100644 index 50fd07d..0000000 --- a/apps/backend/src/better-auth-openapi.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { auth } from '$lib/auth' - -let _schema: ReturnType -const getSchema = async () => - (_schema ??= auth.api.generateOpenAPISchema()) - -export const OpenAPI = { - getPaths: (prefix = '/auth') => - getSchema().then(({ paths }) => { - const reference: typeof paths = Object.create(null) - - for (const path of Object.keys(paths)) { - const key = prefix + path - reference[key] = paths[path] - - for (const method of Object.keys(paths[path])) { - const operation = (reference[key] as any)[method] - - operation.tags = ['Better Auth'] - } - } - - return reference - }) as Promise, - components: getSchema().then( - ({ components }) => components, - ) as Promise, -} as const diff --git a/apps/backend/src/index.ts b/apps/backend/src/index.ts deleted file mode 100644 index a137880..0000000 --- a/apps/backend/src/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import openapi from '@elysiajs/openapi' -import { cors } from '@elysiajs/cors' -import { Elysia } from 'elysia' -import { logger } from '$lib/logger' -import { auth } from '$lib/auth' - -import { OpenAPI } from './better-auth-openapi' - -const components = await OpenAPI.components -const paths = await OpenAPI.getPaths() - -export const createApp = () => - new Elysia() - .use(logger()) - .use( - cors({ - origin: [Bun.env.APP_URL!], - methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], - credentials: true, - allowedHeaders: ['Content-Type', 'Authorization'], - }), - ) - .use( - openapi({ - path: '/docs', - documentation: { - components: components, - paths: paths, - }, - }), - ) - .mount(auth.handler) diff --git a/apps/backend/src/route-types.ts b/apps/backend/src/route-types.ts deleted file mode 100644 index e22ef0c..0000000 --- a/apps/backend/src/route-types.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { ElysiaWithBaseUrl } from "../file-router/types.ts"; -import type { route as Route0 } from "./routes/index"; - -export type Route = ElysiaWithBaseUrl<"/", typeof Route0> \ No newline at end of file diff --git a/apps/backend/src/routes/index.ts b/apps/backend/src/routes/index.ts deleted file mode 100644 index 1305b5d..0000000 --- a/apps/backend/src/routes/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { betterAuth } from '$lib/plugin/better-auth' -import Elysia from 'elysia' - -export const route = new Elysia() - .use(betterAuth) - .get('/', async () => { - return 'hello' - }) diff --git a/apps/backend/tsconfig.json b/apps/backend/tsconfig.json deleted file mode 100644 index 3dc2f18..0000000 --- a/apps/backend/tsconfig.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "ES2022" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - "paths": { - "$lib/*": ["./lib/*"], - "$routes/*": ["./src/*"] - } /* Specify a set of entries that re-map imports to additional lookup locations. */, - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": [ - "bun-types" - ] /* Specify type package names to be included without being referenced in a source file. */, - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/apps/backend/tsdown.config.ts b/apps/backend/tsdown.config.ts deleted file mode 100644 index e234e51..0000000 --- a/apps/backend/tsdown.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'tsdown' - -export default defineConfig([ - { - entry: ['./lib/api-client.ts'], - platform: 'node', - clean: false, - dts: true, - ignoreWatch: ['./.turbo', './src/routes'], - }, -]) diff --git a/apps/web/.env.example b/apps/web/.env.example deleted file mode 100644 index eb1d6eb..0000000 --- a/apps/web/.env.example +++ /dev/null @@ -1 +0,0 @@ -PUBLIC_API_URL= \ No newline at end of file diff --git a/apps/web/.gitignore b/apps/web/.gitignore deleted file mode 100644 index 3b462cb..0000000 --- a/apps/web/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -node_modules - -# Output -.output -.vercel -.netlify -.wrangler -/.svelte-kit -/build - -# OS -.DS_Store -Thumbs.db - -# Env -.env -.env.* -!.env.example -!.env.test - -# Vite -vite.config.js.timestamp-* -vite.config.ts.timestamp-* diff --git a/apps/web/.npmrc b/apps/web/.npmrc deleted file mode 100644 index b6f27f1..0000000 --- a/apps/web/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/apps/web/.prettierignore b/apps/web/.prettierignore deleted file mode 100644 index 7d74fe2..0000000 --- a/apps/web/.prettierignore +++ /dev/null @@ -1,9 +0,0 @@ -# Package Managers -package-lock.json -pnpm-lock.yaml -yarn.lock -bun.lock -bun.lockb - -# Miscellaneous -/static/ diff --git a/apps/web/.prettierrc b/apps/web/.prettierrc deleted file mode 100644 index 9e4387d..0000000 --- a/apps/web/.prettierrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "printWidth": 70, - "bracketSameLine": true, - "htmlWhitespaceSensitivity": "ignore", - "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ], - "tailwindStylesheet": "./src/routes/layout.css" -} diff --git a/apps/web/.vscode/extensions.json b/apps/web/.vscode/extensions.json deleted file mode 100644 index 252fc41..0000000 --- a/apps/web/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["svelte.svelte-vscode", "esbenp.prettier-vscode", "bradlc.vscode-tailwindcss"] -} diff --git a/apps/web/.vscode/settings.json b/apps/web/.vscode/settings.json deleted file mode 100644 index bc31e15..0000000 --- a/apps/web/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "files.associations": { - "*.css": "tailwindcss" - } -} diff --git a/apps/web/README.md b/apps/web/README.md deleted file mode 100644 index 6367430..0000000 --- a/apps/web/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# sv - -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). - -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```sh -# create a new project -npx sv create my-app -``` - -To recreate this project with the same configuration: - -```sh -# recreate this project -bun x sv@0.12.8 create --template minimal --types ts --add prettier tailwindcss="plugins:none" sveltekit-adapter="adapter:static" --install bun web -``` - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: - -```sh -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -To create a production version of your app: - -```sh -npm run build -``` - -You can preview the production build with `npm run preview`. - -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/apps/web/components.json b/apps/web/components.json deleted file mode 100644 index db702eb..0000000 --- a/apps/web/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://shadcn-svelte.com/schema.json", - "tailwind": { - "css": "src\\routes\\layout.css", - "baseColor": "neutral" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks", - "lib": "$lib" - }, - "typescript": true, - "registry": "https://shadcn-svelte.com/registry", - "style": "nova", - "iconLibrary": "lucide", - "menuColor": "default", - "menuAccent": "subtle" -} diff --git a/apps/web/jsrepo.config.ts b/apps/web/jsrepo.config.ts deleted file mode 100644 index 0e1d011..0000000 --- a/apps/web/jsrepo.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'jsrepo'; - -export default defineConfig({ - // configure where stuff comes from here - registries: ['@ieedan/shadcn-svelte-extras'], - // configure where stuff goes here - paths: { - ui: '$lib/components/ui', - block: '$lib/components', - hook: '$lib/hooks', - action: '$lib/actions', - util: '$lib/utils', - lib: '$lib' - }, -}); \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json deleted file mode 100644 index cb01628..0000000 --- a/apps/web/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "web", - "private": true, - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check .", - "format": "prettier --write ." - }, - "devDependencies": { - "@fontsource-variable/geist": "^5.2.8", - "@internationalized/date": "^3.12.0", - "@lucide/svelte": "^0.575.0", - "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.50.2", - "@sveltejs/vite-plugin-svelte": "^6.2.4", - "@tailwindcss/vite": "^4.1.18", - "@tanstack/table-core": "^8.21.3", - "bits-ui": "^2.16.3", - "clsx": "^2.1.1", - "embla-carousel-svelte": "^8.6.0", - "formsnap": "^2.0.1", - "jsrepo": "^3.6.2", - "layerchart": "2.0.0-next.43", - "mode-watcher": "^1.1.0", - "paneforge": "^1.0.2", - "prettier": "^3.8.1", - "prettier-plugin-svelte": "^3.4.1", - "prettier-plugin-tailwindcss": "^0.7.2", - "runed": "^0.37.1", - "svelte": "^5.51.0", - "svelte-check": "^4.4.2", - "svelte-sonner": "^1.1.0", - "svelte-toolbelt": "^0.10.6", - "sveltekit-superforms": "^2.30.0", - "tailwind-merge": "^3.5.0", - "tailwind-variants": "^3.2.2", - "tailwindcss": "^4.1.18", - "tw-animate-css": "^1.4.0", - "typescript": "^5.9.3", - "vaul-svelte": "^1.0.0-next.7", - "vite": "^7.3.1" - }, - "dependencies": { - "backend": "workspace:*", - "better-auth": "^1.5.4" - } -} \ No newline at end of file diff --git a/apps/web/src/app.d.ts b/apps/web/src/app.d.ts deleted file mode 100644 index da08e6d..0000000 --- a/apps/web/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/apps/web/src/app.html b/apps/web/src/app.html deleted file mode 100644 index f273cc5..0000000 --- a/apps/web/src/app.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/apps/web/src/lib/api-client.ts b/apps/web/src/lib/api-client.ts deleted file mode 100644 index 4456c23..0000000 --- a/apps/web/src/lib/api-client.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PUBLIC_API_URL } from '$env/static/public' -import { makeClient } from 'backend' - -export const client = makeClient(PUBLIC_API_URL) diff --git a/apps/web/src/lib/assets/favicon.svg b/apps/web/src/lib/assets/favicon.svg deleted file mode 100644 index cc5dc66..0000000 --- a/apps/web/src/lib/assets/favicon.svg +++ /dev/null @@ -1 +0,0 @@ -svelte-logo \ No newline at end of file diff --git a/apps/web/src/lib/auth-client.ts b/apps/web/src/lib/auth-client.ts deleted file mode 100644 index b22b111..0000000 --- a/apps/web/src/lib/auth-client.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { PUBLIC_API_URL } from '$env/static/public' -import { usernameClient } from 'better-auth/client/plugins' -import { createAuthClient } from 'better-auth/svelte' - -export const authClient = createAuthClient({ - baseURL: PUBLIC_API_URL, // The base URL of your auth server - basePath: '/auth', - plugins: [usernameClient()], -}) diff --git a/apps/web/src/lib/components/login-form.svelte b/apps/web/src/lib/components/login-form.svelte deleted file mode 100644 index 57f821e..0000000 --- a/apps/web/src/lib/components/login-form.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - -
- - -
- -
-

Welcome back

-

- Login to your Acme Inc account -

-
- - Email - - - - - - - - - - - Or continue with - - - - - - - - Don't have an account? Sign up - -
-
- -
-
- - By clicking continue, you agree to our Terms of Service and - Privacy Policy. - -
diff --git a/apps/web/src/lib/components/ui/accordion/accordion-content.svelte b/apps/web/src/lib/components/ui/accordion/accordion-content.svelte deleted file mode 100644 index b0617ae..0000000 --- a/apps/web/src/lib/components/ui/accordion/accordion-content.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - -
- {@render children?.()} -
-
diff --git a/apps/web/src/lib/components/ui/accordion/accordion-item.svelte b/apps/web/src/lib/components/ui/accordion/accordion-item.svelte deleted file mode 100644 index 9d3919d..0000000 --- a/apps/web/src/lib/components/ui/accordion/accordion-item.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/accordion/accordion-trigger.svelte b/apps/web/src/lib/components/ui/accordion/accordion-trigger.svelte deleted file mode 100644 index 2a46555..0000000 --- a/apps/web/src/lib/components/ui/accordion/accordion-trigger.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - {@render children?.()} - - - diff --git a/apps/web/src/lib/components/ui/accordion/accordion.svelte b/apps/web/src/lib/components/ui/accordion/accordion.svelte deleted file mode 100644 index b19a3c5..0000000 --- a/apps/web/src/lib/components/ui/accordion/accordion.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/accordion/index.ts b/apps/web/src/lib/components/ui/accordion/index.ts deleted file mode 100644 index ac343a1..0000000 --- a/apps/web/src/lib/components/ui/accordion/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Root from "./accordion.svelte"; -import Content from "./accordion-content.svelte"; -import Item from "./accordion-item.svelte"; -import Trigger from "./accordion-trigger.svelte"; - -export { - Root, - Content, - Item, - Trigger, - // - Root as Accordion, - Content as AccordionContent, - Item as AccordionItem, - Trigger as AccordionTrigger, -}; diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte deleted file mode 100644 index 7e63004..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte deleted file mode 100644 index a4ce03c..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte deleted file mode 100644 index 251e852..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte deleted file mode 100644 index 5024f3f..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte deleted file mode 100644 index f4214db..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte deleted file mode 100644 index d6df4d3..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte deleted file mode 100644 index 3f634f3..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-media.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte deleted file mode 100644 index 9ffcc85..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte deleted file mode 100644 index f0a19a8..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte deleted file mode 100644 index 652da33..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte deleted file mode 100644 index b22d1d5..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte b/apps/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte deleted file mode 100644 index 7ea78bb..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/alert-dialog/index.ts b/apps/web/src/lib/components/ui/alert-dialog/index.ts deleted file mode 100644 index ca81c2a..0000000 --- a/apps/web/src/lib/components/ui/alert-dialog/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import Root from "./alert-dialog.svelte"; -import Portal from "./alert-dialog-portal.svelte"; -import Trigger from "./alert-dialog-trigger.svelte"; -import Title from "./alert-dialog-title.svelte"; -import Action from "./alert-dialog-action.svelte"; -import Cancel from "./alert-dialog-cancel.svelte"; -import Footer from "./alert-dialog-footer.svelte"; -import Header from "./alert-dialog-header.svelte"; -import Overlay from "./alert-dialog-overlay.svelte"; -import Content from "./alert-dialog-content.svelte"; -import Description from "./alert-dialog-description.svelte"; -import Media from "./alert-dialog-media.svelte"; - -export { - Root, - Title, - Action, - Cancel, - Portal, - Footer, - Header, - Trigger, - Overlay, - Content, - Description, - Media, - // - Root as AlertDialog, - Title as AlertDialogTitle, - Action as AlertDialogAction, - Cancel as AlertDialogCancel, - Portal as AlertDialogPortal, - Footer as AlertDialogFooter, - Header as AlertDialogHeader, - Trigger as AlertDialogTrigger, - Overlay as AlertDialogOverlay, - Content as AlertDialogContent, - Description as AlertDialogDescription, - Media as AlertDialogMedia, -}; diff --git a/apps/web/src/lib/components/ui/alert/alert-action.svelte b/apps/web/src/lib/components/ui/alert/alert-action.svelte deleted file mode 100644 index 1877d38..0000000 --- a/apps/web/src/lib/components/ui/alert/alert-action.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert/alert-description.svelte b/apps/web/src/lib/components/ui/alert/alert-description.svelte deleted file mode 100644 index 7ee6039..0000000 --- a/apps/web/src/lib/components/ui/alert/alert-description.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert/alert-title.svelte b/apps/web/src/lib/components/ui/alert/alert-title.svelte deleted file mode 100644 index 3e339a3..0000000 --- a/apps/web/src/lib/components/ui/alert/alert-title.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", - className - )} - {...restProps} -> - {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/alert/alert.svelte b/apps/web/src/lib/components/ui/alert/alert.svelte deleted file mode 100644 index abf7487..0000000 --- a/apps/web/src/lib/components/ui/alert/alert.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/apps/web/src/lib/components/ui/alert/index.ts b/apps/web/src/lib/components/ui/alert/index.ts deleted file mode 100644 index 071b113..0000000 --- a/apps/web/src/lib/components/ui/alert/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Root from "./alert.svelte"; -import Description from "./alert-description.svelte"; -import Title from "./alert-title.svelte"; -import Action from "./alert-action.svelte"; -export { alertVariants, type AlertVariant } from "./alert.svelte"; - -export { - Root, - Description, - Title, - Action, - // - Root as Alert, - Description as AlertDescription, - Title as AlertTitle, - Action as AlertAction, -}; diff --git a/apps/web/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte b/apps/web/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte deleted file mode 100644 index 815aab0..0000000 --- a/apps/web/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/aspect-ratio/index.ts b/apps/web/src/lib/components/ui/aspect-ratio/index.ts deleted file mode 100644 index 985c75f..0000000 --- a/apps/web/src/lib/components/ui/aspect-ratio/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Root from "./aspect-ratio.svelte"; - -export { Root, Root as AspectRatio }; diff --git a/apps/web/src/lib/components/ui/avatar/avatar-badge.svelte b/apps/web/src/lib/components/ui/avatar/avatar-badge.svelte deleted file mode 100644 index ca9d9ed..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar-badge.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - -svg]:hidden", - "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", - "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", - className - )} - {...restProps} -> - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/avatar/avatar-fallback.svelte b/apps/web/src/lib/components/ui/avatar/avatar-fallback.svelte deleted file mode 100644 index 63c8b02..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar-fallback.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/avatar/avatar-group-count.svelte b/apps/web/src/lib/components/ui/avatar/avatar-group-count.svelte deleted file mode 100644 index c89684a..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar-group-count.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2", - className - )} - {...restProps} -> - {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/avatar/avatar-group.svelte b/apps/web/src/lib/components/ui/avatar/avatar-group.svelte deleted file mode 100644 index 78714fc..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar-group.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/apps/web/src/lib/components/ui/avatar/avatar-image.svelte b/apps/web/src/lib/components/ui/avatar/avatar-image.svelte deleted file mode 100644 index f41cf8f..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar-image.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/avatar/avatar.svelte b/apps/web/src/lib/components/ui/avatar/avatar.svelte deleted file mode 100644 index ea6fde5..0000000 --- a/apps/web/src/lib/components/ui/avatar/avatar.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/avatar/index.ts b/apps/web/src/lib/components/ui/avatar/index.ts deleted file mode 100644 index 38ccef8..0000000 --- a/apps/web/src/lib/components/ui/avatar/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import Root from "./avatar.svelte"; -import Image from "./avatar-image.svelte"; -import Fallback from "./avatar-fallback.svelte"; -import Badge from "./avatar-badge.svelte"; -import Group from "./avatar-group.svelte"; -import GroupCount from "./avatar-group-count.svelte"; - -export { - Root, - Image, - Fallback, - Badge, - Group, - GroupCount, - // - Root as Avatar, - Image as AvatarImage, - Fallback as AvatarFallback, - Badge as AvatarBadge, - Group as AvatarGroup, - GroupCount as AvatarGroupCount, -}; diff --git a/apps/web/src/lib/components/ui/badge/badge.svelte b/apps/web/src/lib/components/ui/badge/badge.svelte deleted file mode 100644 index 51bbc23..0000000 --- a/apps/web/src/lib/components/ui/badge/badge.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/badge/index.ts b/apps/web/src/lib/components/ui/badge/index.ts deleted file mode 100644 index 64e0aa9..0000000 --- a/apps/web/src/lib/components/ui/badge/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Badge } from "./badge.svelte"; -export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte deleted file mode 100644 index 9e1e22c..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte deleted file mode 100644 index e9c77ea..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
  • - {@render children?.()} -
  • diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte deleted file mode 100644 index e6bc17d..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -{#if child} - {@render child({ props: attrs })} -{:else} - - {@render children?.()} - -{/if} diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte deleted file mode 100644 index 4873cf0..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
      - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte deleted file mode 100644 index 5fb6979..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte deleted file mode 100644 index 0f62fba..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb.svelte b/apps/web/src/lib/components/ui/breadcrumb/breadcrumb.svelte deleted file mode 100644 index 29ea3f5..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/breadcrumb.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/breadcrumb/index.ts b/apps/web/src/lib/components/ui/breadcrumb/index.ts deleted file mode 100644 index dc914ec..0000000 --- a/apps/web/src/lib/components/ui/breadcrumb/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Root from "./breadcrumb.svelte"; -import Ellipsis from "./breadcrumb-ellipsis.svelte"; -import Item from "./breadcrumb-item.svelte"; -import Separator from "./breadcrumb-separator.svelte"; -import Link from "./breadcrumb-link.svelte"; -import List from "./breadcrumb-list.svelte"; -import Page from "./breadcrumb-page.svelte"; - -export { - Root, - Ellipsis, - Item, - Separator, - Link, - List, - Page, - // - Root as Breadcrumb, - Ellipsis as BreadcrumbEllipsis, - Item as BreadcrumbItem, - Separator as BreadcrumbSeparator, - Link as BreadcrumbLink, - List as BreadcrumbList, - Page as BreadcrumbPage, -}; diff --git a/apps/web/src/lib/components/ui/button-group/button-group-separator.svelte b/apps/web/src/lib/components/ui/button-group/button-group-separator.svelte deleted file mode 100644 index a13f023..0000000 --- a/apps/web/src/lib/components/ui/button-group/button-group-separator.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/button-group/button-group-text.svelte b/apps/web/src/lib/components/ui/button-group/button-group-text.svelte deleted file mode 100644 index 67c0a28..0000000 --- a/apps/web/src/lib/components/ui/button-group/button-group-text.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -{#if child} - {@render child({ props: mergedProps })} -{:else} -
    - {@render mergedProps.children?.()} -
    -{/if} diff --git a/apps/web/src/lib/components/ui/button-group/button-group.svelte b/apps/web/src/lib/components/ui/button-group/button-group.svelte deleted file mode 100644 index 06d48dc..0000000 --- a/apps/web/src/lib/components/ui/button-group/button-group.svelte +++ /dev/null @@ -1,46 +0,0 @@ - - - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/button-group/index.ts b/apps/web/src/lib/components/ui/button-group/index.ts deleted file mode 100644 index 664167f..0000000 --- a/apps/web/src/lib/components/ui/button-group/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Root, { buttonGroupVariants, type ButtonGroupOrientation } from "./button-group.svelte"; -import Text from "./button-group-text.svelte"; -import Separator from "./button-group-separator.svelte"; - -export { - Root, - Text, - Separator, - buttonGroupVariants, - type ButtonGroupOrientation, - // - Root as ButtonGroup, - Text as ButtonGroupText, - Separator as ButtonGroupSeparator, -}; diff --git a/apps/web/src/lib/components/ui/button/button.svelte b/apps/web/src/lib/components/ui/button/button.svelte deleted file mode 100644 index 188148f..0000000 --- a/apps/web/src/lib/components/ui/button/button.svelte +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - { - onclick?.(e); - - if (type === undefined) return; - - if (onClickPromise) { - loading = true; - - await onClickPromise(e); - - loading = false; - } - }} -> - {#if type !== undefined && loading} -
    - -
    - Loading - {/if} - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/button/index.ts b/apps/web/src/lib/components/ui/button/index.ts deleted file mode 100644 index 61bc345..0000000 --- a/apps/web/src/lib/components/ui/button/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import Root, { - type ButtonProps, - type ButtonSize, - type ButtonVariant, - type AnchorElementProps, - type ButtonElementProps, - type ButtonPropsWithoutHTML, - buttonVariants -} from '$lib/components/ui/button/button.svelte'; - -export { - Root, - type ButtonProps as Props, - // - Root as Button, - buttonVariants, - type ButtonProps, - type ButtonSize, - type ButtonVariant, - type AnchorElementProps, - type ButtonElementProps, - type ButtonPropsWithoutHTML -}; diff --git a/apps/web/src/lib/components/ui/calendar/calendar-caption.svelte b/apps/web/src/lib/components/ui/calendar/calendar-caption.svelte deleted file mode 100644 index 5c93037..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-caption.svelte +++ /dev/null @@ -1,76 +0,0 @@ - - -{#snippet MonthSelect()} - { - if (!placeholder) return; - const v = Number.parseInt(e.currentTarget.value); - const newPlaceholder = placeholder.set({ month: v }); - placeholder = newPlaceholder.subtract({ months: monthIndex }); - }} - /> -{/snippet} - -{#snippet YearSelect()} - -{/snippet} - -{#if captionLayout === "dropdown"} - {@render MonthSelect()} - {@render YearSelect()} -{:else if captionLayout === "dropdown-months"} - {@render MonthSelect()} - {#if placeholder} - {formatYear(placeholder)} - {/if} -{:else if captionLayout === "dropdown-years"} - {#if placeholder} - {formatMonth(placeholder)} - {/if} - {@render YearSelect()} -{:else} - {formatMonth(month)} {formatYear(month)} -{/if} diff --git a/apps/web/src/lib/components/ui/calendar/calendar-cell.svelte b/apps/web/src/lib/components/ui/calendar/calendar-cell.svelte deleted file mode 100644 index 7ceb5e1..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-cell.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-day.svelte b/apps/web/src/lib/components/ui/calendar/calendar-day.svelte deleted file mode 100644 index edc8c9d..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-day.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - -span]:text-xs [&>span]:opacity-70", - className - )} - {...restProps} -/> diff --git a/apps/web/src/lib/components/ui/calendar/calendar-grid-body.svelte b/apps/web/src/lib/components/ui/calendar/calendar-grid-body.svelte deleted file mode 100644 index 8cd86de..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-grid-body.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-grid-head.svelte b/apps/web/src/lib/components/ui/calendar/calendar-grid-head.svelte deleted file mode 100644 index 333edc4..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-grid-head.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-grid-row.svelte b/apps/web/src/lib/components/ui/calendar/calendar-grid-row.svelte deleted file mode 100644 index 9032236..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-grid-row.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-grid.svelte b/apps/web/src/lib/components/ui/calendar/calendar-grid.svelte deleted file mode 100644 index 5fbb18f..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-grid.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-head-cell.svelte b/apps/web/src/lib/components/ui/calendar/calendar-head-cell.svelte deleted file mode 100644 index 131807e..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-head-cell.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-header.svelte b/apps/web/src/lib/components/ui/calendar/calendar-header.svelte deleted file mode 100644 index c39e955..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-header.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-heading.svelte b/apps/web/src/lib/components/ui/calendar/calendar-heading.svelte deleted file mode 100644 index a9b9810..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-heading.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-month-select.svelte b/apps/web/src/lib/components/ui/calendar/calendar-month-select.svelte deleted file mode 100644 index ed75b1d..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-month-select.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - - - {#snippet child({ props, monthItems, selectedMonthItem })} - - - {/snippet} - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-month.svelte b/apps/web/src/lib/components/ui/calendar/calendar-month.svelte deleted file mode 100644 index 7bdafe7..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-month.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/calendar/calendar-months.svelte b/apps/web/src/lib/components/ui/calendar/calendar-months.svelte deleted file mode 100644 index f717a9d..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-months.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/calendar/calendar-nav.svelte b/apps/web/src/lib/components/ui/calendar/calendar-nav.svelte deleted file mode 100644 index 27f33d7..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-nav.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-next-button.svelte b/apps/web/src/lib/components/ui/calendar/calendar-next-button.svelte deleted file mode 100644 index 82dd739..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-next-button.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - -{#snippet Fallback()} - -{/snippet} - - - {#if children} - {@render children?.()} - {:else} - {@render Fallback()} - {/if} - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-prev-button.svelte b/apps/web/src/lib/components/ui/calendar/calendar-prev-button.svelte deleted file mode 100644 index 383312e..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-prev-button.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - -{#snippet Fallback()} - -{/snippet} - - - {#if children} - {@render children?.()} - {:else} - {@render Fallback()} - {/if} - diff --git a/apps/web/src/lib/components/ui/calendar/calendar-year-select.svelte b/apps/web/src/lib/components/ui/calendar/calendar-year-select.svelte deleted file mode 100644 index 898c2a4..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar-year-select.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - - - - {#snippet child({ props, yearItems, selectedYearItem })} - - - {/snippet} - - diff --git a/apps/web/src/lib/components/ui/calendar/calendar.svelte b/apps/web/src/lib/components/ui/calendar/calendar.svelte deleted file mode 100644 index 78952c7..0000000 --- a/apps/web/src/lib/components/ui/calendar/calendar.svelte +++ /dev/null @@ -1,115 +0,0 @@ - - - - - {#snippet children({ months, weekdays })} - - - - - - {#each months as month, monthIndex (month)} - - - - - - - - {#each weekdays as weekday (weekday)} - - {weekday.slice(0, 2)} - - {/each} - - - - {#each month.weeks as weekDates (weekDates)} - - {#each weekDates as date (date)} - - {#if day} - {@render day({ - day: date, - outsideMonth: !isEqualMonth(date, month.value), - })} - {:else} - - {/if} - - {/each} - - {/each} - - - - {/each} - - {/snippet} - diff --git a/apps/web/src/lib/components/ui/calendar/index.ts b/apps/web/src/lib/components/ui/calendar/index.ts deleted file mode 100644 index f3a16d2..0000000 --- a/apps/web/src/lib/components/ui/calendar/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import Root from "./calendar.svelte"; -import Cell from "./calendar-cell.svelte"; -import Day from "./calendar-day.svelte"; -import Grid from "./calendar-grid.svelte"; -import Header from "./calendar-header.svelte"; -import Months from "./calendar-months.svelte"; -import GridRow from "./calendar-grid-row.svelte"; -import Heading from "./calendar-heading.svelte"; -import GridBody from "./calendar-grid-body.svelte"; -import GridHead from "./calendar-grid-head.svelte"; -import HeadCell from "./calendar-head-cell.svelte"; -import NextButton from "./calendar-next-button.svelte"; -import PrevButton from "./calendar-prev-button.svelte"; -import MonthSelect from "./calendar-month-select.svelte"; -import YearSelect from "./calendar-year-select.svelte"; -import Month from "./calendar-month.svelte"; -import Nav from "./calendar-nav.svelte"; -import Caption from "./calendar-caption.svelte"; - -export { - Day, - Cell, - Grid, - Header, - Months, - GridRow, - Heading, - GridBody, - GridHead, - HeadCell, - NextButton, - PrevButton, - Nav, - Month, - YearSelect, - MonthSelect, - Caption, - // - Root as Calendar, -}; diff --git a/apps/web/src/lib/components/ui/card/card-action.svelte b/apps/web/src/lib/components/ui/card/card-action.svelte deleted file mode 100644 index 7c48844..0000000 --- a/apps/web/src/lib/components/ui/card/card-action.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/card-content.svelte b/apps/web/src/lib/components/ui/card/card-content.svelte deleted file mode 100644 index 4f60ee3..0000000 --- a/apps/web/src/lib/components/ui/card/card-content.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/card-description.svelte b/apps/web/src/lib/components/ui/card/card-description.svelte deleted file mode 100644 index 9b20ac7..0000000 --- a/apps/web/src/lib/components/ui/card/card-description.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -

    - {@render children?.()} -

    diff --git a/apps/web/src/lib/components/ui/card/card-footer.svelte b/apps/web/src/lib/components/ui/card/card-footer.svelte deleted file mode 100644 index 1efff6d..0000000 --- a/apps/web/src/lib/components/ui/card/card-footer.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/card-header.svelte b/apps/web/src/lib/components/ui/card/card-header.svelte deleted file mode 100644 index 7eb69e1..0000000 --- a/apps/web/src/lib/components/ui/card/card-header.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/card-title.svelte b/apps/web/src/lib/components/ui/card/card-title.svelte deleted file mode 100644 index 3f5261e..0000000 --- a/apps/web/src/lib/components/ui/card/card-title.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/card.svelte b/apps/web/src/lib/components/ui/card/card.svelte deleted file mode 100644 index 2b4f81a..0000000 --- a/apps/web/src/lib/components/ui/card/card.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -
    img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className)} - {...restProps} -> - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/card/index.ts b/apps/web/src/lib/components/ui/card/index.ts deleted file mode 100644 index 4d3fce4..0000000 --- a/apps/web/src/lib/components/ui/card/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Root from "./card.svelte"; -import Content from "./card-content.svelte"; -import Description from "./card-description.svelte"; -import Footer from "./card-footer.svelte"; -import Header from "./card-header.svelte"; -import Title from "./card-title.svelte"; -import Action from "./card-action.svelte"; - -export { - Root, - Content, - Description, - Footer, - Header, - Title, - Action, - // - Root as Card, - Content as CardContent, - Description as CardDescription, - Footer as CardFooter, - Header as CardHeader, - Title as CardTitle, - Action as CardAction, -}; diff --git a/apps/web/src/lib/components/ui/carousel/carousel-content.svelte b/apps/web/src/lib/components/ui/carousel/carousel-content.svelte deleted file mode 100644 index 84c71f8..0000000 --- a/apps/web/src/lib/components/ui/carousel/carousel-content.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -
    -
    - {@render children?.()} -
    -
    diff --git a/apps/web/src/lib/components/ui/carousel/carousel-item.svelte b/apps/web/src/lib/components/ui/carousel/carousel-item.svelte deleted file mode 100644 index ebf1649..0000000 --- a/apps/web/src/lib/components/ui/carousel/carousel-item.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/carousel/carousel-next.svelte b/apps/web/src/lib/components/ui/carousel/carousel-next.svelte deleted file mode 100644 index 194932a..0000000 --- a/apps/web/src/lib/components/ui/carousel/carousel-next.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/carousel/carousel-previous.svelte b/apps/web/src/lib/components/ui/carousel/carousel-previous.svelte deleted file mode 100644 index 5020ab8..0000000 --- a/apps/web/src/lib/components/ui/carousel/carousel-previous.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/carousel/carousel.svelte b/apps/web/src/lib/components/ui/carousel/carousel.svelte deleted file mode 100644 index b3933b8..0000000 --- a/apps/web/src/lib/components/ui/carousel/carousel.svelte +++ /dev/null @@ -1,94 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/carousel/context.ts b/apps/web/src/lib/components/ui/carousel/context.ts deleted file mode 100644 index a5fd74f..0000000 --- a/apps/web/src/lib/components/ui/carousel/context.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { WithElementRef } from "$lib/utils.js"; -import type { - EmblaCarouselSvelteType, - default as emblaCarouselSvelte, -} from "embla-carousel-svelte"; -import { getContext, hasContext, setContext } from "svelte"; -import type { HTMLAttributes } from "svelte/elements"; - -export type CarouselAPI = - NonNullable["on:emblaInit"]> extends ( - evt: CustomEvent - ) => void - ? CarouselAPI - : never; - -type EmblaCarouselConfig = NonNullable[1]>; - -export type CarouselOptions = EmblaCarouselConfig["options"]; -export type CarouselPlugins = EmblaCarouselConfig["plugins"]; - -//// - -export type CarouselProps = { - opts?: CarouselOptions; - plugins?: CarouselPlugins; - setApi?: (api: CarouselAPI | undefined) => void; - orientation?: "horizontal" | "vertical"; -} & WithElementRef>; - -const EMBLA_CAROUSEL_CONTEXT = Symbol("EMBLA_CAROUSEL_CONTEXT"); - -export type EmblaContext = { - api: CarouselAPI | undefined; - orientation: "horizontal" | "vertical"; - scrollNext: () => void; - scrollPrev: () => void; - canScrollNext: boolean; - canScrollPrev: boolean; - handleKeyDown: (e: KeyboardEvent) => void; - options: CarouselOptions; - plugins: CarouselPlugins; - onInit: (e: CustomEvent) => void; - scrollTo: (index: number, jump?: boolean) => void; - scrollSnaps: number[]; - selectedIndex: number; -}; - -export function setEmblaContext(config: EmblaContext): EmblaContext { - setContext(EMBLA_CAROUSEL_CONTEXT, config); - return config; -} - -export function getEmblaContext(name = "This component") { - if (!hasContext(EMBLA_CAROUSEL_CONTEXT)) { - throw new Error(`${name} must be used within a component`); - } - return getContext>(EMBLA_CAROUSEL_CONTEXT); -} diff --git a/apps/web/src/lib/components/ui/carousel/index.ts b/apps/web/src/lib/components/ui/carousel/index.ts deleted file mode 100644 index 957fc74..0000000 --- a/apps/web/src/lib/components/ui/carousel/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import Root from "./carousel.svelte"; -import Content from "./carousel-content.svelte"; -import Item from "./carousel-item.svelte"; -import Previous from "./carousel-previous.svelte"; -import Next from "./carousel-next.svelte"; - -export { - Root, - Content, - Item, - Previous, - Next, - // - Root as Carousel, - Content as CarouselContent, - Item as CarouselItem, - Previous as CarouselPrevious, - Next as CarouselNext, -}; diff --git a/apps/web/src/lib/components/ui/chart/chart-container.svelte b/apps/web/src/lib/components/ui/chart/chart-container.svelte deleted file mode 100644 index 1eb8e39..0000000 --- a/apps/web/src/lib/components/ui/chart/chart-container.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - -
    - - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/chart/chart-style.svelte b/apps/web/src/lib/components/ui/chart/chart-style.svelte deleted file mode 100644 index ea1b3b2..0000000 --- a/apps/web/src/lib/components/ui/chart/chart-style.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - -{#if themeContents} - {#key id} - - {themeContents} - - {/key} -{/if} diff --git a/apps/web/src/lib/components/ui/chart/chart-tooltip.svelte b/apps/web/src/lib/components/ui/chart/chart-tooltip.svelte deleted file mode 100644 index 7f3908b..0000000 --- a/apps/web/src/lib/components/ui/chart/chart-tooltip.svelte +++ /dev/null @@ -1,160 +0,0 @@ - - -{#snippet TooltipLabel()} - {#if formattedLabel} -
    - {#if typeof formattedLabel === "function"} - {@render formattedLabel()} - {:else} - {formattedLabel} - {/if} -
    - {/if} -{/snippet} - - -
    - {#if !nestLabel} - {@render TooltipLabel()} - {/if} -
    - {#each tooltipCtx.payload as item, i (item.key + i)} - {@const key = `${nameKey || item.key || item.name || "value"}`} - {@const itemConfig = getPayloadConfigFromPayload(chart.config, item, key)} - {@const indicatorColor = color || item.payload?.color || item.color} -
    svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5", - indicator === "dot" && "items-center" - )} - > - {#if formatter && item.value !== undefined && item.name} - {@render formatter({ - value: item.value, - name: item.name, - item, - index: i, - payload: tooltipCtx.payload, - })} - {:else} - {#if itemConfig?.icon} - - {:else if !hideIndicator} -
    - {/if} -
    -
    - {#if nestLabel} - {@render TooltipLabel()} - {/if} - - {itemConfig?.label || item.name} - -
    - {#if item.value !== undefined} - - {item.value.toLocaleString()} - - {/if} -
    - {/if} -
    - {/each} -
    -
    -
    diff --git a/apps/web/src/lib/components/ui/chart/chart-utils.ts b/apps/web/src/lib/components/ui/chart/chart-utils.ts deleted file mode 100644 index 2decbbf..0000000 --- a/apps/web/src/lib/components/ui/chart/chart-utils.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { Tooltip } from "layerchart"; -import { getContext, setContext, type Component, type ComponentProps, type Snippet } from "svelte"; - -export const THEMES = { light: "", dark: ".dark" } as const; - -export type ChartConfig = { - [k in string]: { - label?: string; - icon?: Component; - } & ( - | { color?: string; theme?: never } - | { color?: never; theme: Record } - ); -}; - -export type ExtractSnippetParams = T extends Snippet<[infer P]> ? P : never; - -export type TooltipPayload = ExtractSnippetParams< - ComponentProps["children"] ->["payload"][number]; - -// Helper to extract item config from a payload. -export function getPayloadConfigFromPayload( - config: ChartConfig, - payload: TooltipPayload, - key: string -) { - if (typeof payload !== "object" || payload === null) return undefined; - - const payloadPayload = - "payload" in payload && typeof payload.payload === "object" && payload.payload !== null - ? payload.payload - : undefined; - - let configLabelKey: string = key; - - if (payload.key === key) { - configLabelKey = payload.key; - } else if (payload.name === key) { - configLabelKey = payload.name; - } else if (key in payload && typeof payload[key as keyof typeof payload] === "string") { - configLabelKey = payload[key as keyof typeof payload] as string; - } else if ( - payloadPayload !== undefined && - key in payloadPayload && - typeof payloadPayload[key as keyof typeof payloadPayload] === "string" - ) { - configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string; - } - - return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]; -} - -type ChartContextValue = { - config: ChartConfig; -}; - -const chartContextKey = Symbol("chart-context"); - -export function setChartContext(value: ChartContextValue) { - return setContext(chartContextKey, value); -} - -export function useChart() { - return getContext(chartContextKey); -} diff --git a/apps/web/src/lib/components/ui/chart/index.ts b/apps/web/src/lib/components/ui/chart/index.ts deleted file mode 100644 index f22375e..0000000 --- a/apps/web/src/lib/components/ui/chart/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import ChartContainer from "./chart-container.svelte"; -import ChartTooltip from "./chart-tooltip.svelte"; - -export { getPayloadConfigFromPayload, type ChartConfig } from "./chart-utils.js"; - -export { ChartContainer, ChartTooltip, ChartContainer as Container, ChartTooltip as Tooltip }; diff --git a/apps/web/src/lib/components/ui/checkbox/checkbox.svelte b/apps/web/src/lib/components/ui/checkbox/checkbox.svelte deleted file mode 100644 index 27b0da6..0000000 --- a/apps/web/src/lib/components/ui/checkbox/checkbox.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - - {#snippet children({ checked, indeterminate })} -
    - {#if checked} - - {:else if indeterminate} - - {/if} -
    - {/snippet} -
    diff --git a/apps/web/src/lib/components/ui/checkbox/index.ts b/apps/web/src/lib/components/ui/checkbox/index.ts deleted file mode 100644 index 6d92d94..0000000 --- a/apps/web/src/lib/components/ui/checkbox/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import Root from "./checkbox.svelte"; -export { - Root, - // - Root as Checkbox, -}; diff --git a/apps/web/src/lib/components/ui/collapsible/collapsible-content.svelte b/apps/web/src/lib/components/ui/collapsible/collapsible-content.svelte deleted file mode 100644 index bdabb55..0000000 --- a/apps/web/src/lib/components/ui/collapsible/collapsible-content.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/collapsible/collapsible-trigger.svelte b/apps/web/src/lib/components/ui/collapsible/collapsible-trigger.svelte deleted file mode 100644 index ece7ad6..0000000 --- a/apps/web/src/lib/components/ui/collapsible/collapsible-trigger.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/collapsible/collapsible.svelte b/apps/web/src/lib/components/ui/collapsible/collapsible.svelte deleted file mode 100644 index 39cdd4e..0000000 --- a/apps/web/src/lib/components/ui/collapsible/collapsible.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/collapsible/index.ts b/apps/web/src/lib/components/ui/collapsible/index.ts deleted file mode 100644 index 169b479..0000000 --- a/apps/web/src/lib/components/ui/collapsible/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import Root from "./collapsible.svelte"; -import Trigger from "./collapsible-trigger.svelte"; -import Content from "./collapsible-content.svelte"; - -export { - Root, - Content, - Trigger, - // - Root as Collapsible, - Content as CollapsibleContent, - Trigger as CollapsibleTrigger, -}; diff --git a/apps/web/src/lib/components/ui/command/command-dialog.svelte b/apps/web/src/lib/components/ui/command/command-dialog.svelte deleted file mode 100644 index 63b445c..0000000 --- a/apps/web/src/lib/components/ui/command/command-dialog.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - - {title} - {description} - - - - - diff --git a/apps/web/src/lib/components/ui/command/command-empty.svelte b/apps/web/src/lib/components/ui/command/command-empty.svelte deleted file mode 100644 index 6726cd8..0000000 --- a/apps/web/src/lib/components/ui/command/command-empty.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/command-group.svelte b/apps/web/src/lib/components/ui/command/command-group.svelte deleted file mode 100644 index f5da0df..0000000 --- a/apps/web/src/lib/components/ui/command/command-group.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - {#if heading} - - {heading} - - {/if} - - diff --git a/apps/web/src/lib/components/ui/command/command-input.svelte b/apps/web/src/lib/components/ui/command/command-input.svelte deleted file mode 100644 index 039425f..0000000 --- a/apps/web/src/lib/components/ui/command/command-input.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -
    - - - - - - -
    diff --git a/apps/web/src/lib/components/ui/command/command-item.svelte b/apps/web/src/lib/components/ui/command/command-item.svelte deleted file mode 100644 index 4246840..0000000 --- a/apps/web/src/lib/components/ui/command/command-item.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - {@render children?.()} - - diff --git a/apps/web/src/lib/components/ui/command/command-link-item.svelte b/apps/web/src/lib/components/ui/command/command-link-item.svelte deleted file mode 100644 index ada6d2c..0000000 --- a/apps/web/src/lib/components/ui/command/command-link-item.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/command-list.svelte b/apps/web/src/lib/components/ui/command/command-list.svelte deleted file mode 100644 index f663bd3..0000000 --- a/apps/web/src/lib/components/ui/command/command-list.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/command-loading.svelte b/apps/web/src/lib/components/ui/command/command-loading.svelte deleted file mode 100644 index 19dd298..0000000 --- a/apps/web/src/lib/components/ui/command/command-loading.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/command-separator.svelte b/apps/web/src/lib/components/ui/command/command-separator.svelte deleted file mode 100644 index 35c4c95..0000000 --- a/apps/web/src/lib/components/ui/command/command-separator.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/command-shortcut.svelte b/apps/web/src/lib/components/ui/command/command-shortcut.svelte deleted file mode 100644 index 5322e6a..0000000 --- a/apps/web/src/lib/components/ui/command/command-shortcut.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/command/command.svelte b/apps/web/src/lib/components/ui/command/command.svelte deleted file mode 100644 index c814599..0000000 --- a/apps/web/src/lib/components/ui/command/command.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/command/index.ts b/apps/web/src/lib/components/ui/command/index.ts deleted file mode 100644 index 5435fbe..0000000 --- a/apps/web/src/lib/components/ui/command/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import Root from "./command.svelte"; -import Loading from "./command-loading.svelte"; -import Dialog from "./command-dialog.svelte"; -import Empty from "./command-empty.svelte"; -import Group from "./command-group.svelte"; -import Item from "./command-item.svelte"; -import Input from "./command-input.svelte"; -import List from "./command-list.svelte"; -import Separator from "./command-separator.svelte"; -import Shortcut from "./command-shortcut.svelte"; -import LinkItem from "./command-link-item.svelte"; - -export { - Root, - Dialog, - Empty, - Group, - Item, - LinkItem, - Input, - List, - Separator, - Shortcut, - Loading, - // - Root as Command, - Dialog as CommandDialog, - Empty as CommandEmpty, - Group as CommandGroup, - Item as CommandItem, - LinkItem as CommandLinkItem, - Input as CommandInput, - List as CommandList, - Separator as CommandSeparator, - Shortcut as CommandShortcut, - Loading as CommandLoading, -}; diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte deleted file mode 100644 index 9ffcfbe..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte +++ /dev/null @@ -1,41 +0,0 @@ - - - - {#snippet children({ checked })} - - {#if checked} - - {/if} - - {@render childrenProp?.()} - {/snippet} - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-content.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-content.svelte deleted file mode 100644 index 5f32420..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-content.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-group-heading.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-group-heading.svelte deleted file mode 100644 index 0c0f459..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-group-heading.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-group.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-group.svelte deleted file mode 100644 index c7c1e06..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-group.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-item.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-item.svelte deleted file mode 100644 index fccba28..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-item.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-label.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-label.svelte deleted file mode 100644 index 8b9e9c6..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-label.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-portal.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-portal.svelte deleted file mode 100644 index 96b1e3e..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte deleted file mode 100644 index 964cb55..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte deleted file mode 100644 index ad4e56f..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - {#snippet children({ checked })} - - {#if checked} - - {/if} - - {@render childrenProp?.({ checked })} - {/snippet} - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-separator.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-separator.svelte deleted file mode 100644 index 7f5b237..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-separator.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte deleted file mode 100644 index 3305abc..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte deleted file mode 100644 index fa46397..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte deleted file mode 100644 index af016c5..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - {@render children?.()} - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-sub.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-sub.svelte deleted file mode 100644 index a03827b..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-sub.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu-trigger.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu-trigger.svelte deleted file mode 100644 index f6a1542..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu-trigger.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/context-menu.svelte b/apps/web/src/lib/components/ui/context-menu/context-menu.svelte deleted file mode 100644 index cfaefb3..0000000 --- a/apps/web/src/lib/components/ui/context-menu/context-menu.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/context-menu/index.ts b/apps/web/src/lib/components/ui/context-menu/index.ts deleted file mode 100644 index cbeaee1..0000000 --- a/apps/web/src/lib/components/ui/context-menu/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import Root from "./context-menu.svelte"; -import Sub from "./context-menu-sub.svelte"; -import Portal from "./context-menu-portal.svelte"; -import Trigger from "./context-menu-trigger.svelte"; -import Group from "./context-menu-group.svelte"; -import RadioGroup from "./context-menu-radio-group.svelte"; -import Item from "./context-menu-item.svelte"; -import GroupHeading from "./context-menu-group-heading.svelte"; -import Content from "./context-menu-content.svelte"; -import Shortcut from "./context-menu-shortcut.svelte"; -import RadioItem from "./context-menu-radio-item.svelte"; -import Separator from "./context-menu-separator.svelte"; -import SubContent from "./context-menu-sub-content.svelte"; -import SubTrigger from "./context-menu-sub-trigger.svelte"; -import CheckboxItem from "./context-menu-checkbox-item.svelte"; -import Label from "./context-menu-label.svelte"; - -export { - Root, - Sub, - Portal, - Item, - GroupHeading, - Label, - Group, - Trigger, - Content, - Shortcut, - Separator, - RadioItem, - SubContent, - SubTrigger, - RadioGroup, - CheckboxItem, - // - Root as ContextMenu, - Sub as ContextMenuSub, - Portal as ContextMenuPortal, - Item as ContextMenuItem, - GroupHeading as ContextMenuGroupHeading, - Group as ContextMenuGroup, - Content as ContextMenuContent, - Trigger as ContextMenuTrigger, - Shortcut as ContextMenuShortcut, - RadioItem as ContextMenuRadioItem, - Separator as ContextMenuSeparator, - RadioGroup as ContextMenuRadioGroup, - SubContent as ContextMenuSubContent, - SubTrigger as ContextMenuSubTrigger, - CheckboxItem as ContextMenuCheckboxItem, - Label as ContextMenuLabel, -}; diff --git a/apps/web/src/lib/components/ui/copy-button/copy-button.svelte b/apps/web/src/lib/components/ui/copy-button/copy-button.svelte deleted file mode 100644 index 60d4f40..0000000 --- a/apps/web/src/lib/components/ui/copy-button/copy-button.svelte +++ /dev/null @@ -1,69 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/copy-button/index.ts b/apps/web/src/lib/components/ui/copy-button/index.ts deleted file mode 100644 index e19d4fa..0000000 --- a/apps/web/src/lib/components/ui/copy-button/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import CopyButton from '$lib/components/ui/copy-button/copy-button.svelte'; - -export { CopyButton }; diff --git a/apps/web/src/lib/components/ui/copy-button/types.ts b/apps/web/src/lib/components/ui/copy-button/types.ts deleted file mode 100644 index c31984e..0000000 --- a/apps/web/src/lib/components/ui/copy-button/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Snippet } from 'svelte'; -import type { ButtonPropsWithoutHTML } from '$lib/components/ui/button'; -import type { UseClipboard } from '$lib/hooks/use-clipboard.svelte'; -import type { HTMLAttributes } from 'svelte/elements'; -import type { WithChildren, WithoutChildren } from 'bits-ui'; - -export type CopyButtonPropsWithoutHTML = WithChildren< - Pick & { - ref?: HTMLButtonElement | null; - text: string; - icon?: Snippet<[]>; - animationDuration?: number; - onCopy?: (status: UseClipboard['status']) => void; - } ->; - -export type CopyButtonProps = CopyButtonPropsWithoutHTML & - WithoutChildren>; diff --git a/apps/web/src/lib/components/ui/data-table/data-table.svelte.ts b/apps/web/src/lib/components/ui/data-table/data-table.svelte.ts deleted file mode 100644 index f3c30a7..0000000 --- a/apps/web/src/lib/components/ui/data-table/data-table.svelte.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { - type RowData, - type TableOptions, - type TableOptionsResolved, - type TableState, - type Updater, - createTable, -} from "@tanstack/table-core"; - -/** - * Creates a reactive TanStack table object for Svelte. - * @param options Table options to create the table with. - * @returns A reactive table object. - * @example - * ```svelte - * - * - * - * - * {#each table.getHeaderGroups() as headerGroup} - * - * {#each headerGroup.headers as header} - * - * {/each} - * - * {/each} - * - * - *
    - * - *
    - * ``` - */ -export function createSvelteTable(options: TableOptions) { - const resolvedOptions: TableOptionsResolved = mergeObjects( - { - state: {}, - onStateChange() {}, - renderFallbackValue: null, - mergeOptions: ( - defaultOptions: TableOptions, - options: Partial> - ) => { - return mergeObjects(defaultOptions, options); - }, - }, - options - ); - - const table = createTable(resolvedOptions); - let state = $state(table.initialState); - - function updateOptions() { - table.setOptions(() => { - return mergeObjects(resolvedOptions, options, { - state: mergeObjects(state, options.state || {}), - - onStateChange: (updater: Updater) => { - if (updater instanceof Function) state = updater(state); - else state = mergeObjects(state, updater); - - options.onStateChange?.(updater); - }, - }); - }); - } - - updateOptions(); - - $effect.pre(() => { - updateOptions(); - }); - - return table; -} - -type MaybeThunk = T | (() => T | null | undefined); -type Intersection = (T extends [infer H, ...infer R] - ? H & Intersection - : unknown) & {}; - -/** - * Lazily merges several objects (or thunks) while preserving - * getter semantics from every source. - * - * Proxy-based to avoid known WebKit recursion issue. - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function mergeObjects[]>( - ...sources: Sources -): Intersection<{ [K in keyof Sources]: Sources[K] }> { - const resolve = (src: MaybeThunk): T | undefined => - typeof src === "function" ? (src() ?? undefined) : src; - - const findSourceWithKey = (key: PropertyKey) => { - for (let i = sources.length - 1; i >= 0; i--) { - const obj = resolve(sources[i]); - if (obj && key in obj) return obj; - } - return undefined; - }; - - return new Proxy(Object.create(null), { - get(_, key) { - const src = findSourceWithKey(key); - - return src?.[key as never]; - }, - - has(_, key) { - return !!findSourceWithKey(key); - }, - - ownKeys(): (string | symbol)[] { - // eslint-disable-next-line svelte/prefer-svelte-reactivity - const all = new Set(); - for (const s of sources) { - const obj = resolve(s); - if (obj) { - for (const k of Reflect.ownKeys(obj) as (string | symbol)[]) { - all.add(k); - } - } - } - return [...all]; - }, - - getOwnPropertyDescriptor(_, key) { - const src = findSourceWithKey(key); - if (!src) return undefined; - return { - configurable: true, - enumerable: true, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - value: (src as any)[key], - writable: true, - }; - }, - }) as Intersection<{ [K in keyof Sources]: Sources[K] }>; -} diff --git a/apps/web/src/lib/components/ui/data-table/flex-render.svelte b/apps/web/src/lib/components/ui/data-table/flex-render.svelte deleted file mode 100644 index ac82a58..0000000 --- a/apps/web/src/lib/components/ui/data-table/flex-render.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - -{#if typeof content === "string"} - {content} -{:else if content instanceof Function} - - - {@const result = content(context as any)} - {#if result instanceof RenderComponentConfig} - {@const { component: Component, props } = result} - - {:else if result instanceof RenderSnippetConfig} - {@const { snippet, params } = result} - {@render snippet({ ...params, attach })} - {:else} - {result} - {/if} -{/if} diff --git a/apps/web/src/lib/components/ui/data-table/index.ts b/apps/web/src/lib/components/ui/data-table/index.ts deleted file mode 100644 index 5f4e77e..0000000 --- a/apps/web/src/lib/components/ui/data-table/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as FlexRender } from "./flex-render.svelte"; -export { renderComponent, renderSnippet } from "./render-helpers.js"; -export { createSvelteTable } from "./data-table.svelte.js"; diff --git a/apps/web/src/lib/components/ui/data-table/render-helpers.ts b/apps/web/src/lib/components/ui/data-table/render-helpers.ts deleted file mode 100644 index fa036d6..0000000 --- a/apps/web/src/lib/components/ui/data-table/render-helpers.ts +++ /dev/null @@ -1,111 +0,0 @@ -import type { Component, ComponentProps, Snippet } from "svelte"; - -/** - * A helper class to make it easy to identify Svelte components in - * `columnDef.cell` and `columnDef.header` properties. - * - * > NOTE: This class should only be used internally by the adapter. If you're - * reading this and you don't know what this is for, you probably don't need it. - * - * @example - * ```svelte - * {@const result = content(context as any)} - * {#if result instanceof RenderComponentConfig} - * {@const { component: Component, props } = result} - * - * {/if} - * ``` - */ -export class RenderComponentConfig { - component: TComponent; - props: ComponentProps | Record; - constructor( - component: TComponent, - props: ComponentProps | Record = {} - ) { - this.component = component; - this.props = props; - } -} - -/** - * A helper class to make it easy to identify Svelte Snippets in `columnDef.cell` and `columnDef.header` properties. - * - * > NOTE: This class should only be used internally by the adapter. If you're - * reading this and you don't know what this is for, you probably don't need it. - * - * @example - * ```svelte - * {@const result = content(context as any)} - * {#if result instanceof RenderSnippetConfig} - * {@const { snippet, params } = result} - * {@render snippet(params)} - * {/if} - * ``` - */ -export class RenderSnippetConfig { - snippet: Snippet<[TProps]>; - params: TProps; - constructor(snippet: Snippet<[TProps]>, params: TProps) { - this.snippet = snippet; - this.params = params; - } -} - -/** - * A helper function to help create cells from Svelte components through ColumnDef's `cell` and `header` properties. - * - * This is only to be used with Svelte Components - use `renderSnippet` for Svelte Snippets. - * - * @param component A Svelte component - * @param props The props to pass to `component` - * @returns A `RenderComponentConfig` object that helps svelte-table know how to render the header/cell component. - * @example - * ```ts - * // +page.svelte - * const defaultColumns = [ - * columnHelper.accessor('name', { - * header: header => renderComponent(SortHeader, { label: 'Name', header }), - * }), - * columnHelper.accessor('state', { - * header: header => renderComponent(SortHeader, { label: 'State', header }), - * }), - * ] - * ``` - * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} - */ -export function renderComponent< - // eslint-disable-next-line @typescript-eslint/no-explicit-any - T extends Component, - Props extends ComponentProps, ->(component: T, props: Props = {} as Props) { - return new RenderComponentConfig(component, props); -} - -/** - * A helper function to help create cells from Svelte Snippets through ColumnDef's `cell` and `header` properties. - * - * The snippet must only take one parameter. - * - * This is only to be used with Snippets - use `renderComponent` for Svelte Components. - * - * @param snippet - * @param params - * @returns - A `RenderSnippetConfig` object that helps svelte-table know how to render the header/cell snippet. - * @example - * ```ts - * // +page.svelte - * const defaultColumns = [ - * columnHelper.accessor('name', { - * cell: cell => renderSnippet(nameSnippet, { name: cell.row.name }), - * }), - * columnHelper.accessor('state', { - * cell: cell => renderSnippet(stateSnippet, { state: cell.row.state }), - * }), - * ] - * ``` - * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} - */ -export function renderSnippet(snippet: Snippet<[TProps]>, params: TProps = {} as TProps) { - return new RenderSnippetConfig(snippet, params); -} diff --git a/apps/web/src/lib/components/ui/dialog/dialog-close.svelte b/apps/web/src/lib/components/ui/dialog/dialog-close.svelte deleted file mode 100644 index de68f2f..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-close.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-content.svelte b/apps/web/src/lib/components/ui/dialog/dialog-content.svelte deleted file mode 100644 index ff6837d..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-content.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - {@render children?.()} - {#if showCloseButton} - - {#snippet child({ props })} - - {/snippet} - - {/if} - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-description.svelte b/apps/web/src/lib/components/ui/dialog/dialog-description.svelte deleted file mode 100644 index 0102d91..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-description.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-footer.svelte b/apps/web/src/lib/components/ui/dialog/dialog-footer.svelte deleted file mode 100644 index e23160a..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-footer.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - -
    - {@render children?.()} - {#if showCloseButton} - - {#snippet child({ props })} - - {/snippet} - - {/if} -
    diff --git a/apps/web/src/lib/components/ui/dialog/dialog-header.svelte b/apps/web/src/lib/components/ui/dialog/dialog-header.svelte deleted file mode 100644 index c3ce8a2..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-header.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/dialog/dialog-overlay.svelte b/apps/web/src/lib/components/ui/dialog/dialog-overlay.svelte deleted file mode 100644 index 19f69f0..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-overlay.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-portal.svelte b/apps/web/src/lib/components/ui/dialog/dialog-portal.svelte deleted file mode 100644 index ccfa79c..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-title.svelte b/apps/web/src/lib/components/ui/dialog/dialog-title.svelte deleted file mode 100644 index 6ff1a4a..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-title.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog-trigger.svelte b/apps/web/src/lib/components/ui/dialog/dialog-trigger.svelte deleted file mode 100644 index 589ee0c..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog-trigger.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/dialog.svelte b/apps/web/src/lib/components/ui/dialog/dialog.svelte deleted file mode 100644 index 211672c..0000000 --- a/apps/web/src/lib/components/ui/dialog/dialog.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dialog/index.ts b/apps/web/src/lib/components/ui/dialog/index.ts deleted file mode 100644 index 076cef5..0000000 --- a/apps/web/src/lib/components/ui/dialog/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import Root from "./dialog.svelte"; -import Portal from "./dialog-portal.svelte"; -import Title from "./dialog-title.svelte"; -import Footer from "./dialog-footer.svelte"; -import Header from "./dialog-header.svelte"; -import Overlay from "./dialog-overlay.svelte"; -import Content from "./dialog-content.svelte"; -import Description from "./dialog-description.svelte"; -import Trigger from "./dialog-trigger.svelte"; -import Close from "./dialog-close.svelte"; - -export { - Root, - Title, - Portal, - Footer, - Header, - Trigger, - Overlay, - Content, - Description, - Close, - // - Root as Dialog, - Title as DialogTitle, - Portal as DialogPortal, - Footer as DialogFooter, - Header as DialogHeader, - Trigger as DialogTrigger, - Overlay as DialogOverlay, - Content as DialogContent, - Description as DialogDescription, - Close as DialogClose, -}; diff --git a/apps/web/src/lib/components/ui/drawer/drawer-close.svelte b/apps/web/src/lib/components/ui/drawer/drawer-close.svelte deleted file mode 100644 index 95c2479..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-close.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-content.svelte b/apps/web/src/lib/components/ui/drawer/drawer-content.svelte deleted file mode 100644 index 776338d..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-content.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - {@render children?.()} - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-description.svelte b/apps/web/src/lib/components/ui/drawer/drawer-description.svelte deleted file mode 100644 index 2763a1a..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-description.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-footer.svelte b/apps/web/src/lib/components/ui/drawer/drawer-footer.svelte deleted file mode 100644 index 56a1fc6..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-footer.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/drawer/drawer-header.svelte b/apps/web/src/lib/components/ui/drawer/drawer-header.svelte deleted file mode 100644 index 861f956..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-header.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/drawer/drawer-nested.svelte b/apps/web/src/lib/components/ui/drawer/drawer-nested.svelte deleted file mode 100644 index 834af94..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-nested.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-overlay.svelte b/apps/web/src/lib/components/ui/drawer/drawer-overlay.svelte deleted file mode 100644 index 84df1e8..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-overlay.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-portal.svelte b/apps/web/src/lib/components/ui/drawer/drawer-portal.svelte deleted file mode 100644 index 5a0dd74..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-title.svelte b/apps/web/src/lib/components/ui/drawer/drawer-title.svelte deleted file mode 100644 index fc3649b..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-title.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer-trigger.svelte b/apps/web/src/lib/components/ui/drawer/drawer-trigger.svelte deleted file mode 100644 index f1877d8..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer-trigger.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/drawer.svelte b/apps/web/src/lib/components/ui/drawer/drawer.svelte deleted file mode 100644 index 0cb57ff..0000000 --- a/apps/web/src/lib/components/ui/drawer/drawer.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/drawer/index.ts b/apps/web/src/lib/components/ui/drawer/index.ts deleted file mode 100644 index 1656cac..0000000 --- a/apps/web/src/lib/components/ui/drawer/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import Root from "./drawer.svelte"; -import Content from "./drawer-content.svelte"; -import Description from "./drawer-description.svelte"; -import Overlay from "./drawer-overlay.svelte"; -import Footer from "./drawer-footer.svelte"; -import Header from "./drawer-header.svelte"; -import Title from "./drawer-title.svelte"; -import NestedRoot from "./drawer-nested.svelte"; -import Close from "./drawer-close.svelte"; -import Trigger from "./drawer-trigger.svelte"; -import Portal from "./drawer-portal.svelte"; - -export { - Root, - NestedRoot, - Content, - Description, - Overlay, - Footer, - Header, - Title, - Trigger, - Portal, - Close, - - // - Root as Drawer, - NestedRoot as DrawerNestedRoot, - Content as DrawerContent, - Description as DrawerDescription, - Overlay as DrawerOverlay, - Footer as DrawerFooter, - Header as DrawerHeader, - Title as DrawerTitle, - Trigger as DrawerTrigger, - Portal as DrawerPortal, - Close as DrawerClose, -}; diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte deleted file mode 100644 index e0e1971..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte deleted file mode 100644 index a81b48d..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +++ /dev/null @@ -1,44 +0,0 @@ - - - - {#snippet children({ checked, indeterminate })} - - {#if indeterminate} - - {:else if checked} - - {/if} - - {@render childrenProp?.()} - {/snippet} - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte deleted file mode 100644 index 261a5b0..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte deleted file mode 100644 index 433540f..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte deleted file mode 100644 index aca1f7b..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte deleted file mode 100644 index c425190..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte deleted file mode 100644 index e0c534f..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte deleted file mode 100644 index 274cfef..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte deleted file mode 100644 index 189aef4..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte deleted file mode 100644 index c8aa07b..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - {#snippet children({ checked })} - - {#if checked} - - {/if} - - {@render childrenProp?.({ checked })} - {/snippet} - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte deleted file mode 100644 index 90f1b6f..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte deleted file mode 100644 index ed7cc85..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte deleted file mode 100644 index b5750d4..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte deleted file mode 100644 index fab0275..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - {@render children?.()} - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte deleted file mode 100644 index f044581..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte deleted file mode 100644 index cb05344..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte b/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte deleted file mode 100644 index cb4bc62..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/dropdown-menu/index.ts b/apps/web/src/lib/components/ui/dropdown-menu/index.ts deleted file mode 100644 index 7850c6a..0000000 --- a/apps/web/src/lib/components/ui/dropdown-menu/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import Root from "./dropdown-menu.svelte"; -import Sub from "./dropdown-menu-sub.svelte"; -import CheckboxGroup from "./dropdown-menu-checkbox-group.svelte"; -import CheckboxItem from "./dropdown-menu-checkbox-item.svelte"; -import Content from "./dropdown-menu-content.svelte"; -import Group from "./dropdown-menu-group.svelte"; -import Item from "./dropdown-menu-item.svelte"; -import Label from "./dropdown-menu-label.svelte"; -import RadioGroup from "./dropdown-menu-radio-group.svelte"; -import RadioItem from "./dropdown-menu-radio-item.svelte"; -import Separator from "./dropdown-menu-separator.svelte"; -import Shortcut from "./dropdown-menu-shortcut.svelte"; -import Trigger from "./dropdown-menu-trigger.svelte"; -import SubContent from "./dropdown-menu-sub-content.svelte"; -import SubTrigger from "./dropdown-menu-sub-trigger.svelte"; -import GroupHeading from "./dropdown-menu-group-heading.svelte"; -import Portal from "./dropdown-menu-portal.svelte"; - -export { - CheckboxGroup, - CheckboxItem, - Content, - Portal, - Root as DropdownMenu, - CheckboxGroup as DropdownMenuCheckboxGroup, - CheckboxItem as DropdownMenuCheckboxItem, - Content as DropdownMenuContent, - Portal as DropdownMenuPortal, - Group as DropdownMenuGroup, - Item as DropdownMenuItem, - Label as DropdownMenuLabel, - RadioGroup as DropdownMenuRadioGroup, - RadioItem as DropdownMenuRadioItem, - Separator as DropdownMenuSeparator, - Shortcut as DropdownMenuShortcut, - Sub as DropdownMenuSub, - SubContent as DropdownMenuSubContent, - SubTrigger as DropdownMenuSubTrigger, - Trigger as DropdownMenuTrigger, - GroupHeading as DropdownMenuGroupHeading, - Group, - GroupHeading, - Item, - Label, - RadioGroup, - RadioItem, - Root, - Separator, - Shortcut, - Sub, - SubContent, - SubTrigger, - Trigger, -}; diff --git a/apps/web/src/lib/components/ui/empty/empty-content.svelte b/apps/web/src/lib/components/ui/empty/empty-content.svelte deleted file mode 100644 index 607b9f7..0000000 --- a/apps/web/src/lib/components/ui/empty/empty-content.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/empty-description.svelte b/apps/web/src/lib/components/ui/empty/empty-description.svelte deleted file mode 100644 index 024228b..0000000 --- a/apps/web/src/lib/components/ui/empty/empty-description.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", - className - )} - {...restProps} -> - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/empty-header.svelte b/apps/web/src/lib/components/ui/empty/empty-header.svelte deleted file mode 100644 index 7112f66..0000000 --- a/apps/web/src/lib/components/ui/empty/empty-header.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/empty-media.svelte b/apps/web/src/lib/components/ui/empty/empty-media.svelte deleted file mode 100644 index 95819a4..0000000 --- a/apps/web/src/lib/components/ui/empty/empty-media.svelte +++ /dev/null @@ -1,41 +0,0 @@ - - - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/empty-title.svelte b/apps/web/src/lib/components/ui/empty/empty-title.svelte deleted file mode 100644 index 8d26fee..0000000 --- a/apps/web/src/lib/components/ui/empty/empty-title.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/empty.svelte b/apps/web/src/lib/components/ui/empty/empty.svelte deleted file mode 100644 index 3aef062..0000000 --- a/apps/web/src/lib/components/ui/empty/empty.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/empty/index.ts b/apps/web/src/lib/components/ui/empty/index.ts deleted file mode 100644 index ae4c106..0000000 --- a/apps/web/src/lib/components/ui/empty/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import Root from "./empty.svelte"; -import Header from "./empty-header.svelte"; -import Media from "./empty-media.svelte"; -import Title from "./empty-title.svelte"; -import Description from "./empty-description.svelte"; -import Content from "./empty-content.svelte"; - -export { - Root, - Header, - Media, - Title, - Description, - Content, - // - Root as Empty, - Header as EmptyHeader, - Media as EmptyMedia, - Title as EmptyTitle, - Description as EmptyDescription, - Content as EmptyContent, -}; diff --git a/apps/web/src/lib/components/ui/field/field-content.svelte b/apps/web/src/lib/components/ui/field/field-content.svelte deleted file mode 100644 index 1545c43..0000000 --- a/apps/web/src/lib/components/ui/field/field-content.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/field/field-description.svelte b/apps/web/src/lib/components/ui/field/field-description.svelte deleted file mode 100644 index 7518366..0000000 --- a/apps/web/src/lib/components/ui/field/field-description.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - -

    a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", - className - )} - {...restProps} -> - {@render children?.()} -

    diff --git a/apps/web/src/lib/components/ui/field/field-error.svelte b/apps/web/src/lib/components/ui/field/field-error.svelte deleted file mode 100644 index 2381b36..0000000 --- a/apps/web/src/lib/components/ui/field/field-error.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -{#if hasContent} - -{/if} diff --git a/apps/web/src/lib/components/ui/field/field-group.svelte b/apps/web/src/lib/components/ui/field/field-group.svelte deleted file mode 100644 index 3795195..0000000 --- a/apps/web/src/lib/components/ui/field/field-group.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/field/field-label.svelte b/apps/web/src/lib/components/ui/field/field-label.svelte deleted file mode 100644 index 766a42b..0000000 --- a/apps/web/src/lib/components/ui/field/field-label.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/field/field-legend.svelte b/apps/web/src/lib/components/ui/field/field-legend.svelte deleted file mode 100644 index 75bf8d2..0000000 --- a/apps/web/src/lib/components/ui/field/field-legend.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/field/field-separator.svelte b/apps/web/src/lib/components/ui/field/field-separator.svelte deleted file mode 100644 index 5aa7739..0000000 --- a/apps/web/src/lib/components/ui/field/field-separator.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - -
    - - {#if children} - - {@render children()} - - {/if} -
    diff --git a/apps/web/src/lib/components/ui/field/field-set.svelte b/apps/web/src/lib/components/ui/field/field-set.svelte deleted file mode 100644 index 27ee330..0000000 --- a/apps/web/src/lib/components/ui/field/field-set.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    [data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col", className)} - {...restProps} -> - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/field/field-title.svelte b/apps/web/src/lib/components/ui/field/field-title.svelte deleted file mode 100644 index b7a4762..0000000 --- a/apps/web/src/lib/components/ui/field/field-title.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/field/field.svelte b/apps/web/src/lib/components/ui/field/field.svelte deleted file mode 100644 index 03d23c0..0000000 --- a/apps/web/src/lib/components/ui/field/field.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - - - -
    - {@render children?.()} -
    diff --git a/apps/web/src/lib/components/ui/field/index.ts b/apps/web/src/lib/components/ui/field/index.ts deleted file mode 100644 index a644a95..0000000 --- a/apps/web/src/lib/components/ui/field/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Field from "./field.svelte"; -import Set from "./field-set.svelte"; -import Legend from "./field-legend.svelte"; -import Group from "./field-group.svelte"; -import Content from "./field-content.svelte"; -import Label from "./field-label.svelte"; -import Title from "./field-title.svelte"; -import Description from "./field-description.svelte"; -import Separator from "./field-separator.svelte"; -import Error from "./field-error.svelte"; - -export { - Field, - Set, - Legend, - Group, - Content, - Label, - Title, - Description, - Separator, - Error, - // - Set as FieldSet, - Legend as FieldLegend, - Group as FieldGroup, - Content as FieldContent, - Label as FieldLabel, - Title as FieldTitle, - Description as FieldDescription, - Separator as FieldSeparator, - Error as FieldError, -}; diff --git a/apps/web/src/lib/components/ui/form/form-button.svelte b/apps/web/src/lib/components/ui/form/form-button.svelte deleted file mode 100644 index 48d3936..0000000 --- a/apps/web/src/lib/components/ui/form/form-button.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/input-group/input-group-input.svelte b/apps/web/src/lib/components/ui/input-group/input-group-input.svelte deleted file mode 100644 index 316c0cb..0000000 --- a/apps/web/src/lib/components/ui/input-group/input-group-input.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/input-group/input-group-text.svelte b/apps/web/src/lib/components/ui/input-group/input-group-text.svelte deleted file mode 100644 index 77907c6..0000000 --- a/apps/web/src/lib/components/ui/input-group/input-group-text.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - {@render children?.()} - diff --git a/apps/web/src/lib/components/ui/input-group/input-group-textarea.svelte b/apps/web/src/lib/components/ui/input-group/input-group-textarea.svelte deleted file mode 100644 index 9fbabe6..0000000 --- a/apps/web/src/lib/components/ui/input-group/input-group-textarea.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/toggle-group/index.ts b/apps/web/src/lib/components/ui/toggle-group/index.ts deleted file mode 100644 index 12b14b9..0000000 --- a/apps/web/src/lib/components/ui/toggle-group/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import Root from "./toggle-group.svelte"; -import Item from "./toggle-group-item.svelte"; - -export { - Root, - Item, - // - Root as ToggleGroup, - Item as ToggleGroupItem, -}; diff --git a/apps/web/src/lib/components/ui/toggle-group/toggle-group-item.svelte b/apps/web/src/lib/components/ui/toggle-group/toggle-group-item.svelte deleted file mode 100644 index df1c00e..0000000 --- a/apps/web/src/lib/components/ui/toggle-group/toggle-group-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/toggle-group/toggle-group.svelte b/apps/web/src/lib/components/ui/toggle-group/toggle-group.svelte deleted file mode 100644 index 98b062b..0000000 --- a/apps/web/src/lib/components/ui/toggle-group/toggle-group.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - diff --git a/apps/web/src/lib/components/ui/toggle/index.ts b/apps/web/src/lib/components/ui/toggle/index.ts deleted file mode 100644 index 8cb2936..0000000 --- a/apps/web/src/lib/components/ui/toggle/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import Root from "./toggle.svelte"; -export { - toggleVariants, - type ToggleSize, - type ToggleVariant, - type ToggleVariants, -} from "./toggle.svelte"; - -export { - Root, - // - Root as Toggle, -}; diff --git a/apps/web/src/lib/components/ui/toggle/toggle.svelte b/apps/web/src/lib/components/ui/toggle/toggle.svelte deleted file mode 100644 index a8cfb21..0000000 --- a/apps/web/src/lib/components/ui/toggle/toggle.svelte +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/apps/web/src/lib/components/ui/tooltip/index.ts b/apps/web/src/lib/components/ui/tooltip/index.ts deleted file mode 100644 index 1718604..0000000 --- a/apps/web/src/lib/components/ui/tooltip/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import Root from "./tooltip.svelte"; -import Trigger from "./tooltip-trigger.svelte"; -import Content from "./tooltip-content.svelte"; -import Provider from "./tooltip-provider.svelte"; -import Portal from "./tooltip-portal.svelte"; - -export { - Root, - Trigger, - Content, - Provider, - Portal, - // - Root as Tooltip, - Content as TooltipContent, - Trigger as TooltipTrigger, - Provider as TooltipProvider, - Portal as TooltipPortal, -}; diff --git a/apps/web/src/lib/components/ui/tooltip/tooltip-content.svelte b/apps/web/src/lib/components/ui/tooltip/tooltip-content.svelte deleted file mode 100644 index 0cf0694..0000000 --- a/apps/web/src/lib/components/ui/tooltip/tooltip-content.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - - - - {@render children?.()} - - {#snippet child({ props })} -
    - {/snippet} -
    -
    -
    diff --git a/apps/web/src/lib/components/ui/tooltip/tooltip-portal.svelte b/apps/web/src/lib/components/ui/tooltip/tooltip-portal.svelte deleted file mode 100644 index d234f7d..0000000 --- a/apps/web/src/lib/components/ui/tooltip/tooltip-portal.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/tooltip/tooltip-provider.svelte b/apps/web/src/lib/components/ui/tooltip/tooltip-provider.svelte deleted file mode 100644 index 6dba9a6..0000000 --- a/apps/web/src/lib/components/ui/tooltip/tooltip-provider.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/tooltip/tooltip-trigger.svelte b/apps/web/src/lib/components/ui/tooltip/tooltip-trigger.svelte deleted file mode 100644 index 1acdaa4..0000000 --- a/apps/web/src/lib/components/ui/tooltip/tooltip-trigger.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/tooltip/tooltip.svelte b/apps/web/src/lib/components/ui/tooltip/tooltip.svelte deleted file mode 100644 index 44bee9f..0000000 --- a/apps/web/src/lib/components/ui/tooltip/tooltip.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/apps/web/src/lib/components/ui/underline-tabs/index.ts b/apps/web/src/lib/components/ui/underline-tabs/index.ts deleted file mode 100644 index d5cd5fd..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Root from '$lib/components/ui/underline-tabs/underline-tabs.svelte'; -import Content from '$lib/components/ui/underline-tabs/underline-tabs-content.svelte'; -import List from '$lib/components/ui/underline-tabs/underline-tabs-list.svelte'; -import Trigger from '$lib/components/ui/underline-tabs/underline-tabs-trigger.svelte'; - -export { - Root, - Content, - List, - Trigger, - // - Root as UnderlineTabs, - Content as UnderlineTabsContent, - List as UnderlineTabsList, - Trigger as UnderlineTabsTrigger -}; diff --git a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-content.svelte b/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-content.svelte deleted file mode 100644 index d58f297..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-content.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-list.svelte b/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-list.svelte deleted file mode 100644 index 54d2bc6..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-list.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - {@render children?.()} - - - diff --git a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-trigger.svelte b/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-trigger.svelte deleted file mode 100644 index efb1f8a..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs-trigger.svelte +++ /dev/null @@ -1,61 +0,0 @@ - - -
    - - {@render children?.()} - - {#if state.rootState.hoveredTab === value} -
    - {/if} - {#if state.rootState.opts.value.current === value} -
    - {/if} -
    diff --git a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte b/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte deleted file mode 100644 index 881f141..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte.ts b/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte.ts deleted file mode 100644 index b176b9a..0000000 --- a/apps/web/src/lib/components/ui/underline-tabs/underline-tabs.svelte.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Context } from 'runed'; -import type { ReadableBoxedValues, WritableBoxedValues } from 'svelte-toolbelt'; -import type { Tabs as TabsPrimitive } from 'bits-ui'; -import { crossfade } from 'svelte/transition'; - -export const [send, receive] = crossfade({ - duration: (d) => Math.sqrt(d * 200) -}); - -type UnderlineTabsRootProps = WritableBoxedValues<{ - value: string; -}> & - ReadableBoxedValues<{ - id: string; - }>; - -class UnderlineTabsRootState { - hoveredTab = $state(null); - isHovered = $state(false); - constructor(readonly opts: UnderlineTabsRootProps) { - this.hoveredTab = this.opts.value.current; - } -} - -type UnderlineTabsTriggerProps = ReadableBoxedValues<{ - value: string; - onmouseenter: TabsPrimitive.TriggerProps['onmouseenter']; - onmouseleave: TabsPrimitive.TriggerProps['onmouseleave']; - onfocus: TabsPrimitive.TriggerProps['onfocus']; - onblur: TabsPrimitive.TriggerProps['onblur']; -}>; - -class UnderlineTabsTriggerState { - constructor( - readonly opts: UnderlineTabsTriggerProps, - readonly rootState: UnderlineTabsRootState - ) {} - - handleFocus() { - this.rootState.isHovered = true; - this.rootState.hoveredTab = this.opts.value.current; - } - - handleBlur() { - if (this.rootState.hoveredTab === this.opts.value.current) { - this.rootState.isHovered = false; - } - } - - onmouseenter(e: Parameters>[0]) { - this.handleFocus(); - this.opts.onmouseenter.current?.(e); - } - - onmouseleave(e: Parameters>[0]) { - this.handleBlur(); - this.opts.onmouseleave.current?.(e); - } - - onfocus(e: Parameters>[0]) { - this.handleFocus(); - this.opts.onfocus.current?.(e); - } - - onblur(e: Parameters>[0]) { - this.handleBlur(); - - this.opts.onblur.current?.(e); - } - - props = $derived.by(() => ({ - value: this.opts.value.current, - onmouseenter: this.onmouseenter.bind(this), - onmouseleave: this.onmouseleave.bind(this), - onfocus: this.onfocus.bind(this), - onblur: this.onblur.bind(this) - })); -} - -const ctx = new Context('underline-tabs-root-ctx'); - -export function useUnderlineTabs(opts: UnderlineTabsRootProps) { - return ctx.set(new UnderlineTabsRootState(opts)); -} - -export function useUnderlineTabsTrigger(opts: UnderlineTabsTriggerProps) { - return new UnderlineTabsTriggerState(opts, ctx.get()); -} diff --git a/apps/web/src/lib/hooks/is-mac.svelte.ts b/apps/web/src/lib/hooks/is-mac.svelte.ts deleted file mode 100644 index 512a5ed..0000000 --- a/apps/web/src/lib/hooks/is-mac.svelte.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** Attempts to determine if a user is on a Mac using `navigator.userAgent`. */ -export const isMac = navigator.userAgent.includes('Mac'); - -/** `⌘` for mac or `Ctrl` for windows */ -export const cmdOrCtrl = isMac ? '⌘' : 'Ctrl'; -/** `⌥` for mac or `Alt` for windows */ -export const optionOrAlt = isMac ? '⌥' : 'Alt'; diff --git a/apps/web/src/lib/hooks/is-mobile.svelte.ts b/apps/web/src/lib/hooks/is-mobile.svelte.ts deleted file mode 100644 index 4829c00..0000000 --- a/apps/web/src/lib/hooks/is-mobile.svelte.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MediaQuery } from "svelte/reactivity"; - -const DEFAULT_MOBILE_BREAKPOINT = 768; - -export class IsMobile extends MediaQuery { - constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) { - super(`max-width: ${breakpoint - 1}px`); - } -} diff --git a/apps/web/src/lib/hooks/use-auto-scroll.svelte.ts b/apps/web/src/lib/hooks/use-auto-scroll.svelte.ts deleted file mode 100644 index 607fb80..0000000 --- a/apps/web/src/lib/hooks/use-auto-scroll.svelte.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** Use this on a vertically scrollable container to ensure that it automatically scrolls to the bottom of the content. - * - * ## Usage - * ```svelte - * - * - *
    - *
    - * {@render children?.()} - *
    - * {#if !autoScroll.isAtBottom} - * - * {/if} - *
    - * ``` - */ -export class UseAutoScroll { - #ref = $state(); - #scrollY: number = $state(0); - #userHasScrolled = $state(false); - private lastScrollHeight = 0; - - // This sets everything up once #ref is bound - set ref(ref: HTMLElement | undefined) { - this.#ref = ref; - - if (!this.#ref) return; - - this.lastScrollHeight = this.#ref.scrollHeight; - - // start from bottom or start position - this.#ref.scrollTo(0, this.#scrollY ? this.#scrollY : this.#ref.scrollHeight); - - this.#ref.addEventListener('scroll', () => { - if (!this.#ref) return; - - this.#scrollY = this.#ref.scrollTop; - - this.disableAutoScroll(); - }); - - window.addEventListener('resize', () => { - this.scrollToBottom(true); - }); - - // should detect when something changed that effected the scroll height - const observer = new MutationObserver(() => { - if (!this.#ref) return; - - if (this.#ref.scrollHeight !== this.lastScrollHeight) { - this.scrollToBottom(true); - } - - this.lastScrollHeight = this.#ref.scrollHeight; - }); - - observer.observe(this.#ref, { childList: true, subtree: true }); - } - - get ref() { - return this.#ref; - } - - get scrollY() { - return this.#scrollY; - } - - /** Checks if the container is scrolled to the bottom */ - get isAtBottom() { - if (!this.#ref) return true; - - return this.#scrollY + this.#ref.offsetHeight >= this.#ref.scrollHeight; - } - - /** Disables auto scrolling until the container is scrolled back to the bottom */ - disableAutoScroll() { - if (this.isAtBottom) { - this.#userHasScrolled = false; - } else { - this.#userHasScrolled = true; - } - } - - /** Scrolls the container to the bottom */ - scrollToBottom(auto = false) { - if (!this.#ref) return; - - // don't auto scroll if user has scrolled - if (auto && this.#userHasScrolled) return; - - this.#ref.scrollTo(0, this.#ref.scrollHeight); - } -} diff --git a/apps/web/src/lib/hooks/use-clipboard.svelte.ts b/apps/web/src/lib/hooks/use-clipboard.svelte.ts deleted file mode 100644 index ab1b7d1..0000000 --- a/apps/web/src/lib/hooks/use-clipboard.svelte.ts +++ /dev/null @@ -1,99 +0,0 @@ -type Options = { - /** The time before the copied status is reset. */ - delay: number; -}; - -/** Use this hook to copy text to the clipboard and show a copied state. - * - * ## Usage - * ```svelte - * - * - * - * ``` - * - */ -export class UseClipboard { - #copiedStatus = $state<'success' | 'failure'>(); - private delay: number; - private timeout: ReturnType | undefined = undefined; - - constructor({ delay = 500 }: Partial = {}) { - this.delay = delay; - } - - /** Copies the given text to the users clipboard. - * - * ## Usage - * ```ts - * clipboard.copy('Hello, World!'); - * ``` - * - * @param text - * @returns - */ - async copy(text: string) { - if (this.timeout) { - this.#copiedStatus = undefined; - clearTimeout(this.timeout); - } - - this.#copiedStatus = await copyText(text); - - this.timeout = setTimeout(() => { - this.#copiedStatus = undefined; - }, this.delay); - - return this.#copiedStatus; - } - - /** true when the user has just copied to the clipboard. */ - get copied() { - return this.#copiedStatus === 'success'; - } - - /** Indicates whether a copy has occurred - * and gives a status of either `success` or `failure`. */ - get status() { - return this.#copiedStatus; - } -} - -export async function copyText(text: string): Promise<'success' | 'failure'> { - try { - if (navigator.clipboard && window.isSecureContext) { - await navigator.clipboard.writeText(text); - return 'success'; - } - - // when navigator.clipboard is unavailable we fallback to this for wider browser compatibility - const textArea = document.createElement('textarea'); - textArea.value = text; - textArea.style.position = 'fixed'; - textArea.style.top = '0'; - textArea.style.left = '0'; - document.body.appendChild(textArea); - textArea.focus(); - textArea.select(); - - const successful = document.execCommand('copy'); - - document.body.removeChild(textArea); - - return successful ? 'success' : 'failure'; - } catch { - return 'failure'; - } -} diff --git a/apps/web/src/lib/index.ts b/apps/web/src/lib/index.ts deleted file mode 100644 index 856f2b6..0000000 --- a/apps/web/src/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/apps/web/src/lib/nanoid.ts b/apps/web/src/lib/nanoid.ts deleted file mode 100644 index 63c4615..0000000 --- a/apps/web/src/lib/nanoid.ts +++ /dev/null @@ -1,14 +0,0 @@ -// nanoid code -const urlAlphabet = - 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' -export const nanoid = (size = 32) => { - let id = '' - let bytes = crypto.getRandomValues(new Uint8Array((size |= 0))) - while (size--) { - // Using the bitwise AND operator to "cap" the value of - // the random byte from 255 to 63, in that way we can make sure - // that the value will be a valid index for the "chars" string. - id += urlAlphabet[bytes[size] & 63] - } - return id -} diff --git a/apps/web/src/lib/utils.ts b/apps/web/src/lib/utils.ts deleted file mode 100644 index 97525cc..0000000 --- a/apps/web/src/lib/utils.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { type ClassValue, clsx } from 'clsx'; -import { twMerge } from 'tailwind-merge'; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type WithoutChild = T extends { child?: any } ? Omit : T; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type WithoutChildren = T extends { children?: any } ? Omit : T; -export type WithoutChildrenOrChild = WithoutChildren>; -export type WithElementRef = T & { ref?: U | null }; diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte deleted file mode 100644 index 58b2f4f..0000000 --- a/apps/web/src/routes/+layout.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -{@render children()} diff --git a/apps/web/src/routes/+page.svelte b/apps/web/src/routes/+page.svelte deleted file mode 100644 index cc88df0..0000000 --- a/apps/web/src/routes/+page.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

    Welcome to SvelteKit

    -

    Visit svelte.dev/docs/kit to read the documentation

    diff --git a/apps/web/src/routes/layout.css b/apps/web/src/routes/layout.css deleted file mode 100644 index fdd558a..0000000 --- a/apps/web/src/routes/layout.css +++ /dev/null @@ -1,190 +0,0 @@ -@import 'tailwindcss'; -@import "tw-animate-css"; -@import "@fontsource-variable/geist"; - -@custom-variant dark (&:is(.dark *)); - -:root { - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.809 0.105 251.813); - --chart-2: oklch(0.623 0.214 259.815); - --chart-3: oklch(0.546 0.245 262.881); - --chart-4: oklch(0.488 0.243 264.376); - --chart-5: oklch(0.424 0.199 265.638); - --radius: 0.625rem; - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.809 0.105 251.813); - --chart-2: oklch(0.623 0.214 259.815); - --chart-3: oklch(0.546 0.245 262.881); - --chart-4: oklch(0.488 0.243 264.376); - --chart-5: oklch(0.424 0.199 265.638); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); -} - -@theme inline { - --font-sans: 'Geist Variable', sans-serif; - --color-sidebar-ring: var(--sidebar-ring); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar: var(--sidebar); - --color-chart-5: var(--chart-5); - --color-chart-4: var(--chart-4); - --color-chart-3: var(--chart-3); - --color-chart-2: var(--chart-2); - --color-chart-1: var(--chart-1); - --color-ring: var(--ring); - --color-input: var(--input); - --color-border: var(--border); - --color-destructive: var(--destructive); - --color-accent-foreground: var(--accent-foreground); - --color-accent: var(--accent); - --color-muted-foreground: var(--muted-foreground); - --color-muted: var(--muted); - --color-secondary-foreground: var(--secondary-foreground); - --color-secondary: var(--secondary); - --color-primary-foreground: var(--primary-foreground); - --color-primary: var(--primary); - --color-popover-foreground: var(--popover-foreground); - --color-popover: var(--popover); - --color-card-foreground: var(--card-foreground); - --color-card: var(--card); - --color-foreground: var(--foreground); - --color-background: var(--background); - --radius-sm: calc(var(--radius) * 0.6); - --radius-md: calc(var(--radius) * 0.8); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) * 1.4); - --radius-2xl: calc(var(--radius) * 1.8); - --radius-3xl: calc(var(--radius) * 2.2); - --radius-4xl: calc(var(--radius) * 2.6); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } - html { - @apply font-sans; - } -} - -@custom-variant data-open { - &:where([data-state="open"]), &:where([data-open]:not([data-open="false"])) { - @slot; - } -} - -@custom-variant data-closed { - &:where([data-state="closed"]), &:where([data-closed]:not([data-closed="false"])) { - @slot; - } -} - -@custom-variant data-checked { - &:where([data-state="checked"]), &:where([data-checked]:not([data-checked="false"])) { - @slot; - } -} - -@custom-variant data-unchecked { - &:where([data-state="unchecked"]), &:where([data-unchecked]:not([data-unchecked="false"])) { - @slot; - } -} - -@custom-variant data-selected { - &:where([data-selected]) { - @slot; - } -} - -@custom-variant data-disabled { - &:where([data-disabled="true"]), &:where([data-disabled]:not([data-disabled="false"])) { - @slot; - } -} - -@custom-variant data-active { - &:where([data-state="active"]), &:where([data-active]:not([data-active="false"])) { - @slot; - } -} - -@custom-variant data-horizontal { - &:where([data-orientation="horizontal"]) { - @slot; - } -} - -@custom-variant data-vertical { - &:where([data-orientation="vertical"]) { - @slot; - } -} - -@utility no-scrollbar { - -ms-overflow-style: none; - scrollbar-width: none; - &::-webkit-scrollbar { - display: none; - } -} diff --git a/apps/web/src/routes/login/+page.svelte b/apps/web/src/routes/login/+page.svelte deleted file mode 100644 index b94dabe..0000000 --- a/apps/web/src/routes/login/+page.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    -
    - -
    -
    diff --git a/apps/web/static/placeholder.svg b/apps/web/static/placeholder.svg deleted file mode 100644 index e763910..0000000 --- a/apps/web/static/placeholder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/web/static/robots.txt b/apps/web/static/robots.txt deleted file mode 100644 index b6dd667..0000000 --- a/apps/web/static/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# allow crawling everything by default -User-agent: * -Disallow: diff --git a/apps/web/svelte.config.js b/apps/web/svelte.config.js deleted file mode 100644 index 10349ae..0000000 --- a/apps/web/svelte.config.js +++ /dev/null @@ -1,16 +0,0 @@ -import adapter from '@sveltejs/adapter-static' - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - kit: { - adapter: adapter({ - fallback: '200.html', - }), - }, - vitePlugin: { - dynamicCompileOptions: ({ filename }) => - filename.includes('node_modules') ? undefined : { runes: true }, - }, -} - -export default config diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json deleted file mode 100644 index 2c2ed3c..0000000 --- a/apps/web/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "rewriteRelativeImportExtensions": true, - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // To make changes to top-level options such as include and exclude, we recommend extending - // the generated config; see https://svelte.dev/docs/kit/configuration#typescript -} diff --git a/apps/web/vercel.json b/apps/web/vercel.json deleted file mode 100644 index b20d2cf..0000000 --- a/apps/web/vercel.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "https://openapi.vercel.sh/vercel.json", - "headers": [ - { - "source": "/", - "headers": [ - { - "key": "Cache-Control", - "value": "public, max-age=0, must-revalidate" - } - ] - } - ], - "cleanUrls": true, - "rewrites": [{ "source": "/(.*)", "destination": "/200" }] -} diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts deleted file mode 100644 index 56f40c7..0000000 --- a/apps/web/vite.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import tailwindcss from '@tailwindcss/vite'; -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vite'; - -export default defineConfig({ plugins: [tailwindcss(), sveltekit()] });