From 909e9ae48a7c36294a695fe722617db21499d53d Mon Sep 17 00:00:00 2001 From: alikia2x Date: Sat, 6 Sep 2025 03:11:37 +0800 Subject: [PATCH] add: the full song page UI --- bun.lock | 108 +- packages/solid/app.config.ts | 5 +- packages/solid/drizzle-cred.config.ts | 12 +- packages/solid/drizzle-main.config.ts | 12 +- packages/solid/package.json | 9 +- packages/solid/postcss.config.mjs | 9 - packages/solid/postcss.config.ts | 6 + .../fonts/IBMPlexSansCondDigits-Medium.woff2 | Bin 0 -> 2204 bytes packages/solid/src/app.css | 178 +- packages/solid/src/components/icons/Arrow.tsx | 12 + .../solid/src/components/icons/History.tsx | 12 + packages/solid/src/components/icons/Link.tsx | 12 + packages/solid/src/components/icons/Music.tsx | 4 +- .../solid/src/components/icons/Search.tsx | 8 +- .../solid/src/components/icons/StarBadges.tsx | 34 + packages/solid/src/components/icons/index.tsx | 2 +- .../solid/src/components/icons/types.d.ts | 2 +- packages/solid/src/components/layout/Body.tsx | 2 +- .../components/layout/Navigation/Desktop.tsx | 10 +- .../components/layout/Navigation/Mobile.tsx | 27 +- .../src/components/loginStatusContext.tsx | 4 +- .../solid/src/components/requestContext.tsx | 10 +- .../solid/src/components/song/TabSwitcher.tsx | 15 +- .../src/components/utils/DynamicImage.tsx | 4 +- .../src/drizzle/cred/meta/0000_snapshot.json | 698 ++--- .../solid/src/drizzle/cred/meta/_journal.json | 24 +- packages/solid/src/drizzle/cred/relations.ts | 3 +- packages/solid/src/drizzle/cred/schema.ts | 132 +- packages/solid/src/drizzle/index.ts | 4 +- .../src/drizzle/main/meta/0000_snapshot.json | 2774 ++++++++--------- .../solid/src/drizzle/main/meta/_journal.json | 24 +- packages/solid/src/drizzle/main/relations.ts | 3 +- packages/solid/src/drizzle/main/schema.ts | 472 ++- packages/solid/src/drizzle/outerSchema.d.ts | 2 +- packages/solid/src/entry-server.tsx | 4 +- packages/solid/src/lib/dbCache.ts | 2 +- .../src/misc/postcss-calc-keyword-polyfill.js | 66 +- packages/solid/src/routes/[...404].tsx | 4 +- .../solid/src/routes/en/song/[id]/info.tsx | 4 +- packages/solid/src/routes/index.tsx | 21 +- packages/solid/src/routes/song/[id]/_info.tsx | 1 - packages/solid/src/routes/song/[id]/info.tsx | 313 +- packages/solid/tailwind.config.ts | 56 + 43 files changed, 2883 insertions(+), 2221 deletions(-) delete mode 100644 packages/solid/postcss.config.mjs create mode 100644 packages/solid/postcss.config.ts create mode 100644 packages/solid/public/fonts/IBMPlexSansCondDigits-Medium.woff2 create mode 100644 packages/solid/src/components/icons/Arrow.tsx create mode 100644 packages/solid/src/components/icons/History.tsx create mode 100644 packages/solid/src/components/icons/Link.tsx create mode 100644 packages/solid/src/components/icons/StarBadges.tsx create mode 100644 packages/solid/tailwind.config.ts diff --git a/bun.lock b/bun.lock index 9a51fd1..72677b2 100644 --- a/bun.lock +++ b/bun.lock @@ -71,12 +71,11 @@ "packages/solid": { "name": "solid", "dependencies": { - "@m3-components/solid": "0.2.2", + "@m3-components/solid": "0.2.6", "@solid-primitives/media": "^2.3.3", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.3", "@solidjs/start": "^1.1.7", - "@tailwindcss/vite": "^4.1.11", "@types/luxon": "^3.7.1", "@ungap/has-own": "^0.1.1", "animejs": "^4.1.2", @@ -88,7 +87,7 @@ "postgres": "^3.4.7", "solid-js": "^1.9.8", "tailwind-variants": "^1.0.0", - "tailwindcss": "^4.1.11", + "tailwindcss": "3", "vinxi": "^0.5.8", }, "devDependencies": { @@ -96,6 +95,7 @@ "@csstools/postcss-cascade-layers": "^5.0.2", "@csstools/postcss-oklab-function": "^4.0.10", "@tailwindcss/postcss": "^4.1.11", + "autoprefixer": "^10.4.21", "drizzle-kit": "^0.31.4", "postcss": "^8.5.6", "tsx": "^4.20.3", @@ -349,7 +349,7 @@ "@koshnic/ratelimit": ["@koshnic/ratelimit@1.0.3", "", { "dependencies": { "@types/chai": "^4.3.9", "@types/mocha": "^10.0.3", "chai": "^4.3.10", "ioredis": "^5.3.2", "mocha": "^10.2.0" } }, "sha512-cfDcSc+I+M4hNM+/4M+lfn8UuTq4OEFKl78ThOcGNaO7g8tWb1vm2qVpV1p1loYao1mqk00NBNwHQu2E/qFq2g=="], - "@m3-components/solid": ["@m3-components/solid@0.2.2", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "animejs": "^4.0.2", "solid-js": "^1.9.5", "tailwind-variants": "^1.0.0" } }, "sha512-VRIxWCvBwTbVvf52aTG7BzRHaqAVeIoVeF0ZIUsBDski7Py9QailOPIcBJfL9YtQdVT1umE8xI3hKHnYDnB0jQ=="], + "@m3-components/solid": ["@m3-components/solid@0.2.6", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "animejs": "^4.0.2", "solid-js": "^1.9.5", "tailwind-variants": "^1.0.0" } }, "sha512-NAVhgMcdEMnXV7IPoqVT7kuV6aknGYq/VSAmE7WyvkcF2ITykKrsTQBYHbcIUNO2h72bl7CugboKBRUI0ivUgQ=="], "@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.0", "", { "dependencies": { "consola": "^3.2.3", "detect-libc": "^2.0.0", "https-proxy-agent": "^7.0.5", "node-fetch": "^2.6.7", "nopt": "^8.0.0", "semver": "^7.5.3", "tar": "^7.4.0" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg=="], @@ -569,8 +569,6 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.11", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "postcss": "^8.4.41", "tailwindcss": "4.1.11" } }, "sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA=="], - "@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="], - "@tanstack/directive-functions-plugin": ["@tanstack/directive-functions-plugin@1.121.21", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/core": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/router-utils": "^1.121.21", "babel-dead-code-elimination": "^1.0.10", "tiny-invariant": "^1.3.3" }, "peerDependencies": { "vite": ">=6.0.0" } }, "sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw=="], "@tanstack/router-utils": ["@tanstack/router-utils@1.121.21", "", { "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", "@babel/parser": "^7.27.5", "@babel/preset-typescript": "^7.27.1", "ansis": "^4.1.0", "diff": "^8.0.2" } }, "sha512-u7ubq1xPBtNiU7Fm+EOWlVWdgFLzuKOa1thhqdscVn8R4dNMUd1VoOjZ6AKmLw201VaUhFtlX+u0pjzI6szX7A=="], @@ -735,6 +733,8 @@ "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + "autoprefixer": ["autoprefixer@10.4.21", "", { "dependencies": { "browserslist": "^4.24.4", "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ=="], + "axios": ["axios@1.11.0", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA=="], "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], @@ -795,6 +795,8 @@ "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001721", "", {}, "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -809,7 +811,7 @@ "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], - "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], @@ -837,7 +839,7 @@ "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - "commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], "common-path-prefix": ["common-path-prefix@3.0.0", "", {}, "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w=="], @@ -947,8 +949,12 @@ "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + "diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + "dot-prop": ["dot-prop@9.0.0", "", { "dependencies": { "type-fest": "^4.18.2" } }, "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ=="], "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], @@ -1087,6 +1093,8 @@ "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], @@ -1119,7 +1127,7 @@ "glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], "glob-regex": ["glob-regex@0.3.2", "", {}, "sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw=="], @@ -1261,7 +1269,7 @@ "jake": ["jake@10.9.4", "", { "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" } }, "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA=="], - "jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], @@ -1311,6 +1319,8 @@ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + "limiter": ["limiter@3.0.0", "", {}, "sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -1447,12 +1457,16 @@ "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + "npm-run-path": ["npm-run-path@5.3.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ=="], "nypm": ["nypm@0.6.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "pathe": "^2.0.3", "pkg-types": "^2.0.0", "tinyexec": "^0.3.2" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], @@ -1525,6 +1539,8 @@ "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], "pkg-types": ["pkg-types@2.1.0", "", { "dependencies": { "confbox": "^0.2.1", "exsolve": "^1.0.1", "pathe": "^2.0.3" } }, "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A=="], @@ -1533,6 +1549,14 @@ "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.0.1", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw=="], + + "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + "postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], @@ -1583,6 +1607,8 @@ "rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + "read-package-up": ["read-package-up@11.0.0", "", { "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", "type-fest": "^4.6.0" } }, "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ=="], "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="], @@ -1591,7 +1617,7 @@ "readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="], - "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], @@ -1765,7 +1791,7 @@ "tailwind-variants": ["tailwind-variants@1.0.0", "", { "dependencies": { "tailwind-merge": "3.0.2" }, "peerDependencies": { "tailwindcss": "*" } }, "sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA=="], - "tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="], + "tailwindcss": ["tailwindcss@3.4.17", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og=="], "tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="], @@ -1951,6 +1977,8 @@ "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], @@ -2001,6 +2029,8 @@ "@koshnic/ratelimit/chai": ["chai@4.5.0", "", { "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", "deep-eql": "^4.1.3", "get-func-name": "^2.0.2", "loupe": "^2.3.6", "pathval": "^1.1.1", "type-detect": "^4.1.0" } }, "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw=="], + "@netlify/dev-utils/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "@netlify/dev-utils/find-up": ["find-up@7.0.0", "", { "dependencies": { "locate-path": "^7.2.0", "path-exists": "^5.0.0", "unicorn-magic": "^0.1.0" } }, "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g=="], "@netlify/dev-utils/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], @@ -2031,6 +2061,10 @@ "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@tailwindcss/node/jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + + "@tailwindcss/node/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], @@ -2043,6 +2077,8 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@tailwindcss/postcss/tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="], + "@tanstack/directive-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], "@tanstack/router-utils/diff": ["diff@8.0.2", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="], @@ -2055,8 +2091,6 @@ "@vercel/nft/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], - "@vinxi/listhen/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - "@vinxi/listhen/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], "@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -2081,10 +2115,16 @@ "boxen/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + "c12/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "c12/dotenv": ["dotenv@16.5.0", "", {}, "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg=="], + "c12/jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "c12/magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], "colorspace/color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="], @@ -2109,6 +2149,8 @@ "extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], @@ -2127,6 +2169,8 @@ "listhen/@parcel/watcher-wasm": ["@parcel/watcher-wasm@2.5.1", "", { "dependencies": { "is-glob": "^4.0.3", "micromatch": "^4.0.5", "napi-wasm": "^1.1.0" } }, "sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw=="], + "listhen/jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "listhen/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], "log-symbols/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -2135,18 +2179,20 @@ "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - "mocha/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], - "mocha/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], "mocha/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], "netlify/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + "nitropack/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "nitropack/cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="], "nitropack/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "nitropack/jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "nitropack/magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], "nitropack/unenv": ["unenv@2.0.0-rc.17", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.4", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-B06u0wXkEd+o5gOCMl/ZHl5cfpYbDZKAT+HWTL+Hws6jWu7dCiqBBXXXzMFcFVJb8D4ytAnYmxJA83uwOQRSsg=="], @@ -2159,6 +2205,8 @@ "parse-json/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + "postcss-nested/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + "precinct/commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], "read-package-up/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], @@ -2169,6 +2217,8 @@ "readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "recrawl-sync/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -2179,10 +2229,12 @@ "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], - "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], - "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + "tailwindcss/postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "unenv/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], "unenv/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], @@ -2191,14 +2243,20 @@ "unixify/normalize-path": ["normalize-path@2.1.1", "", { "dependencies": { "remove-trailing-separator": "^1.0.1" } }, "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w=="], + "unstorage/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "untun/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], + "untyped/jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="], + "unwasm/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], "unwasm/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], "unwasm/unplugin": ["unplugin@1.16.1", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w=="], + "vinxi/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "vinxi/pathe": ["pathe@1.1.2", "", {}, "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="], "vinxi/serve-static": ["serve-static@1.16.2", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.19.0" } }, "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw=="], @@ -2287,6 +2345,8 @@ "@koshnic/ratelimit/chai/pathval": ["pathval@1.1.1", "", {}, "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ=="], + "@netlify/dev-utils/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "@netlify/dev-utils/find-up/locate-path": ["locate-path@7.2.0", "", { "dependencies": { "p-locate": "^6.0.0" } }, "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="], "@netlify/dev-utils/find-up/path-exists": ["path-exists@5.0.0", "", {}, "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="], @@ -2311,6 +2371,8 @@ "boxen/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "c12/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "colorspace/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], "concurrently/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], @@ -2329,16 +2391,20 @@ "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - "mocha/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "mocha/yargs/cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], + "nitropack/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "sucrase/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "unstorage/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "unwasm/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], "unwasm/pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "vinxi/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "vinxi/serve-static/send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="], "widest-line/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], @@ -2357,8 +2423,6 @@ "colorspace/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], - "mocha/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "mocha/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], "vinxi/serve-static/send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], diff --git a/packages/solid/app.config.ts b/packages/solid/app.config.ts index 2fd848f..a45bef1 100644 --- a/packages/solid/app.config.ts +++ b/packages/solid/app.config.ts @@ -1,12 +1,11 @@ "use server"; import { defineConfig } from "@solidjs/start/config"; -import tailwindcss from "@tailwindcss/vite"; import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ vite: { - plugins: [tailwindcss(), tsconfigPaths()], + plugins: [tsconfigPaths()], optimizeDeps: { include: ["@m3-components/solid"], esbuildOptions: { @@ -15,5 +14,5 @@ export default defineConfig({ jsxImportSource: "solid-js/h" } } - }, + } }); diff --git a/packages/solid/drizzle-cred.config.ts b/packages/solid/drizzle-cred.config.ts index 487cca5..2daa681 100644 --- a/packages/solid/drizzle-cred.config.ts +++ b/packages/solid/drizzle-cred.config.ts @@ -1,10 +1,10 @@ -import { defineConfig } from 'drizzle-kit'; +import { defineConfig } from "drizzle-kit"; export default defineConfig({ - out: './src/drizzle/cred', - schema: './src/db/schema.ts', - dialect: 'postgresql', + out: "./src/drizzle/cred", + schema: "./src/db/schema.ts", + dialect: "postgresql", dbCredentials: { - url: process.env.DATABASE_URL_CRED!, - }, + url: process.env.DATABASE_URL_CRED! + } }); diff --git a/packages/solid/drizzle-main.config.ts b/packages/solid/drizzle-main.config.ts index 4be8e5f..efe13b1 100644 --- a/packages/solid/drizzle-main.config.ts +++ b/packages/solid/drizzle-main.config.ts @@ -1,10 +1,10 @@ -import 'dotenv/config'; -import { defineConfig } from 'drizzle-kit'; +import "dotenv/config"; +import { defineConfig } from "drizzle-kit"; export default defineConfig({ - out: './src/drizzle/main', - dialect: 'postgresql', + out: "./src/drizzle/main", + dialect: "postgresql", dbCredentials: { - url: process.env.DATABASE_URL_MAIN!, - }, + url: process.env.DATABASE_URL_MAIN! + } }); diff --git a/packages/solid/package.json b/packages/solid/package.json index ca82dc5..83df1d2 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -4,15 +4,15 @@ "dev": "vinxi dev --port 7400 --host", "build": "vinxi build", "start": "bunx node-env-run --exec bun -- run vinxi start --port 7400", - "version": "vinxi version" + "version": "vinxi version", + "format": "prettier . --write" }, "dependencies": { - "@m3-components/solid": "0.2.2", + "@m3-components/solid": "0.2.6", "@solid-primitives/media": "^2.3.3", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.3", "@solidjs/start": "^1.1.7", - "@tailwindcss/vite": "^4.1.11", "@types/luxon": "^3.7.1", "@ungap/has-own": "^0.1.1", "animejs": "^4.1.2", @@ -24,7 +24,7 @@ "postgres": "^3.4.7", "solid-js": "^1.9.8", "tailwind-variants": "^1.0.0", - "tailwindcss": "^4.1.11", + "tailwindcss": "3", "vinxi": "^0.5.8" }, "engines": { @@ -35,6 +35,7 @@ "@csstools/postcss-cascade-layers": "^5.0.2", "@csstools/postcss-oklab-function": "^4.0.10", "@tailwindcss/postcss": "^4.1.11", + "autoprefixer": "^10.4.21", "drizzle-kit": "^0.31.4", "postcss": "^8.5.6", "tsx": "^4.20.3", diff --git a/packages/solid/postcss.config.mjs b/packages/solid/postcss.config.mjs deleted file mode 100644 index 8d7eb3c..0000000 --- a/packages/solid/postcss.config.mjs +++ /dev/null @@ -1,9 +0,0 @@ -export default { - plugins: { - "@tailwindcss/postcss": {}, - // "@csstools/postcss-oklab-function": {}, - // "@csstools/postcss-bundler": {}, - // "@csstools/postcss-cascade-layers": {}, - // "./src/misc/postcss-calc-keyword-polyfill": {} - } -}; diff --git a/packages/solid/postcss.config.ts b/packages/solid/postcss.config.ts new file mode 100644 index 0000000..0f77216 --- /dev/null +++ b/packages/solid/postcss.config.ts @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/packages/solid/public/fonts/IBMPlexSansCondDigits-Medium.woff2 b/packages/solid/public/fonts/IBMPlexSansCondDigits-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..083ab4a5c63ea05a3d5b205cfea083d17ca4def8 GIT binary patch literal 2204 zcmV;N2xIqmPew9NR8&s@00^7_3IG5A01oH?00>k70RY4R00000000000000000000 z0000Didr0jECyfzL;*GeBm*D>1_h042Ot|X4iQwNGTD!W>h=kyr`5TbY8y`(ryk*Y z@N#^cF+(YN{%OB2?zyBDH;4dwW*n&c)OkrI=SSP3j?&3ndaOpeNSxsbs`vZkxYQ=>*7?R6O8?LMX!Z zotXpvQrL)1!my?k290*B2`fxbcO~Ng&GNddb$5n@wn0g!9XvT;VElb2+z(nHHPw^Thx0_k~N=_;AQg z{g}RORp^4g-MKaEqvj5A=#H$MtepqbuLl?1t9ri*SkVgIf3!^vB6J6<{>^ZF% zX@9pUcXug8|x0_UbI}@+ozT` zh&3PFrgkkAJ7YH*V^n3*e`3OP^I~3U0X!5VsOfGt`?&!rA;ow#C5{B8U_o&iI zz1@iB@7cdI-*QzS*jO9M8g=PaOO?R#$_V((!QF4XQP!M4#jBFWP>f|b*WHh%!9lbz z>Mf+zyY_58UYjItfK?Rs+}-7^ zojX;uPq|)TqFz*EndL4Wi z`1Bvp<3~F1@(7rR-i03e>3l9uqOXVkRbF^zEuZZ=A}$vQ1qh zPN+4aY4_&cnm27xu7MXsi=cge4K=|52N;>A*nF%$&HHV-JYM?+W}wMfe5E)I{b_~N z*0emdkt;a$F%8yhQD{brb~;sD0si#yb8z9aFH}k0QrhF^J>SpQ$Sr34R5r-O#Bmi{ zPIei&F6D|*7z31d&-{<`9R;~sPQk`^P%M1bAM5H}pceFMwzGl-?X_*V+{4_kfn9S6 zzEyf2c&_ba&+`u4PYQSS-Bf7_!Xai_cyIi4`>;-Dez}Y2mPv%QhZLdHCiI}BYDym>s4oAjJBaJ z&Py8DRCgYUU`^nsJ{AW@l$B*sxK$&0y=y!C45 z$ybRsn*7AH-Q*uDe~l!W{WAqx9BdTi)X;I{GB?N%^~_g=-&Nee_K&78R>l!BES=6R z?5JT9Smap7>BrMtCYOKqcXB%$Vu>L`@&z2oO3Ro7d)5^IAWU17fiKqIDNF^0dpOl%ytc!bb zP_QPD8!GTIK`PN+1$Tbs^dGd)a4ECdVL+QRFi-fI1eZEiT~l#Cs5`aZUa2tfI#35_gWV!^})0c@$7 zJ%^wq$(o>cJ>>4qOR_1e&d{nEnT_a>)5FQ<32pxXQHpZ{vgB-AQ#lRh%!4o3>ckxh z5y9lM!XiHVeJLf|4&fd4G&X5U?uzw+@)+S~wQ-#ZUXgaAP(q6M;E2iGd`pKstcdp* eE6|b$0FKkTQltBZLJ^+tSoc2fL#;Q+ngakK+({b% literal 0 HcmV?d00001 diff --git a/packages/solid/src/app.css b/packages/solid/src/app.css index bf4538a..64d9bd9 100644 --- a/packages/solid/src/app.css +++ b/packages/solid/src/app.css @@ -1,6 +1,48 @@ -@import url("https://assets.projectcvsa.com/hm-sans/index.css"); +/* @import url("https://assets.projectcvsa.com/hm-sans/index.css"); */ -@import "tailwindcss"; +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --md-sys-color-background: #fff8f6; + --md-sys-color-on-background: #2a1613; + --md-sys-color-surface: #fff8f6; + --md-sys-color-surface-dim: #f7d2cc; + --md-sys-color-surface-bright: #fff8f6; + --md-sys-color-surface-container-lowest: #ffffff; + --md-sys-color-surface-container-low: #fff0ee; + --md-sys-color-surface-container: #ffe9e6; + --md-sys-color-surface-container-high: #ffe2dd; + --md-sys-color-surface-container-highest: #ffdad4; + --md-sys-color-on-surface: #2a1613; + --md-sys-color-surface-variant: #ffdad4; + --md-sys-color-on-surface-variant: #5f3e39; + --md-sys-color-inverse-surface: #422b27; + --md-sys-color-inverse-on-surface: #ffedea; + --md-sys-color-outline: #946e68; + --md-sys-color-outline-variant: #eabcb4; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-surface-tint: #c00100; + --md-sys-color-primary: #ee0000; + --md-sys-color-on-primary: #ffffff; + --md-sys-color-primary-container: #ee0000; + --md-sys-color-on-primary-container: #ffffff; + --md-sys-color-inverse-primary: #ffb4a8; + --md-sys-color-secondary: #b4271a; + --md-sys-color-on-secondary: #ffffff; + --md-sys-color-secondary-container: #ff7460; + --md-sys-color-on-secondary-container: #2f0000; + --md-sys-color-tertiary: #6f4800; + --md-sys-color-on-tertiary: #ffffff; + --md-sys-color-tertiary-container: #9f6900; + --md-sys-color-on-tertiary-container: #ffffff; + --md-sys-color-error: #ba1a1a; + --md-sys-color-on-error: #ffffff; + --md-sys-color-error-container: #ffdad6; + --md-sys-color-on-error-container: #410002; +} @media (prefers-color-scheme: light) { :root { @@ -86,44 +128,93 @@ } } -@theme { - --color-background: var(--md-sys-color-background); - --color-on-background: var(--md-sys-color-on-background); - --color-surface: var(--md-sys-color-surface); - --color-surface-dim: var(--md-sys-color-surface-dim); - --color-surface-bright: var(--md-sys-color-surface-bright); - --color-surface-container-lowest: var(--md-sys-color-surface-container-lowest); - --color-surface-container-low: var(--md-sys-color-surface-container-low); - --color-surface-container: var(--md-sys-color-surface-container); - --color-surface-container-high: var(--md-sys-color-surface-container-high); - --color-surface-container-highest: var(--md-sys-color-surface-container-highest); - --color-on-surface: var(--md-sys-color-on-surface); - --color-surface-variant: var(--md-sys-color-surface-variant); - --color-on-surface-variant: var(--md-sys-color-on-surface-variant); - --color-inverse-surface: var(--md-sys-color-inverse-surface); - --color-inverse-on-surface: var(--md-sys-color-inverse-on-surface); - --color-outline: var(--md-sys-color-outline); - --color-outline-variant: var(--md-sys-color-outline-variant); - --color-shadow: var(--md-sys-color-shadow); - --color-scrim: var(--md-sys-color-scrim); - --color-surface-tint: var(--md-sys-color-surface-tint); - --color-primary: var(--md-sys-color-primary); - --color-on-primary: var(--md-sys-color-on-primary); - --color-primary-container: var(--md-sys-color-primary-container); - --color-on-primary-container: var(--md-sys-color-on-primary-container); - --color-inverse-primary: var(--md-sys-color-inverse-primary); - --color-secondary: var(--md-sys-color-secondary); - --color-on-secondary: var(--md-sys-color-on-secondary); - --color-secondary-container: var(--md-sys-color-secondary-container); - --color-on-secondary-container: var(--md-sys-color-on-secondary-container); - --color-tertiary: var(--md-sys-color-tertiary); - --color-on-tertiary: var(--md-sys-color-on-tertiary); - --color-tertiary-container: var(--md-sys-color-tertiary-container); - --color-on-tertiary-container: var(--md-sys-color-on-tertiary-container); - --color-error: var(--md-sys-color-error); - --color-on-error: var(--md-sys-color-on-error); - --color-error-container: var(--md-sys-color-error-container); - --color-on-error-container: var(--md-sys-color-on-error-container); +.gradient-blur { + inset: auto 0 0 0; + pointer-events: none; +} +.gradient-blur > div, +.gradient-blur::before, +.gradient-blur::after { + position: absolute; + inset: 0; +} +.gradient-blur::before { + content: ""; + z-index: 1; + backdrop-filter: blur(0.5px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 1) 12.5%, + rgba(0, 0, 0, 1) 25%, + rgba(0, 0, 0, 0) 37.5% + ); +} +.gradient-blur > div:nth-of-type(1) { + z-index: 2; + backdrop-filter: blur(1px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 12.5%, + rgba(0, 0, 0, 1) 25%, + rgba(0, 0, 0, 1) 37.5%, + rgba(0, 0, 0, 0) 50% + ); +} +.gradient-blur > div:nth-of-type(2) { + z-index: 3; + backdrop-filter: blur(2px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 25%, + rgba(0, 0, 0, 1) 37.5%, + rgba(0, 0, 0, 1) 50%, + rgba(0, 0, 0, 0) 62.5% + ); +} +.gradient-blur > div:nth-of-type(3) { + z-index: 4; + backdrop-filter: blur(4px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 37.5%, + rgba(0, 0, 0, 1) 50%, + rgba(0, 0, 0, 1) 62.5%, + rgba(0, 0, 0, 0) 75% + ); +} +.gradient-blur > div:nth-of-type(4) { + z-index: 5; + backdrop-filter: blur(8px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 50%, + rgba(0, 0, 0, 1) 62.5%, + rgba(0, 0, 0, 1) 75%, + rgba(0, 0, 0, 0) 87.5% + ); +} +.gradient-blur > div:nth-of-type(5) { + z-index: 6; + backdrop-filter: blur(13px); + mask: linear-gradient( + to bottom, + rgba(0, 0, 0, 0) 62.5%, + rgba(0, 0, 0, 1) 75%, + rgba(0, 0, 0, 1) 87.5%, + rgba(0, 0, 0, 0) 100% + ); +} +.gradient-blur > div:nth-of-type(6) { + z-index: 7; + backdrop-filter: blur(24px); + mask: linear-gradient(to bottom, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 1) 87.5%, rgba(0, 0, 0, 1) 100%); +} +.gradient-blur::after { + content: ""; + z-index: 8; + backdrop-filter: blur(48px); + mask: linear-gradient(to bottom, rgba(0, 0, 0, 0) 87.5%, rgba(0, 0, 0, 1) 100%); } a:not(.clear) { @@ -135,6 +226,13 @@ a:not(.clear) { @apply bg-surface text-on-surface; } +@font-face { + font-family: "IPSD"; + src: url("/fonts/IBMPlexSansCondDigits-Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; +} + [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none; diff --git a/packages/solid/src/components/icons/Arrow.tsx b/packages/solid/src/components/icons/Arrow.tsx new file mode 100644 index 0000000..946c3e2 --- /dev/null +++ b/packages/solid/src/components/icons/Arrow.tsx @@ -0,0 +1,12 @@ +import { SVGIconComponent } from "~/components/icons/types"; + +export const RightArrow: SVGIconComponent = (props) => { + return ( + + + + ); +}; diff --git a/packages/solid/src/components/icons/History.tsx b/packages/solid/src/components/icons/History.tsx new file mode 100644 index 0000000..fcb3d15 --- /dev/null +++ b/packages/solid/src/components/icons/History.tsx @@ -0,0 +1,12 @@ +import { SVGIconComponent } from "./types"; + +export const HistoryIcon: SVGIconComponent = (props) => { + return ( + + + + ); +}; diff --git a/packages/solid/src/components/icons/Link.tsx b/packages/solid/src/components/icons/Link.tsx new file mode 100644 index 0000000..d86f97a --- /dev/null +++ b/packages/solid/src/components/icons/Link.tsx @@ -0,0 +1,12 @@ +import { SVGIconComponent } from "./types"; + +export const LinkIcon: SVGIconComponent = (props) => { + return ( + + + + ); +}; diff --git a/packages/solid/src/components/icons/Music.tsx b/packages/solid/src/components/icons/Music.tsx index 549cfed..b750461 100644 --- a/packages/solid/src/components/icons/Music.tsx +++ b/packages/solid/src/components/icons/Music.tsx @@ -2,10 +2,10 @@ import { SVGIconComponent } from "./types"; export const MusicIcon: SVGIconComponent = (props) => { return ( - + ); diff --git a/packages/solid/src/components/icons/Search.tsx b/packages/solid/src/components/icons/Search.tsx index 9de0040..50fc429 100644 --- a/packages/solid/src/components/icons/Search.tsx +++ b/packages/solid/src/components/icons/Search.tsx @@ -3,8 +3,10 @@ import { SVGIconComponent } from "~/components/icons/types"; export const SearchIcon: SVGIconComponent = (props) => { return ( - + ); -}; \ No newline at end of file +}; diff --git a/packages/solid/src/components/icons/StarBadges.tsx b/packages/solid/src/components/icons/StarBadges.tsx new file mode 100644 index 0000000..937165a --- /dev/null +++ b/packages/solid/src/components/icons/StarBadges.tsx @@ -0,0 +1,34 @@ +import { SVGIconComponent } from "./types"; + +export const StarBadge4: SVGIconComponent = (props) => { + return ( + + + + ); +}; + +export const StarBadge6: SVGIconComponent = (props) => { + return ( + + + + ); +}; + +export const StarBadge8: SVGIconComponent = (props) => { + return ( + + + + ); +}; diff --git a/packages/solid/src/components/icons/index.tsx b/packages/solid/src/components/icons/index.tsx index 71dca9b..ee8dea1 100644 --- a/packages/solid/src/components/icons/index.tsx +++ b/packages/solid/src/components/icons/index.tsx @@ -2,4 +2,4 @@ export * from "./Home"; export * from "./Music"; export * from "./Album"; export * from "./Search"; -export * from "./Edit"; \ No newline at end of file +export * from "./Edit"; diff --git a/packages/solid/src/components/icons/types.d.ts b/packages/solid/src/components/icons/types.d.ts index 469943e..e98fa1b 100644 --- a/packages/solid/src/components/icons/types.d.ts +++ b/packages/solid/src/components/icons/types.d.ts @@ -1,3 +1,3 @@ import { Component, JSX } from "solid-js"; -type SVGIconComponent = Component>; \ No newline at end of file +type SVGIconComponent = Component>; diff --git a/packages/solid/src/components/layout/Body.tsx b/packages/solid/src/components/layout/Body.tsx index 1041878..2c65211 100644 --- a/packages/solid/src/components/layout/Body.tsx +++ b/packages/solid/src/components/layout/Body.tsx @@ -3,7 +3,7 @@ import { DivProps } from "~/components/common"; export const BodyRegion: Component = (props) => { return ( -
+
{props.children}
); diff --git a/packages/solid/src/components/layout/Navigation/Desktop.tsx b/packages/solid/src/components/layout/Navigation/Desktop.tsx index 6fa351d..ea85bad 100644 --- a/packages/solid/src/components/layout/Navigation/Desktop.tsx +++ b/packages/solid/src/components/layout/Navigation/Desktop.tsx @@ -12,8 +12,8 @@ import { export const NavigationDesktop: Component = () => { return ( -
diff --git a/packages/solid/src/components/loginStatusContext.tsx b/packages/solid/src/components/loginStatusContext.tsx index ad2be1f..a085051 100644 --- a/packages/solid/src/components/loginStatusContext.tsx +++ b/packages/solid/src/components/loginStatusContext.tsx @@ -1,6 +1,6 @@ import { dbCred } from "~db/index"; import { loginSessions, users } from "~db/cred/schema"; -import { and, eq, gt, isNull, sql } from "drizzle-orm"; +import { and, eq, gt, isNull, sql } from "drizzle-orm"; import { SensitiveUserFields, UserType } from "~db/outerSchema"; type ReturnedUser = Omit; @@ -45,4 +45,4 @@ export const getUserLoggedin = async (sessionID?: string): Promise | null; -} +}; export type RequestContextValue = Map; @@ -17,7 +17,7 @@ export const RequestContextProvider: Component<{ children: any }> = (props) => { const initValue: RequestContextValue = new Map(); const [value, setValue] = createSignal(initValue); const updateValue = (v: RequestContextValue) => { - setValue(v) + setValue(v); }; const context: Context = [value, updateValue]; @@ -28,7 +28,7 @@ export const RequestContextProvider: Component<{ children: any }> = (props) => { export function useRequestContext(): Context { const ctx = useContext(RequestContext); if (!ctx) { - throw new Error('useRequestContext must be used within a RequestContextProvider'); + throw new Error("useRequestContext must be used within a RequestContextProvider"); } return ctx; -} \ No newline at end of file +} diff --git a/packages/solid/src/components/song/TabSwitcher.tsx b/packages/solid/src/components/song/TabSwitcher.tsx index 6f0d1d8..849748c 100644 --- a/packages/solid/src/components/song/TabSwitcher.tsx +++ b/packages/solid/src/components/song/TabSwitcher.tsx @@ -8,27 +8,32 @@ export const TabSwitcher: Component = (props) => { return ( ); diff --git a/packages/solid/src/components/utils/DynamicImage.tsx b/packages/solid/src/components/utils/DynamicImage.tsx index 2fe21d5..823ce20 100644 --- a/packages/solid/src/components/utils/DynamicImage.tsx +++ b/packages/solid/src/components/utils/DynamicImage.tsx @@ -18,5 +18,5 @@ export const DynamicImage: Component = (props) => { {v.alt} - ) -} \ No newline at end of file + ); +}; diff --git a/packages/solid/src/drizzle/cred/meta/0000_snapshot.json b/packages/solid/src/drizzle/cred/meta/0000_snapshot.json index b1b6e03..a420ac1 100644 --- a/packages/solid/src/drizzle/cred/meta/0000_snapshot.json +++ b/packages/solid/src/drizzle/cred/meta/0000_snapshot.json @@ -1,350 +1,350 @@ { - "id": "00000000-0000-0000-0000-000000000000", - "prevId": "", - "version": "7", - "dialect": "postgresql", - "tables": { - "public.captcha_difficulty_settings": { - "name": "captcha_difficulty_settings", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('captcha_difficulty_settings_id_seq'::regclass)" - }, - "method": { - "name": "method", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "path": { - "name": "path", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "duration": { - "name": "duration", - "type": "real", - "primaryKey": false, - "notNull": true - }, - "threshold": { - "name": "threshold", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "difficulty": { - "name": "difficulty", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "global": { - "name": "global", - "type": "boolean", - "primaryKey": false, - "notNull": true - } - }, - "indexes": { - "captcha_difficulty_settings_pkey": { - "name": "captcha_difficulty_settings_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.login_sessions": { - "name": "login_sessions", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "uid": { - "name": "uid", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "expire_at": { - "name": "expire_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "last_used_at": { - "name": "last_used_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "ip_address": { - "name": "ip_address", - "type": "inet", - "primaryKey": false, - "notNull": false - }, - "user_agent": { - "name": "user_agent", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "deactivated_at": { - "name": "deactivated_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - } - }, - "indexes": { - "inx_login-sessions_uid": { - "name": "inx_login-sessions_uid", - "columns": [ - { - "expression": "uid", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "login_sessions_pkey": { - "name": "login_sessions_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.users": { - "name": "users", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('users_id_seq'::regclass)" - }, - "nickname": { - "name": "nickname", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "password": { - "name": "password", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "unq_id": { - "name": "unq_id", - "type": "text", - "primaryKey": false, - "notNull": true, - "default": "gen_random_uuid()" - }, - "role": { - "name": "role", - "type": "text", - "primaryKey": false, - "notNull": true, - "default": "'USER'" - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - } - }, - "indexes": { - "users_pkey": { - "name": "users_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "users_pkey1": { - "name": "users_pkey1", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "users_unq_id_key": { - "name": "users_unq_id_key", - "columns": [ - { - "expression": "unq_id", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "users_username_key": { - "name": "users_username_key", - "columns": [ - { - "expression": "username", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "enums": {}, - "schemas": {}, - "sequences": { - "public.captcha_difficulty_settings_id_seq": { - "name": "captcha_difficulty_settings_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - }, - "public.users_id_seq": { - "name": "users_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - } - }, - "roles": {}, - "policies": {}, - "views": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "tables": { - "captcha_difficulty_settings": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - }, - "users": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - } - } - } -} \ No newline at end of file + "id": "00000000-0000-0000-0000-000000000000", + "prevId": "", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.captcha_difficulty_settings": { + "name": "captcha_difficulty_settings", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('captcha_difficulty_settings_id_seq'::regclass)" + }, + "method": { + "name": "method", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true + }, + "threshold": { + "name": "threshold", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "difficulty": { + "name": "difficulty", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "global": { + "name": "global", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "captcha_difficulty_settings_pkey": { + "name": "captcha_difficulty_settings_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.login_sessions": { + "name": "login_sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "uid": { + "name": "uid", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "expire_at": { + "name": "expire_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "ip_address": { + "name": "ip_address", + "type": "inet", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "inx_login-sessions_uid": { + "name": "inx_login-sessions_uid", + "columns": [ + { + "expression": "uid", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "login_sessions_pkey": { + "name": "login_sessions_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('users_id_seq'::regclass)" + }, + "nickname": { + "name": "nickname", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "unq_id": { + "name": "unq_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "gen_random_uuid()" + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'USER'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "users_pkey": { + "name": "users_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_pkey1": { + "name": "users_pkey1", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_unq_id_key": { + "name": "users_unq_id_key", + "columns": [ + { + "expression": "unq_id", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "users_username_key": { + "name": "users_username_key", + "columns": [ + { + "expression": "username", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": { + "public.captcha_difficulty_settings_id_seq": { + "name": "captcha_difficulty_settings_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + }, + "public.users_id_seq": { + "name": "users_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + } + }, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": { + "captcha_difficulty_settings": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + }, + "users": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + } + } + } +} diff --git a/packages/solid/src/drizzle/cred/meta/_journal.json b/packages/solid/src/drizzle/cred/meta/_journal.json index 5581bae..574cfc3 100644 --- a/packages/solid/src/drizzle/cred/meta/_journal.json +++ b/packages/solid/src/drizzle/cred/meta/_journal.json @@ -1,13 +1,13 @@ { - "version": "7", - "dialect": "postgresql", - "entries": [ - { - "idx": 0, - "version": "7", - "when": 1750513073792, - "tag": "0000_moaning_shotgun", - "breakpoints": true - } - ] -} \ No newline at end of file + "version": "7", + "dialect": "postgresql", + "entries": [ + { + "idx": 0, + "version": "7", + "when": 1750513073792, + "tag": "0000_moaning_shotgun", + "breakpoints": true + } + ] +} diff --git a/packages/solid/src/drizzle/cred/relations.ts b/packages/solid/src/drizzle/cred/relations.ts index 80768e2..0ed80c7 100644 --- a/packages/solid/src/drizzle/cred/relations.ts +++ b/packages/solid/src/drizzle/cred/relations.ts @@ -1,3 +1,2 @@ import { relations } from "drizzle-orm/relations"; -import { } from "./schema"; - +import {} from "./schema"; diff --git a/packages/solid/src/drizzle/cred/schema.ts b/packages/solid/src/drizzle/cred/schema.ts index 5a3e0dd..0b9e7b1 100644 --- a/packages/solid/src/drizzle/cred/schema.ts +++ b/packages/solid/src/drizzle/cred/schema.ts @@ -1,47 +1,93 @@ -import { pgTable, uniqueIndex, integer, text, real, boolean, index, timestamp, inet, pgSequence } from "drizzle-orm/pg-core" -import { sql } from "drizzle-orm" +import { + pgTable, + uniqueIndex, + integer, + text, + real, + boolean, + index, + timestamp, + inet, + pgSequence +} from "drizzle-orm/pg-core"; +import { sql } from "drizzle-orm"; +export const captchaDifficultySettingsIdSeq = pgSequence("captcha_difficulty_settings_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); +export const usersIdSeq = pgSequence("users_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); -export const captchaDifficultySettingsIdSeq = pgSequence("captcha_difficulty_settings_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) -export const usersIdSeq = pgSequence("users_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) +export const captchaDifficultySettings = pgTable( + "captcha_difficulty_settings", + { + id: integer() + .default(sql`nextval('captcha_difficulty_settings_id_seq'::regclass)`) + .notNull(), + method: text().notNull(), + path: text().notNull(), + duration: real().notNull(), + threshold: integer().notNull(), + difficulty: integer().notNull(), + global: boolean().notNull() + }, + (table) => [ + uniqueIndex("captcha_difficulty_settings_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")) + ] +); -export const captchaDifficultySettings = pgTable("captcha_difficulty_settings", { - id: integer().default(sql`nextval('captcha_difficulty_settings_id_seq'::regclass)`).notNull(), - method: text().notNull(), - path: text().notNull(), - duration: real().notNull(), - threshold: integer().notNull(), - difficulty: integer().notNull(), - global: boolean().notNull(), -}, (table) => [ - uniqueIndex("captcha_difficulty_settings_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), -]); +export const loginSessions = pgTable( + "login_sessions", + { + id: text().notNull(), + uid: integer().notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + expireAt: timestamp("expire_at", { withTimezone: true, mode: "string" }), + lastUsedAt: timestamp("last_used_at", { withTimezone: true, mode: "string" }), + ipAddress: inet("ip_address"), + userAgent: text("user_agent"), + deactivatedAt: timestamp("deactivated_at", { withTimezone: true, mode: "string" }) + }, + (table) => [ + index("inx_login-sessions_uid").using("btree", table.uid.asc().nullsLast().op("int4_ops")), + uniqueIndex("login_sessions_pkey").using("btree", table.id.asc().nullsLast().op("text_ops")) + ] +); -export const loginSessions = pgTable("login_sessions", { - id: text().notNull(), - uid: integer().notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - expireAt: timestamp("expire_at", { withTimezone: true, mode: 'string' }), - lastUsedAt: timestamp("last_used_at", { withTimezone: true, mode: 'string' }), - ipAddress: inet("ip_address"), - userAgent: text("user_agent"), - deactivatedAt: timestamp("deactivated_at", { withTimezone: true, mode: 'string' }), -}, (table) => [ - index("inx_login-sessions_uid").using("btree", table.uid.asc().nullsLast().op("int4_ops")), - uniqueIndex("login_sessions_pkey").using("btree", table.id.asc().nullsLast().op("text_ops")), -]); - -export const users = pgTable("users", { - id: integer().default(sql`nextval('users_id_seq'::regclass)`).notNull(), - nickname: text(), - username: text().notNull(), - password: text().notNull(), - unqId: text("unq_id").default(sql`gen_random_uuid()`).notNull(), - role: text().default('USER').notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), -}, (table) => [ - uniqueIndex("users_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), - uniqueIndex("users_pkey1").using("btree", table.id.asc().nullsLast().op("int4_ops")), - uniqueIndex("users_unq_id_key").using("btree", table.unqId.asc().nullsLast().op("text_ops")), - uniqueIndex("users_username_key").using("btree", table.username.asc().nullsLast().op("text_ops")), -]); +export const users = pgTable( + "users", + { + id: integer() + .default(sql`nextval('users_id_seq'::regclass)`) + .notNull(), + nickname: text(), + username: text().notNull(), + password: text().notNull(), + unqId: text("unq_id") + .default(sql`gen_random_uuid()`) + .notNull(), + role: text().default("USER").notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull() + }, + (table) => [ + uniqueIndex("users_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), + uniqueIndex("users_pkey1").using("btree", table.id.asc().nullsLast().op("int4_ops")), + uniqueIndex("users_unq_id_key").using("btree", table.unqId.asc().nullsLast().op("text_ops")), + uniqueIndex("users_username_key").using("btree", table.username.asc().nullsLast().op("text_ops")) + ] +); diff --git a/packages/solid/src/drizzle/index.ts b/packages/solid/src/drizzle/index.ts index 0fd0ca2..73dd076 100644 --- a/packages/solid/src/drizzle/index.ts +++ b/packages/solid/src/drizzle/index.ts @@ -1,7 +1,7 @@ "use server"; -import { drizzle } from 'drizzle-orm/postgres-js'; +import { drizzle } from "drizzle-orm/postgres-js"; import { sqlCred, sql } from "@cvsa/core"; export const dbMain = drizzle(sql); -export const dbCred = drizzle(sqlCred); \ No newline at end of file +export const dbCred = drizzle(sqlCred); diff --git a/packages/solid/src/drizzle/main/meta/0000_snapshot.json b/packages/solid/src/drizzle/main/meta/0000_snapshot.json index 63c4b61..935c678 100644 --- a/packages/solid/src/drizzle/main/meta/0000_snapshot.json +++ b/packages/solid/src/drizzle/main/meta/0000_snapshot.json @@ -1,1389 +1,1387 @@ { - "id": "00000000-0000-0000-0000-000000000000", - "prevId": "", - "version": "7", - "dialect": "postgresql", - "tables": { - "public.content": { - "name": "content", - "schema": "", - "columns": { - "page_id": { - "name": "page_id", - "type": "text", - "primaryKey": true, - "notNull": true - }, - "page_content": { - "name": "page_content", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "updated_at": { - "name": "updated_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "deleted_at": { - "name": "deleted_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - } - }, - "indexes": { - "idx_content_created-at": { - "name": "idx_content_created-at", - "columns": [ - { - "expression": "created_at", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.bilibili_user": { - "name": "bilibili_user", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "serial", - "primaryKey": true, - "notNull": true - }, - "uid": { - "name": "uid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "username": { - "name": "username", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "desc": { - "name": "desc", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "fans": { - "name": "fans", - "type": "integer", - "primaryKey": false, - "notNull": true - } - }, - "indexes": { - "idx_bili-user_uid": { - "name": "idx_bili-user_uid", - "columns": [ - { - "expression": "uid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": { - "unq_bili-user_uid": { - "columns": [ - "uid" - ], - "nullsNotDistinct": false, - "name": "unq_bili-user_uid" - } - }, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.bilibili_metadata": { - "name": "bilibili_metadata", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('all_data_id_seq'::regclass)" - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "bvid": { - "name": "bvid", - "type": "varchar(12)", - "primaryKey": false, - "notNull": false - }, - "description": { - "name": "description", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "uid": { - "name": "uid", - "type": "bigint", - "primaryKey": false, - "notNull": false - }, - "tags": { - "name": "tags", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "title": { - "name": "title", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "published_at": { - "name": "published_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "duration": { - "name": "duration", - "type": "integer", - "primaryKey": false, - "notNull": false - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false, - "default": "CURRENT_TIMESTAMP" - }, - "status": { - "name": "status", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": 0 - }, - "cover_url": { - "name": "cover_url", - "type": "text", - "primaryKey": false, - "notNull": false - } - }, - "indexes": { - "all_data_pkey": { - "name": "all_data_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_all-data_aid": { - "name": "idx_all-data_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_all-data_bvid": { - "name": "idx_all-data_bvid", - "columns": [ - { - "expression": "bvid", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_all-data_uid": { - "name": "idx_all-data_uid", - "columns": [ - { - "expression": "uid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_bili-meta_status": { - "name": "idx_bili-meta_status", - "columns": [ - { - "expression": "status", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "unq_all-data_aid": { - "name": "unq_all-data_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.classified_labels_human": { - "name": "classified_labels_human", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "serial", - "primaryKey": true, - "notNull": true - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "author": { - "name": "author", - "type": "uuid", - "primaryKey": false, - "notNull": true - }, - "label": { - "name": "label", - "type": "smallint", - "primaryKey": false, - "notNull": true - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - } - }, - "indexes": { - "idx_classified-labels-human_aid": { - "name": "idx_classified-labels-human_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_classified-labels-human_author": { - "name": "idx_classified-labels-human_author", - "columns": [ - { - "expression": "author", - "asc": true, - "nulls": "last", - "opclass": "uuid_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_classified-labels-human_created-at": { - "name": "idx_classified-labels-human_created-at", - "columns": [ - { - "expression": "created_at", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_classified-labels-human_label": { - "name": "idx_classified-labels-human_label", - "columns": [ - { - "expression": "label", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.labelling_result": { - "name": "labelling_result", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('labeling_result_id_seq'::regclass)" - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "label": { - "name": "label", - "type": "smallint", - "primaryKey": false, - "notNull": true - }, - "model_version": { - "name": "model_version", - "type": "text", - "primaryKey": false, - "notNull": true - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "logits": { - "name": "logits", - "type": "smallint[]", - "primaryKey": false, - "notNull": false - } - }, - "indexes": { - "idx_labeling_label_model-version": { - "name": "idx_labeling_label_model-version", - "columns": [ - { - "expression": "label", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - }, - { - "expression": "model_version", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_labeling_model-version": { - "name": "idx_labeling_model-version", - "columns": [ - { - "expression": "model_version", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_labelling_aid-label": { - "name": "idx_labelling_aid-label", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - }, - { - "expression": "label", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "labeling_result_pkey": { - "name": "labeling_result_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "unq_labelling-result_aid_model-version": { - "name": "unq_labelling-result_aid_model-version", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - }, - { - "expression": "model_version", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.latest_video_snapshot": { - "name": "latest_video_snapshot", - "schema": "", - "columns": { - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": true, - "notNull": true - }, - "time": { - "name": "time", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true - }, - "views": { - "name": "views", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "coins": { - "name": "coins", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "likes": { - "name": "likes", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "favorites": { - "name": "favorites", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "replies": { - "name": "replies", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "danmakus": { - "name": "danmakus", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "shares": { - "name": "shares", - "type": "integer", - "primaryKey": false, - "notNull": true - } - }, - "indexes": { - "idx_latest-video-snapshot_time": { - "name": "idx_latest-video-snapshot_time", - "columns": [ - { - "expression": "time", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_latest-video-snapshot_views": { - "name": "idx_latest-video-snapshot_views", - "columns": [ - { - "expression": "views", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.video_snapshot": { - "name": "video_snapshot", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('video_snapshot_id_seq'::regclass)" - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "views": { - "name": "views", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "coins": { - "name": "coins", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "likes": { - "name": "likes", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "favorites": { - "name": "favorites", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "shares": { - "name": "shares", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "danmakus": { - "name": "danmakus", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "replies": { - "name": "replies", - "type": "integer", - "primaryKey": false, - "notNull": true - } - }, - "indexes": { - "idx_vid_snapshot_aid": { - "name": "idx_vid_snapshot_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_vid_snapshot_time": { - "name": "idx_vid_snapshot_time", - "columns": [ - { - "expression": "created_at", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_vid_snapshot_views": { - "name": "idx_vid_snapshot_views", - "columns": [ - { - "expression": "views", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "video_snapshot_pkey": { - "name": "video_snapshot_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.snapshot_schedule": { - "name": "snapshot_schedule", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "bigserial", - "primaryKey": false, - "notNull": true - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "type": { - "name": "type", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "started_at": { - "name": "started_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "finished_at": { - "name": "finished_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "status": { - "name": "status", - "type": "text", - "primaryKey": false, - "notNull": true, - "default": "'pending'" - } - }, - "indexes": { - "idx_snapshot_schedule_aid": { - "name": "idx_snapshot_schedule_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_snapshot_schedule_started_at": { - "name": "idx_snapshot_schedule_started_at", - "columns": [ - { - "expression": "started_at", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_snapshot_schedule_status": { - "name": "idx_snapshot_schedule_status", - "columns": [ - { - "expression": "status", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_snapshot_schedule_type": { - "name": "idx_snapshot_schedule_type", - "columns": [ - { - "expression": "type", - "asc": true, - "nulls": "last", - "opclass": "text_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "snapshot_schedule_pkey": { - "name": "snapshot_schedule_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.songs": { - "name": "songs", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('songs_id_seq'::regclass)" - }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": false - }, - "published_at": { - "name": "published_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": false - }, - "duration": { - "name": "duration", - "type": "integer", - "primaryKey": false, - "notNull": false - }, - "type": { - "name": "type", - "type": "smallint", - "primaryKey": false, - "notNull": false - }, - "romanized_name": { - "name": "romanized_name", - "type": "text", - "primaryKey": false, - "notNull": false - }, - "netease_id": { - "name": "netease_id", - "type": "bigint", - "primaryKey": false, - "notNull": false - }, - "created_at": { - "name": "created_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "updated_at": { - "name": "updated_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "deleted": { - "name": "deleted", - "type": "boolean", - "primaryKey": false, - "notNull": true, - "default": false - } - }, - "indexes": { - "idx_aid": { - "name": "idx_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_hash_songs_aid": { - "name": "idx_hash_songs_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "hash", - "with": {} - }, - "idx_netease_id": { - "name": "idx_netease_id", - "columns": [ - { - "expression": "netease_id", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_published_at": { - "name": "idx_published_at", - "columns": [ - { - "expression": "published_at", - "asc": true, - "nulls": "last", - "opclass": "timestamptz_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "idx_type": { - "name": "idx_type", - "columns": [ - { - "expression": "type", - "asc": true, - "nulls": "last", - "opclass": "int2_ops", - "isExpression": false - } - ], - "isUnique": false, - "concurrently": false, - "method": "btree", - "with": {} - }, - "songs_pkey": { - "name": "songs_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "unq_songs_aid": { - "name": "unq_songs_aid", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "unq_songs_netease_id": { - "name": "unq_songs_netease_id", - "columns": [ - { - "expression": "netease_id", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - }, - "public.views_increment_rate": { - "name": "views_increment_rate", - "schema": "", - "columns": { - "id": { - "name": "id", - "type": "integer", - "primaryKey": false, - "notNull": true, - "default": "nextval('views_increment_rate_id_seq'::regclass)" - }, - "aid": { - "name": "aid", - "type": "bigint", - "primaryKey": false, - "notNull": true - }, - "old_time": { - "name": "old_time", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true - }, - "new_time": { - "name": "new_time", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true - }, - "old_views": { - "name": "old_views", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "new_views": { - "name": "new_views", - "type": "integer", - "primaryKey": false, - "notNull": true - }, - "interval": { - "name": "interval", - "type": "interval", - "primaryKey": false, - "notNull": true - }, - "updated_at": { - "name": "updated_at", - "type": "timestamp with time zone", - "primaryKey": false, - "notNull": true, - "default": "CURRENT_TIMESTAMP" - }, - "speed": { - "name": "speed", - "type": "real", - "primaryKey": false, - "notNull": false - } - }, - "indexes": { - "unq_views-increment-rate_aid_interval": { - "name": "unq_views-increment-rate_aid_interval", - "columns": [ - { - "expression": "aid", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - }, - { - "expression": "interval", - "asc": true, - "nulls": "last", - "opclass": "int8_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - }, - "views_increment_rate_pkey": { - "name": "views_increment_rate_pkey", - "columns": [ - { - "expression": "id", - "asc": true, - "nulls": "last", - "opclass": "int4_ops", - "isExpression": false - } - ], - "isUnique": true, - "concurrently": false, - "method": "btree", - "with": {} - } - }, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": {}, - "checkConstraints": {}, - "policies": {}, - "isRLSEnabled": false - } - }, - "enums": {}, - "schemas": {}, - "sequences": { - "public.all_data_id_seq": { - "name": "all_data_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - }, - "public.labeling_result_id_seq": { - "name": "labeling_result_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - }, - "public.songs_id_seq": { - "name": "songs_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - }, - "public.video_snapshot_id_seq": { - "name": "video_snapshot_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "2147483647", - "increment": "1", - "cycle": false, - "cache": "1" - }, - "public.views_increment_rate_id_seq": { - "name": "views_increment_rate_id_seq", - "schema": "public", - "startWith": "1", - "minValue": "1", - "maxValue": "9223372036854775807", - "increment": "1", - "cycle": false, - "cache": "1" - } - }, - "roles": {}, - "policies": {}, - "views": {}, - "_meta": { - "schemas": {}, - "tables": {}, - "columns": {} - }, - "internal": { - "tables": { - "bilibili_metadata": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - }, - "labelling_result": { - "columns": { - "id": { - "isDefaultAnExpression": true - }, - "logits": { - "isArray": true, - "dimensions": 1, - "rawType": "smallint" - } - } - }, - "video_snapshot": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - }, - "songs": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - }, - "views_increment_rate": { - "columns": { - "id": { - "isDefaultAnExpression": true - } - } - } - } - } -} \ No newline at end of file + "id": "00000000-0000-0000-0000-000000000000", + "prevId": "", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.content": { + "name": "content", + "schema": "", + "columns": { + "page_id": { + "name": "page_id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "page_content": { + "name": "page_content", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "deleted_at": { + "name": "deleted_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_content_created-at": { + "name": "idx_content_created-at", + "columns": [ + { + "expression": "created_at", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.bilibili_user": { + "name": "bilibili_user", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "uid": { + "name": "uid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "username": { + "name": "username", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "desc": { + "name": "desc", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "fans": { + "name": "fans", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "idx_bili-user_uid": { + "name": "idx_bili-user_uid", + "columns": [ + { + "expression": "uid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unq_bili-user_uid": { + "columns": ["uid"], + "nullsNotDistinct": false, + "name": "unq_bili-user_uid" + } + }, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.bilibili_metadata": { + "name": "bilibili_metadata", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('all_data_id_seq'::regclass)" + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "bvid": { + "name": "bvid", + "type": "varchar(12)", + "primaryKey": false, + "notNull": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "uid": { + "name": "uid", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "tags": { + "name": "tags", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "duration": { + "name": "duration", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false, + "default": "CURRENT_TIMESTAMP" + }, + "status": { + "name": "status", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "cover_url": { + "name": "cover_url", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "all_data_pkey": { + "name": "all_data_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_all-data_aid": { + "name": "idx_all-data_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_all-data_bvid": { + "name": "idx_all-data_bvid", + "columns": [ + { + "expression": "bvid", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_all-data_uid": { + "name": "idx_all-data_uid", + "columns": [ + { + "expression": "uid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_bili-meta_status": { + "name": "idx_bili-meta_status", + "columns": [ + { + "expression": "status", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unq_all-data_aid": { + "name": "unq_all-data_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.classified_labels_human": { + "name": "classified_labels_human", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "author": { + "name": "author", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label": { + "name": "label", + "type": "smallint", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "idx_classified-labels-human_aid": { + "name": "idx_classified-labels-human_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_classified-labels-human_author": { + "name": "idx_classified-labels-human_author", + "columns": [ + { + "expression": "author", + "asc": true, + "nulls": "last", + "opclass": "uuid_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_classified-labels-human_created-at": { + "name": "idx_classified-labels-human_created-at", + "columns": [ + { + "expression": "created_at", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_classified-labels-human_label": { + "name": "idx_classified-labels-human_label", + "columns": [ + { + "expression": "label", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.labelling_result": { + "name": "labelling_result", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('labeling_result_id_seq'::regclass)" + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "label": { + "name": "label", + "type": "smallint", + "primaryKey": false, + "notNull": true + }, + "model_version": { + "name": "model_version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "logits": { + "name": "logits", + "type": "smallint[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "idx_labeling_label_model-version": { + "name": "idx_labeling_label_model-version", + "columns": [ + { + "expression": "label", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + }, + { + "expression": "model_version", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_labeling_model-version": { + "name": "idx_labeling_model-version", + "columns": [ + { + "expression": "model_version", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_labelling_aid-label": { + "name": "idx_labelling_aid-label", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + }, + { + "expression": "label", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "labeling_result_pkey": { + "name": "labeling_result_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unq_labelling-result_aid_model-version": { + "name": "unq_labelling-result_aid_model-version", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + }, + { + "expression": "model_version", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.latest_video_snapshot": { + "name": "latest_video_snapshot", + "schema": "", + "columns": { + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": true, + "notNull": true + }, + "time": { + "name": "time", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "coins": { + "name": "coins", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "likes": { + "name": "likes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "favorites": { + "name": "favorites", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "replies": { + "name": "replies", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "danmakus": { + "name": "danmakus", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "shares": { + "name": "shares", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "idx_latest-video-snapshot_time": { + "name": "idx_latest-video-snapshot_time", + "columns": [ + { + "expression": "time", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_latest-video-snapshot_views": { + "name": "idx_latest-video-snapshot_views", + "columns": [ + { + "expression": "views", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.video_snapshot": { + "name": "video_snapshot", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('video_snapshot_id_seq'::regclass)" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "views": { + "name": "views", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "coins": { + "name": "coins", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "likes": { + "name": "likes", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "favorites": { + "name": "favorites", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "shares": { + "name": "shares", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "danmakus": { + "name": "danmakus", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "replies": { + "name": "replies", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "idx_vid_snapshot_aid": { + "name": "idx_vid_snapshot_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_vid_snapshot_time": { + "name": "idx_vid_snapshot_time", + "columns": [ + { + "expression": "created_at", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_vid_snapshot_views": { + "name": "idx_vid_snapshot_views", + "columns": [ + { + "expression": "views", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "video_snapshot_pkey": { + "name": "video_snapshot_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.snapshot_schedule": { + "name": "snapshot_schedule", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "bigserial", + "primaryKey": false, + "notNull": true + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "started_at": { + "name": "started_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "finished_at": { + "name": "finished_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'pending'" + } + }, + "indexes": { + "idx_snapshot_schedule_aid": { + "name": "idx_snapshot_schedule_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_snapshot_schedule_started_at": { + "name": "idx_snapshot_schedule_started_at", + "columns": [ + { + "expression": "started_at", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_snapshot_schedule_status": { + "name": "idx_snapshot_schedule_status", + "columns": [ + { + "expression": "status", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_snapshot_schedule_type": { + "name": "idx_snapshot_schedule_type", + "columns": [ + { + "expression": "type", + "asc": true, + "nulls": "last", + "opclass": "text_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "snapshot_schedule_pkey": { + "name": "snapshot_schedule_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.songs": { + "name": "songs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('songs_id_seq'::regclass)" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "duration": { + "name": "duration", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "smallint", + "primaryKey": false, + "notNull": false + }, + "romanized_name": { + "name": "romanized_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "netease_id": { + "name": "netease_id", + "type": "bigint", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "deleted": { + "name": "deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "idx_aid": { + "name": "idx_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_hash_songs_aid": { + "name": "idx_hash_songs_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "hash", + "with": {} + }, + "idx_netease_id": { + "name": "idx_netease_id", + "columns": [ + { + "expression": "netease_id", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_published_at": { + "name": "idx_published_at", + "columns": [ + { + "expression": "published_at", + "asc": true, + "nulls": "last", + "opclass": "timestamptz_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "idx_type": { + "name": "idx_type", + "columns": [ + { + "expression": "type", + "asc": true, + "nulls": "last", + "opclass": "int2_ops", + "isExpression": false + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "songs_pkey": { + "name": "songs_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unq_songs_aid": { + "name": "unq_songs_aid", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unq_songs_netease_id": { + "name": "unq_songs_netease_id", + "columns": [ + { + "expression": "netease_id", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + }, + "public.views_increment_rate": { + "name": "views_increment_rate", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": "nextval('views_increment_rate_id_seq'::regclass)" + }, + "aid": { + "name": "aid", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "old_time": { + "name": "old_time", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "new_time": { + "name": "new_time", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "old_views": { + "name": "old_views", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "new_views": { + "name": "new_views", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "interval": { + "name": "interval", + "type": "interval", + "primaryKey": false, + "notNull": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "CURRENT_TIMESTAMP" + }, + "speed": { + "name": "speed", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unq_views-increment-rate_aid_interval": { + "name": "unq_views-increment-rate_aid_interval", + "columns": [ + { + "expression": "aid", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + }, + { + "expression": "interval", + "asc": true, + "nulls": "last", + "opclass": "int8_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "views_increment_rate_pkey": { + "name": "views_increment_rate_pkey", + "columns": [ + { + "expression": "id", + "asc": true, + "nulls": "last", + "opclass": "int4_ops", + "isExpression": false + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {}, + "policies": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": { + "public.all_data_id_seq": { + "name": "all_data_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + }, + "public.labeling_result_id_seq": { + "name": "labeling_result_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + }, + "public.songs_id_seq": { + "name": "songs_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + }, + "public.video_snapshot_id_seq": { + "name": "video_snapshot_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "increment": "1", + "cycle": false, + "cache": "1" + }, + "public.views_increment_rate_id_seq": { + "name": "views_increment_rate_id_seq", + "schema": "public", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "increment": "1", + "cycle": false, + "cache": "1" + } + }, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": { + "bilibili_metadata": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + }, + "labelling_result": { + "columns": { + "id": { + "isDefaultAnExpression": true + }, + "logits": { + "isArray": true, + "dimensions": 1, + "rawType": "smallint" + } + } + }, + "video_snapshot": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + }, + "songs": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + }, + "views_increment_rate": { + "columns": { + "id": { + "isDefaultAnExpression": true + } + } + } + } + } +} diff --git a/packages/solid/src/drizzle/main/meta/_journal.json b/packages/solid/src/drizzle/main/meta/_journal.json index f0d84ed..3ac49de 100644 --- a/packages/solid/src/drizzle/main/meta/_journal.json +++ b/packages/solid/src/drizzle/main/meta/_journal.json @@ -1,13 +1,13 @@ { - "version": "7", - "dialect": "postgresql", - "entries": [ - { - "idx": 0, - "version": "7", - "when": 1750513105905, - "tag": "0000_fresh_mac_gargan", - "breakpoints": true - } - ] -} \ No newline at end of file + "version": "7", + "dialect": "postgresql", + "entries": [ + { + "idx": 0, + "version": "7", + "when": 1750513105905, + "tag": "0000_fresh_mac_gargan", + "breakpoints": true + } + ] +} diff --git a/packages/solid/src/drizzle/main/relations.ts b/packages/solid/src/drizzle/main/relations.ts index 80768e2..0ed80c7 100644 --- a/packages/solid/src/drizzle/main/relations.ts +++ b/packages/solid/src/drizzle/main/relations.ts @@ -1,3 +1,2 @@ import { relations } from "drizzle-orm/relations"; -import { } from "./schema"; - +import {} from "./schema"; diff --git a/packages/solid/src/drizzle/main/schema.ts b/packages/solid/src/drizzle/main/schema.ts index 952b439..2bf72a7 100644 --- a/packages/solid/src/drizzle/main/schema.ts +++ b/packages/solid/src/drizzle/main/schema.ts @@ -1,178 +1,316 @@ -import { pgTable, index, text, timestamp, unique, serial, bigint, integer, uniqueIndex, varchar, uuid, smallint, bigserial, boolean, interval, real, pgSequence } from "drizzle-orm/pg-core" -import { sql } from "drizzle-orm" +import { + pgTable, + index, + text, + timestamp, + unique, + serial, + bigint, + integer, + uniqueIndex, + varchar, + uuid, + smallint, + bigserial, + boolean, + interval, + real, + pgSequence +} from "drizzle-orm/pg-core"; +import { sql } from "drizzle-orm"; +export const allDataIdSeq = pgSequence("all_data_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); +export const labelingResultIdSeq = pgSequence("labeling_result_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); +export const songsIdSeq = pgSequence("songs_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); +export const videoSnapshotIdSeq = pgSequence("video_snapshot_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "2147483647", + cache: "1", + cycle: false +}); +export const viewsIncrementRateIdSeq = pgSequence("views_increment_rate_id_seq", { + startWith: "1", + increment: "1", + minValue: "1", + maxValue: "9223372036854775807", + cache: "1", + cycle: false +}); -export const allDataIdSeq = pgSequence("all_data_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) -export const labelingResultIdSeq = pgSequence("labeling_result_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) -export const songsIdSeq = pgSequence("songs_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) -export const videoSnapshotIdSeq = pgSequence("video_snapshot_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "2147483647", cache: "1", cycle: false }) -export const viewsIncrementRateIdSeq = pgSequence("views_increment_rate_id_seq", { startWith: "1", increment: "1", minValue: "1", maxValue: "9223372036854775807", cache: "1", cycle: false }) +export const content = pgTable( + "content", + { + pageId: text("page_id").primaryKey().notNull(), + pageContent: text("page_content").notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + updatedAt: timestamp("updated_at", { withTimezone: true, mode: "string" }), + deletedAt: timestamp("deleted_at", { withTimezone: true, mode: "string" }) + }, + (table) => [index("idx_content_created-at").using("btree", table.createdAt.asc().nullsLast().op("timestamptz_ops"))] +); -export const content = pgTable("content", { - pageId: text("page_id").primaryKey().notNull(), - pageContent: text("page_content").notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - updatedAt: timestamp("updated_at", { withTimezone: true, mode: 'string' }), - deletedAt: timestamp("deleted_at", { withTimezone: true, mode: 'string' }), -}, (table) => [ - index("idx_content_created-at").using("btree", table.createdAt.asc().nullsLast().op("timestamptz_ops")), -]); +export const bilibiliUser = pgTable( + "bilibili_user", + { + id: serial().primaryKey().notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + uid: bigint({ mode: "number" }).notNull(), + username: text().notNull(), + desc: text().notNull(), + fans: integer().notNull() + }, + (table) => [ + index("idx_bili-user_uid").using("btree", table.uid.asc().nullsLast().op("int8_ops")), + unique("unq_bili-user_uid").on(table.uid) + ] +); -export const bilibiliUser = pgTable("bilibili_user", { - id: serial().primaryKey().notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - uid: bigint({ mode: "number" }).notNull(), - username: text().notNull(), - desc: text().notNull(), - fans: integer().notNull(), -}, (table) => [ - index("idx_bili-user_uid").using("btree", table.uid.asc().nullsLast().op("int8_ops")), - unique("unq_bili-user_uid").on(table.uid), -]); +export const bilibiliMetadata = pgTable( + "bilibili_metadata", + { + id: integer() + .default(sql`nextval('all_data_id_seq'::regclass)`) + .notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + bvid: varchar({ length: 12 }), + description: text(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + uid: bigint({ mode: "number" }), + tags: text(), + title: text(), + publishedAt: timestamp("published_at", { withTimezone: true, mode: "string" }), + duration: integer(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }).default(sql`CURRENT_TIMESTAMP`), + status: integer().default(0).notNull(), + coverUrl: text("cover_url") + }, + (table) => [ + uniqueIndex("all_data_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), + index("idx_all-data_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_all-data_bvid").using("btree", table.bvid.asc().nullsLast().op("text_ops")), + index("idx_all-data_uid").using("btree", table.uid.asc().nullsLast().op("int8_ops")), + index("idx_bili-meta_status").using("btree", table.status.asc().nullsLast().op("int4_ops")), + uniqueIndex("unq_all-data_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")) + ] +); -export const bilibiliMetadata = pgTable("bilibili_metadata", { - id: integer().default(sql`nextval('all_data_id_seq'::regclass)`).notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - bvid: varchar({ length: 12 }), - description: text(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - uid: bigint({ mode: "number" }), - tags: text(), - title: text(), - publishedAt: timestamp("published_at", { withTimezone: true, mode: 'string' }), - duration: integer(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`), - status: integer().default(0).notNull(), - coverUrl: text("cover_url"), -}, (table) => [ - uniqueIndex("all_data_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), - index("idx_all-data_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_all-data_bvid").using("btree", table.bvid.asc().nullsLast().op("text_ops")), - index("idx_all-data_uid").using("btree", table.uid.asc().nullsLast().op("int8_ops")), - index("idx_bili-meta_status").using("btree", table.status.asc().nullsLast().op("int4_ops")), - uniqueIndex("unq_all-data_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), -]); +export const classifiedLabelsHuman = pgTable( + "classified_labels_human", + { + id: serial().primaryKey().notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + author: uuid().notNull(), + label: smallint().notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull() + }, + (table) => [ + index("idx_classified-labels-human_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_classified-labels-human_author").using("btree", table.author.asc().nullsLast().op("uuid_ops")), + index("idx_classified-labels-human_created-at").using( + "btree", + table.createdAt.asc().nullsLast().op("timestamptz_ops") + ), + index("idx_classified-labels-human_label").using("btree", table.label.asc().nullsLast().op("int2_ops")) + ] +); -export const classifiedLabelsHuman = pgTable("classified_labels_human", { - id: serial().primaryKey().notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - author: uuid().notNull(), - label: smallint().notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), -}, (table) => [ - index("idx_classified-labels-human_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_classified-labels-human_author").using("btree", table.author.asc().nullsLast().op("uuid_ops")), - index("idx_classified-labels-human_created-at").using("btree", table.createdAt.asc().nullsLast().op("timestamptz_ops")), - index("idx_classified-labels-human_label").using("btree", table.label.asc().nullsLast().op("int2_ops")), -]); +export const labellingResult = pgTable( + "labelling_result", + { + id: integer() + .default(sql`nextval('labeling_result_id_seq'::regclass)`) + .notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + label: smallint().notNull(), + modelVersion: text("model_version").notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + logits: smallint().array() + }, + (table) => [ + index("idx_labeling_label_model-version").using( + "btree", + table.label.asc().nullsLast().op("int2_ops"), + table.modelVersion.asc().nullsLast().op("int2_ops") + ), + index("idx_labeling_model-version").using("btree", table.modelVersion.asc().nullsLast().op("text_ops")), + index("idx_labelling_aid-label").using( + "btree", + table.aid.asc().nullsLast().op("int2_ops"), + table.label.asc().nullsLast().op("int2_ops") + ), + uniqueIndex("labeling_result_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), + uniqueIndex("unq_labelling-result_aid_model-version").using( + "btree", + table.aid.asc().nullsLast().op("int8_ops"), + table.modelVersion.asc().nullsLast().op("int8_ops") + ) + ] +); -export const labellingResult = pgTable("labelling_result", { - id: integer().default(sql`nextval('labeling_result_id_seq'::regclass)`).notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - label: smallint().notNull(), - modelVersion: text("model_version").notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - logits: smallint().array(), -}, (table) => [ - index("idx_labeling_label_model-version").using("btree", table.label.asc().nullsLast().op("int2_ops"), table.modelVersion.asc().nullsLast().op("int2_ops")), - index("idx_labeling_model-version").using("btree", table.modelVersion.asc().nullsLast().op("text_ops")), - index("idx_labelling_aid-label").using("btree", table.aid.asc().nullsLast().op("int2_ops"), table.label.asc().nullsLast().op("int2_ops")), - uniqueIndex("labeling_result_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), - uniqueIndex("unq_labelling-result_aid_model-version").using("btree", table.aid.asc().nullsLast().op("int8_ops"), table.modelVersion.asc().nullsLast().op("int8_ops")), -]); +export const latestVideoSnapshot = pgTable( + "latest_video_snapshot", + { + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).primaryKey().notNull(), + time: timestamp({ withTimezone: true, mode: "string" }).notNull(), + views: integer().notNull(), + coins: integer().notNull(), + likes: integer().notNull(), + favorites: integer().notNull(), + replies: integer().notNull(), + danmakus: integer().notNull(), + shares: integer().notNull() + }, + (table) => [ + index("idx_latest-video-snapshot_time").using("btree", table.time.asc().nullsLast().op("timestamptz_ops")), + index("idx_latest-video-snapshot_views").using("btree", table.views.asc().nullsLast().op("int4_ops")) + ] +); -export const latestVideoSnapshot = pgTable("latest_video_snapshot", { - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).primaryKey().notNull(), - time: timestamp({ withTimezone: true, mode: 'string' }).notNull(), - views: integer().notNull(), - coins: integer().notNull(), - likes: integer().notNull(), - favorites: integer().notNull(), - replies: integer().notNull(), - danmakus: integer().notNull(), - shares: integer().notNull(), -}, (table) => [ - index("idx_latest-video-snapshot_time").using("btree", table.time.asc().nullsLast().op("timestamptz_ops")), - index("idx_latest-video-snapshot_views").using("btree", table.views.asc().nullsLast().op("int4_ops")), -]); +export const videoSnapshot = pgTable( + "video_snapshot", + { + id: integer() + .default(sql`nextval('video_snapshot_id_seq'::regclass)`) + .notNull(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + views: integer().notNull(), + coins: integer().notNull(), + likes: integer().notNull(), + favorites: integer().notNull(), + shares: integer().notNull(), + danmakus: integer().notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + replies: integer().notNull() + }, + (table) => [ + index("idx_vid_snapshot_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_vid_snapshot_time").using("btree", table.createdAt.asc().nullsLast().op("timestamptz_ops")), + index("idx_vid_snapshot_views").using("btree", table.views.asc().nullsLast().op("int4_ops")), + uniqueIndex("video_snapshot_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")) + ] +); -export const videoSnapshot = pgTable("video_snapshot", { - id: integer().default(sql`nextval('video_snapshot_id_seq'::regclass)`).notNull(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - views: integer().notNull(), - coins: integer().notNull(), - likes: integer().notNull(), - favorites: integer().notNull(), - shares: integer().notNull(), - danmakus: integer().notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - replies: integer().notNull(), -}, (table) => [ - index("idx_vid_snapshot_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_vid_snapshot_time").using("btree", table.createdAt.asc().nullsLast().op("timestamptz_ops")), - index("idx_vid_snapshot_views").using("btree", table.views.asc().nullsLast().op("int4_ops")), - uniqueIndex("video_snapshot_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), -]); +export const snapshotSchedule = pgTable( + "snapshot_schedule", + { + id: bigserial({ mode: "bigint" }).notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + type: text(), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + startedAt: timestamp("started_at", { withTimezone: true, mode: "string" }), + finishedAt: timestamp("finished_at", { withTimezone: true, mode: "string" }), + status: text().default("pending").notNull() + }, + (table) => [ + index("idx_snapshot_schedule_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_snapshot_schedule_started_at").using( + "btree", + table.startedAt.asc().nullsLast().op("timestamptz_ops") + ), + index("idx_snapshot_schedule_status").using("btree", table.status.asc().nullsLast().op("text_ops")), + index("idx_snapshot_schedule_type").using("btree", table.type.asc().nullsLast().op("text_ops")), + uniqueIndex("snapshot_schedule_pkey").using("btree", table.id.asc().nullsLast().op("int8_ops")) + ] +); -export const snapshotSchedule = pgTable("snapshot_schedule", { - id: bigserial({ mode: "bigint" }).notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - type: text(), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - startedAt: timestamp("started_at", { withTimezone: true, mode: 'string' }), - finishedAt: timestamp("finished_at", { withTimezone: true, mode: 'string' }), - status: text().default('pending').notNull(), -}, (table) => [ - index("idx_snapshot_schedule_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_snapshot_schedule_started_at").using("btree", table.startedAt.asc().nullsLast().op("timestamptz_ops")), - index("idx_snapshot_schedule_status").using("btree", table.status.asc().nullsLast().op("text_ops")), - index("idx_snapshot_schedule_type").using("btree", table.type.asc().nullsLast().op("text_ops")), - uniqueIndex("snapshot_schedule_pkey").using("btree", table.id.asc().nullsLast().op("int8_ops")), -]); +export const songs = pgTable( + "songs", + { + id: integer() + .default(sql`nextval('songs_id_seq'::regclass)`) + .notNull(), + name: text(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }), + publishedAt: timestamp("published_at", { withTimezone: true, mode: "string" }), + duration: integer(), + type: smallint(), + romanizedName: text("romanized_name"), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + neteaseId: bigint("netease_id", { mode: "number" }), + createdAt: timestamp("created_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + updatedAt: timestamp("updated_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + deleted: boolean().default(false).notNull() + }, + (table) => [ + index("idx_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_hash_songs_aid").using("hash", table.aid.asc().nullsLast().op("int8_ops")), + index("idx_netease_id").using("btree", table.neteaseId.asc().nullsLast().op("int8_ops")), + index("idx_published_at").using("btree", table.publishedAt.asc().nullsLast().op("timestamptz_ops")), + index("idx_type").using("btree", table.type.asc().nullsLast().op("int2_ops")), + uniqueIndex("songs_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), + uniqueIndex("unq_songs_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), + uniqueIndex("unq_songs_netease_id").using("btree", table.neteaseId.asc().nullsLast().op("int8_ops")) + ] +); -export const songs = pgTable("songs", { - id: integer().default(sql`nextval('songs_id_seq'::regclass)`).notNull(), - name: text(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }), - publishedAt: timestamp("published_at", { withTimezone: true, mode: 'string' }), - duration: integer(), - type: smallint(), - romanizedName: text("romanized_name"), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - neteaseId: bigint("netease_id", { mode: "number" }), - createdAt: timestamp("created_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - updatedAt: timestamp("updated_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - deleted: boolean().default(false).notNull(), -}, (table) => [ - index("idx_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_hash_songs_aid").using("hash", table.aid.asc().nullsLast().op("int8_ops")), - index("idx_netease_id").using("btree", table.neteaseId.asc().nullsLast().op("int8_ops")), - index("idx_published_at").using("btree", table.publishedAt.asc().nullsLast().op("timestamptz_ops")), - index("idx_type").using("btree", table.type.asc().nullsLast().op("int2_ops")), - uniqueIndex("songs_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), - uniqueIndex("unq_songs_aid").using("btree", table.aid.asc().nullsLast().op("int8_ops")), - uniqueIndex("unq_songs_netease_id").using("btree", table.neteaseId.asc().nullsLast().op("int8_ops")), -]); - -export const viewsIncrementRate = pgTable("views_increment_rate", { - id: integer().default(sql`nextval('views_increment_rate_id_seq'::regclass)`).notNull(), - // You can use { mode: "bigint" } if numbers are exceeding js number limitations - aid: bigint({ mode: "number" }).notNull(), - oldTime: timestamp("old_time", { withTimezone: true, mode: 'string' }).notNull(), - newTime: timestamp("new_time", { withTimezone: true, mode: 'string' }).notNull(), - oldViews: integer("old_views").notNull(), - newViews: integer("new_views").notNull(), - interval: interval().notNull(), - updatedAt: timestamp("updated_at", { withTimezone: true, mode: 'string' }).default(sql`CURRENT_TIMESTAMP`).notNull(), - speed: real(), -}, (table) => [ - uniqueIndex("unq_views-increment-rate_aid_interval").using("btree", table.aid.asc().nullsLast().op("int8_ops"), table.interval.asc().nullsLast().op("int8_ops")), - uniqueIndex("views_increment_rate_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")), -]); +export const viewsIncrementRate = pgTable( + "views_increment_rate", + { + id: integer() + .default(sql`nextval('views_increment_rate_id_seq'::regclass)`) + .notNull(), + // You can use { mode: "bigint" } if numbers are exceeding js number limitations + aid: bigint({ mode: "number" }).notNull(), + oldTime: timestamp("old_time", { withTimezone: true, mode: "string" }).notNull(), + newTime: timestamp("new_time", { withTimezone: true, mode: "string" }).notNull(), + oldViews: integer("old_views").notNull(), + newViews: integer("new_views").notNull(), + interval: interval().notNull(), + updatedAt: timestamp("updated_at", { withTimezone: true, mode: "string" }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), + speed: real() + }, + (table) => [ + uniqueIndex("unq_views-increment-rate_aid_interval").using( + "btree", + table.aid.asc().nullsLast().op("int8_ops"), + table.interval.asc().nullsLast().op("int8_ops") + ), + uniqueIndex("views_increment_rate_pkey").using("btree", table.id.asc().nullsLast().op("int4_ops")) + ] +); diff --git a/packages/solid/src/drizzle/outerSchema.d.ts b/packages/solid/src/drizzle/outerSchema.d.ts index c339373..98d2307 100644 --- a/packages/solid/src/drizzle/outerSchema.d.ts +++ b/packages/solid/src/drizzle/outerSchema.d.ts @@ -6,4 +6,4 @@ export type UserType = InferSelectModel; export type SensitiveUserFields = "password" | "unqId"; export type BilibiliMetadataType = InferSelectModel; export type VideoSnapshotType = InferSelectModel; -export type LatestVideoSnapshotType = InferSelectModel; \ No newline at end of file +export type LatestVideoSnapshotType = InferSelectModel; diff --git a/packages/solid/src/entry-server.tsx b/packages/solid/src/entry-server.tsx index 28a0ac7..2a34882 100644 --- a/packages/solid/src/entry-server.tsx +++ b/packages/solid/src/entry-server.tsx @@ -15,7 +15,9 @@ export default createHandler(() => ( {assets} -
{children}
+
+ {children} +
{scripts} diff --git a/packages/solid/src/lib/dbCache.ts b/packages/solid/src/lib/dbCache.ts index e604853..c3da0de 100644 --- a/packages/solid/src/lib/dbCache.ts +++ b/packages/solid/src/lib/dbCache.ts @@ -29,4 +29,4 @@ export async function useCachedFetch( hooks.set(identifier, hook!); updateContext(hooks); return promise; -} \ No newline at end of file +} diff --git a/packages/solid/src/misc/postcss-calc-keyword-polyfill.js b/packages/solid/src/misc/postcss-calc-keyword-polyfill.js index 3cfb791..ddb324e 100644 --- a/packages/solid/src/misc/postcss-calc-keyword-polyfill.js +++ b/packages/solid/src/misc/postcss-calc-keyword-polyfill.js @@ -1,36 +1,36 @@ -import { plugin } from 'postcss'; +import { plugin } from "postcss"; -export default plugin('postcss-calc-keyword-polyfill', () => { - const replacements = { - 'pi': '3.141592653589793', - 'e': '2.718281828459045', - 'infinity': '1e308', // A very large number to simulate infinity - '-infinity': '-1e308', // A very small number to simulate -infinity - 'nan': '0/0', // Division by zero in calc() results in NaN in modern browsers - }; +export default plugin("postcss-calc-keyword-polyfill", () => { + const replacements = { + pi: "3.141592653589793", + e: "2.718281828459045", + infinity: "1e308", // A very large number to simulate infinity + "-infinity": "-1e308", // A very small number to simulate -infinity + nan: "0/0" // Division by zero in calc() results in NaN in modern browsers + }; - // Regex to find the keywords, case-insensitive - const keywordRegex = new RegExp(`\\b(-?(${Object.keys(replacements).join('|')}))\\b`, 'gi'); + // Regex to find the keywords, case-insensitive + const keywordRegex = new RegExp(`\\b(-?(${Object.keys(replacements).join("|")}))\\b`, "gi"); - return (root) => { - root.walkDecls(decl => { - // Check if the declaration value contains calc() - if (decl.value.toLowerCase().includes('calc(')) { - decl.value = decl.value.replace(/calc\(([^)]+)\)/ig, (match, expression) => { - const newExpression = expression.replace(keywordRegex, (keyword) => { - const lowerKeyword = keyword.toLowerCase(); - if (lowerKeyword in replacements) { - return replacements[lowerKeyword]; - } - // Handle cases like -pi and -e - if (lowerKeyword.startsWith('-') && lowerKeyword.substring(1) in replacements) { - return `-${replacements[lowerKeyword.substring(1)]}` - } - return keyword; // Should not happen with the current regex, but as a fallback - }); - return `calc(${newExpression})`; - }); - } - }); - }; -}); \ No newline at end of file + return (root) => { + root.walkDecls((decl) => { + // Check if the declaration value contains calc() + if (decl.value.toLowerCase().includes("calc(")) { + decl.value = decl.value.replace(/calc\(([^)]+)\)/gi, (match, expression) => { + const newExpression = expression.replace(keywordRegex, (keyword) => { + const lowerKeyword = keyword.toLowerCase(); + if (lowerKeyword in replacements) { + return replacements[lowerKeyword]; + } + // Handle cases like -pi and -e + if (lowerKeyword.startsWith("-") && lowerKeyword.substring(1) in replacements) { + return `-${replacements[lowerKeyword.substring(1)]}`; + } + return keyword; // Should not happen with the current regex, but as a fallback + }); + return `calc(${newExpression})`; + }); + } + }); + }; +}); diff --git a/packages/solid/src/routes/[...404].tsx b/packages/solid/src/routes/[...404].tsx index f0fe0aa..40c1734 100644 --- a/packages/solid/src/routes/[...404].tsx +++ b/packages/solid/src/routes/[...404].tsx @@ -11,9 +11,7 @@ export default function NotFound() {

404

咦……页面去哪里了(゚Д゚≡゚д゚)!?

- - 带我回首页! - + 带我回首页!
); diff --git a/packages/solid/src/routes/en/song/[id]/info.tsx b/packages/solid/src/routes/en/song/[id]/info.tsx index 18b273e..52936ba 100644 --- a/packages/solid/src/routes/en/song/[id]/info.tsx +++ b/packages/solid/src/routes/en/song/[id]/info.tsx @@ -26,9 +26,7 @@ export default function Info() { PUBLISHER - - 洛凛 - + 洛凛
diff --git a/packages/solid/src/routes/index.tsx b/packages/solid/src/routes/index.tsx index 0bfedc3..3bde6f7 100644 --- a/packages/solid/src/routes/index.tsx +++ b/packages/solid/src/routes/index.tsx @@ -31,13 +31,18 @@ export const route = { const VideoCard: Component = (props) => { return ( - - + + - + {props.video.bilibili_metadata.title} + {props.video.latest_video_snapshot.views} 播放 ); @@ -53,15 +58,13 @@ export default function Home() {

传说助攻

+ py-2 px-4 mt-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden" + > Loading...
}> - { - (video) => - } + {(video) => }
- ); } diff --git a/packages/solid/src/routes/song/[id]/_info.tsx b/packages/solid/src/routes/song/[id]/_info.tsx index 522c773..e44e7fc 100644 --- a/packages/solid/src/routes/song/[id]/_info.tsx +++ b/packages/solid/src/routes/song/[id]/_info.tsx @@ -97,7 +97,6 @@ export default function VideoInfoPage() { }; }); - return (
diff --git a/packages/solid/src/routes/song/[id]/info.tsx b/packages/solid/src/routes/song/[id]/info.tsx index ca3de65..106ff43 100644 --- a/packages/solid/src/routes/song/[id]/info.tsx +++ b/packages/solid/src/routes/song/[id]/info.tsx @@ -1,86 +1,261 @@ import { Layout } from "~/components/layout"; -import { Button, Card, CardContent, CardMedia, ExtendedFAB, Typography } from "@m3-components/solid"; +import { Button, Card, CardContent, CardMedia, ExtendedFAB, IconButton, Typography } from "@m3-components/solid"; import { TabSwitcher } from "~/components/song/TabSwitcher"; import { EditIcon, HomeIcon, MusicIcon } from "~/components/icons"; import { A } from "@solidjs/router"; +import { RightArrow } from "~/components/icons/Arrow"; +import { Component } from "solid-js"; +import { LinkIcon } from "~/components/icons/Link"; +import { StarBadge4, StarBadge6, StarBadge8 } from "~/components/icons/StarBadges"; +import { HistoryIcon } from "~/components/icons/History"; + +const Staff: Component<{ name: string; role: string; num: number }> = (props) => { + return ( + +
+ + {props.num} + +
+ + {props.name} + + + {props.role} + +
+
+ + + +
+ ); +}; + +const Content: Component = () => { + return ( + <> + +
+ +
+ + + 赤羽 & 洛凛 + + + 尘海绘仙缘 + + + 4:54 + + + 12,422 + 再生 + +
+
+
+
+
+
+
+
+
+ + + + 尘海绘仙缘 + +
+
+ + 演唱 + + + 赤羽 + +
+
+ + 时长 + + 4:28 +
+
+ + 投稿 + + + 洛凛 + +
+
+ + 链接 + + + 哔哩哔哩 + VocaDB + +
+
+ + 发布时间 + + 2024-12-15 12:15:00 +
+
+ + 再生 + + 1.24 万 (12,422) +
+
+
+ +
+ +
+
+ 简介 + + 《尘海绘仙缘》洛凛于 + +  2024 年 12 月 15 日 + + 投稿至 + 哔哩哔哩的 Synthesizer V  + 中文 + 原创歌曲, 由赤羽演唱。 + +
+ 制作人员 +
+ + + + + +
+
+ + ); +}; + +const RightSideBar: Component = () => { + return ( + <> +
+ + + +
+ + + ); +}; + +const LeftSideBar: Component = () => { + return ( + <> + + + ); +}; export default function Info() { return ( - + 尘海绘仙缘 - 歌曲信息 - 中 V 档案馆
-