From 8b97e64b59741b29f700410e03c7da4493cb978d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 3 Sep 2024 19:51:37 +0200 Subject: [PATCH] Migrate from postgres to sqlite --- drizzle.config.ts | 8 +- nuxt.config.ts | 1 + package.json | 22 +- pnpm-lock.yaml | 567 +++++++++--------- script.cjs | 8 +- .../migrations/0000_grey_marvel_zombies.sql | 48 ++ .../migrations/0000_noisy_randall_flagg.sql | 63 -- .../migrations/meta/0000_snapshot.json | 151 ++--- server/database/migrations/meta/_journal.json | 8 +- server/database/schema.ts | 18 +- server/plugins/migrations.ts | 17 + server/utils/db.ts | 6 +- server/utils/dbFields.ts | 18 +- 13 files changed, 474 insertions(+), 461 deletions(-) create mode 100644 server/database/migrations/0000_grey_marvel_zombies.sql delete mode 100644 server/database/migrations/0000_noisy_randall_flagg.sql create mode 100644 server/plugins/migrations.ts diff --git a/drizzle.config.ts b/drizzle.config.ts index 26e4610..7ab5b0b 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,13 +1,7 @@ import type { Config } from 'drizzle-kit' -import { config } from 'dotenv' - -config() export default { - dialect: 'postgresql', + dialect: 'sqlite', schema: './server/database/schema.ts', out: './server/database/migrations', - dbCredentials: { - url: process.env.NUXT_POSTGRES_URL, - }, } satisfies Config diff --git a/nuxt.config.ts b/nuxt.config.ts index cd2ee18..c07524e 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -38,6 +38,7 @@ export default defineNuxtConfig({ analytics: true, blob: true, kv: true, + database: true, }, // Nuxt Icon diff --git a/package.json b/package.json index 0aec448..454db77 100644 --- a/package.json +++ b/package.json @@ -10,35 +10,31 @@ "postinstall": "nuxt prepare && node script.cjs", "lint:fix": "eslint . --fix", "db:generate": "drizzle-kit generate", - "db:migrate": "drizzle-kit migrate", - "db:push": "drizzle-kit push", - "db:pull": "drizzle-kit pull" + "db:migrate": "drizzle-kit migrate" }, "dependencies": { - "@nuxt/image": "^1.7.1", - "@nuxthub/core": "^0.7.7", + "@nuxt/image": "^1.8.0", + "@nuxthub/core": "^0.7.9", "@nuxtjs/google-fonts": "^3.2.0", "drizzle-orm": "^0.33.0", "h3-zod": "^0.5.3", - "nuxt-auth-utils": "^0.3.4", - "postgres": "^3.4.4", - "vue": "^3.4.38", + "nuxt-auth-utils": "^0.3.5", + "vue": "^3.5.0", "vue-router": "^4.4.3", "zod": "^3.23.8" }, "devDependencies": { - "@antfu/eslint-config": "^2.27.3", + "@antfu/eslint-config": "^3.0.0", "@nuxt/devtools": "^1.4.1", "@nuxt/ui": "^2.18.4", - "@types/node": "^22.5.1", + "@types/node": "^22.5.2", "@vueuse/core": "^11.0.3", "@vueuse/nuxt": "^11.0.3", - "dotenv": "^16.4.5", "drizzle-kit": "^0.24.2", "eslint": "^9.9.1", "nuxt": "^3.13.0", "typescript": "^5.5.4", - "vue-tsc": "^2.0.29", - "wrangler": "^3.72.3" + "vue-tsc": "^2.1.4", + "wrangler": "^3.74.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4cd1d97..ad314b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: dependencies: '@nuxt/image': - specifier: ^1.7.1 - version: 1.7.1(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1) + specifier: ^1.8.0 + version: 1.8.0(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1) '@nuxthub/core': - specifier: ^0.7.7 - version: 0.7.7(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + specifier: ^0.7.9 + version: 0.7.9(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxtjs/google-fonts': specifier: ^3.2.0 version: 3.2.0(magicast@0.3.5)(rollup@4.21.1) @@ -24,42 +24,36 @@ importers: specifier: ^0.5.3 version: 0.5.3(h3@1.12.0)(zod@3.23.8) nuxt-auth-utils: - specifier: ^0.3.4 - version: 0.3.4(magicast@0.3.5)(rollup@4.21.1) - postgres: - specifier: ^3.4.4 - version: 3.4.4 + specifier: ^0.3.5 + version: 0.3.5(magicast@0.3.5)(rollup@4.21.1) vue: - specifier: ^3.4.38 - version: 3.4.38(typescript@5.5.4) + specifier: ^3.5.0 + version: 3.5.0(typescript@5.5.4) vue-router: specifier: ^4.4.3 - version: 4.4.3(vue@3.4.38(typescript@5.5.4)) + version: 4.4.3(vue@3.5.0(typescript@5.5.4)) zod: specifier: ^3.23.8 version: 3.23.8 devDependencies: '@antfu/eslint-config': - specifier: ^2.27.3 - version: 2.27.3(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + specifier: ^3.0.0 + version: 3.0.0(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.5.0)(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) '@nuxt/devtools': specifier: ^1.4.1 - version: 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + version: 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxt/ui': specifier: ^2.18.4 - version: 2.18.4(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + version: 2.18.4(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4)) '@types/node': - specifier: ^22.5.1 - version: 22.5.1 + specifier: ^22.5.2 + version: 22.5.2 '@vueuse/core': specifier: ^11.0.3 - version: 11.0.3(vue@3.4.38(typescript@5.5.4)) + version: 11.0.3(vue@3.5.0(typescript@5.5.4)) '@vueuse/nuxt': specifier: ^11.0.3 - version: 11.0.3(magicast@0.3.5)(nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.1)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)))(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4)) - dotenv: - specifier: ^16.4.5 - version: 16.4.5 + version: 11.0.3(magicast@0.3.5)(nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.2)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)))(rollup@4.21.1)(vue@3.5.0(typescript@5.5.4)) drizzle-kit: specifier: ^0.24.2 version: 0.24.2 @@ -68,16 +62,16 @@ importers: version: 9.9.1(jiti@1.21.6) nuxt: specifier: ^3.13.0 - version: 3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.1)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)) + version: 3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.2)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)) typescript: specifier: ^5.5.4 version: 5.5.4 vue-tsc: - specifier: ^2.0.29 - version: 2.0.29(typescript@5.5.4) + specifier: ^2.1.4 + version: 2.1.4(typescript@5.5.4) wrangler: - specifier: ^3.72.3 - version: 3.72.3(@cloudflare/workers-types@4.20240821.1) + specifier: ^3.74.0 + version: 3.74.0(@cloudflare/workers-types@4.20240821.1) packages: @@ -89,15 +83,15 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@2.27.3': - resolution: {integrity: sha512-Y2Vh/LvPAaYoyLwCiZHJ7p76LEIGg6debeUA4Qs+KOrlGuXLQWRmdZlC6SB33UDNzXqkFeaXAlEcYUqvYoiMKA==} + '@antfu/eslint-config@3.0.0': + resolution: {integrity: sha512-3HC35LrsW5kvHyVY2U6yat3Uz20/9Re5137LAKqAtl2tKictef2CmdYk5z+qK4UsaY32MMfg98MhuBbvAvZF1w==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.5.8 '@prettier/plugin-xml': ^3.4.1 '@unocss/eslint-plugin': '>=0.50.0' astro-eslint-parser: ^1.0.2 - eslint: '>=8.40.0' + eslint: ^9.5.0 eslint-plugin-astro: ^1.2.0 eslint-plugin-format: '>=0.1.0' eslint-plugin-react-hooks: ^4.6.0 @@ -335,8 +329,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-shared@0.4.0': - resolution: {integrity: sha512-XAFOldVQsbxQ7mjbqX2q1dNIgcLbKSytk41pwuZTn9e0p7OeTpFTosJef8uwosL6CcOAHqcW1f1HJxyjwmtGxw==} + '@cloudflare/workers-shared@0.4.1': + resolution: {integrity: sha512-nYh4r8JwOOjYIdH2zub++CmIKlkYFlpxI1nBHimoiHcytJXD/b7ldJ21TtfzUZMCgI78mxVlymMHA/ReaOxKlA==} engines: {node: '>=16.7.0'} '@cloudflare/workers-types@4.20240821.1': @@ -1223,6 +1217,10 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.18.0': resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1374,8 +1372,8 @@ packages: '@nuxt/icon@1.5.0': resolution: {integrity: sha512-8taJrtLYV14LhuLUCcyUwn/Ej49xIEsrWneBglx6OEqb2wnw6IOtCVYT/O44/rL+94EK2y3rXD9LegWUqdbpqA==} - '@nuxt/image@1.7.1': - resolution: {integrity: sha512-vD3p9CmFO718sbBZCaizOvk3Uw/M9eE5cotWD9rlGoMOf3bUYnXuxP4mEwa/qgupoZ+X5MnasZoWbrj8y9nfKg==} + '@nuxt/image@1.8.0': + resolution: {integrity: sha512-GBbORch+ZfWJ0KB8PaXABsPjaiEXB4B4plcpAUVNCdzKZi2qQ4beRnEXfAbtAWPUPefj3rgCG7b9AqAe51Qlzw==} engines: {node: ^14.16.0 || >=16.11.0} '@nuxt/kit@3.13.0': @@ -1400,8 +1398,8 @@ packages: peerDependencies: vue: ^3.3.4 - '@nuxthub/core@0.7.7': - resolution: {integrity: sha512-w/ONMkzdS/LSwUc7joja1hH53R2KnlzNZAhzXBYCrqf1K24LsW/OBBD8I5IcmjmMC0c3pCYBki87y8rcFo+5Zw==} + '@nuxthub/core@0.7.9': + resolution: {integrity: sha512-0MGgSHZMO0bUc0ZUbwtklIDJ4HeK+BSkqaRMeSE/EpUP3zFhbrzniPkw5wT8jlwtld0FSMspEyW3N6xoggXVhg==} '@nuxtjs/color-mode@3.4.4': resolution: {integrity: sha512-VSNJVGnRIjiGmfbMa0cN+rwNRowDRTL/wku/z5MpKSanVo3khIRitBNqNviso1l3T+LW0pLHeXBNp6L8g/l1EA==} @@ -1668,31 +1666,8 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@stylistic/eslint-plugin-js@2.6.4': - resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin-jsx@2.6.4': - resolution: {integrity: sha512-bIvVhdtjmyu3S10V7QRIuawtCZSq9gRmzAX23ucjCOdSFzEwlq+di0IM0riBAvvQerrJL4SM6G3xgyPs8BSXIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin-plus@2.6.4': - resolution: {integrity: sha512-EuRvtxhf7Hv8OoMIePulP/6rBJIgPTu1l5GAm1780WcF1Cl8bOZXIn84Pdac5pNv6lVlzCOFm8MD3VE+2YROuA==} - peerDependencies: - eslint: '*' - - '@stylistic/eslint-plugin-ts@2.6.4': - resolution: {integrity: sha512-yxL8Hj6WkObw1jfiLpBzKy5yfxY6vwlwO4miq34ySErUjUecPV5jxfVbOe4q1QDPKemQGPq93v7sAQS5PzM8lA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.40.0' - - '@stylistic/eslint-plugin@2.6.4': - resolution: {integrity: sha512-euUGnjzH8EOqEYTGk9dB2OBINp0FX1nuO7/k4fO82zNRBIKZgJoDwTLM4Ce+Om6W1Qmh1PrZjCr4jh4tMEXGPQ==} + '@stylistic/eslint-plugin@2.7.2': + resolution: {integrity: sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1753,8 +1728,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.5.1': - resolution: {integrity: sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==} + '@types/node@22.5.2': + resolution: {integrity: sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1871,8 +1846,8 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/eslint-plugin@1.0.5': - resolution: {integrity: sha512-F4zlKv5S/aG3kiFyJHbkbInKfGuIs3muDnpNfr62g8tV0ALbP/MYjLKWN92olLCtWUb2cKl0pew0gKkkoHEUqw==} + '@vitest/eslint-plugin@1.1.0': + resolution: {integrity: sha512-Ur80Y27Wbw8gFHJ3cv6vypcjXmrx6QHfw+q435h6Q2L+tf+h4Xf5pJTCL4YU/Jps9EVeggQxS85OcUZU7sdXRw==} peerDependencies: '@typescript-eslint/utils': '>= 8.0' eslint: '>= 8.57.0' @@ -1886,14 +1861,14 @@ packages: vitest: optional: true - '@volar/language-core@2.4.0': - resolution: {integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==} + '@volar/language-core@2.4.1': + resolution: {integrity: sha512-9AKhC7Qn2mQYxj7Dz3bVxeOk7gGJladhWixUYKef/o0o7Bm4an+A3XvmcTHVqZ8stE6lBVH++g050tBtJ4TZPQ==} - '@volar/source-map@2.4.0': - resolution: {integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==} + '@volar/source-map@2.4.1': + resolution: {integrity: sha512-Xq6ep3OZg9xUqN90jEgB9ztX5SsTz1yiV8wiQbcYNjWkek+Ie3dc8l7AVt3EhDm9mSIR58oWczHkzM2H6HIsmQ==} - '@volar/typescript@2.4.0': - resolution: {integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==} + '@volar/typescript@2.4.1': + resolution: {integrity: sha512-UoRzC0PXcwajFQTu8XxKSYNsWNBtVja6Y9gC8eLv7kYm+UEKJCcZ8g7dialsOYA0HKs3Vpg57MeCsawFLC6m9Q==} '@vue-macros/common@1.12.2': resolution: {integrity: sha512-+NGfhrPvPNOb3Wg9PNPEXPe0HTXmVe6XJawL1gi3cIjOSGIhpOdvmMT2cRuWb265IpA/PeL5Sqo0+DQnEDxLvw==} @@ -1923,15 +1898,27 @@ packages: '@vue/compiler-core@3.4.38': resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} + '@vue/compiler-core@3.5.0': + resolution: {integrity: sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw==} + '@vue/compiler-dom@3.4.38': resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==} + '@vue/compiler-dom@3.5.0': + resolution: {integrity: sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==} + '@vue/compiler-sfc@3.4.38': resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==} + '@vue/compiler-sfc@3.5.0': + resolution: {integrity: sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==} + '@vue/compiler-ssr@3.4.38': resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==} + '@vue/compiler-ssr@3.5.0': + resolution: {integrity: sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==} + '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -1947,31 +1934,34 @@ packages: '@vue/devtools-shared@7.3.9': resolution: {integrity: sha512-CdfMRZKXyI8vw+hqOcQIiLihB6Hbbi7WNZGp7LsuH1Qe4aYAFmTaKjSciRZ301oTnwmU/knC/s5OGuV6UNiNoA==} - '@vue/language-core@2.0.29': - resolution: {integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==} + '@vue/language-core@2.1.4': + resolution: {integrity: sha512-i8pfAgNjTNjabBX1xRsuV6aRw2E8bdQXwd5H8m3cUkTVJju3QN5nfdoXET0uK+yXsuloNJPzo6PXFujRRPNmMA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.4.38': - resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==} + '@vue/reactivity@3.5.0': + resolution: {integrity: sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ==} - '@vue/runtime-core@3.4.38': - resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==} + '@vue/runtime-core@3.5.0': + resolution: {integrity: sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w==} - '@vue/runtime-dom@3.4.38': - resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==} + '@vue/runtime-dom@3.5.0': + resolution: {integrity: sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A==} - '@vue/server-renderer@3.4.38': - resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==} + '@vue/server-renderer@3.5.0': + resolution: {integrity: sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg==} peerDependencies: - vue: 3.4.38 + vue: 3.5.0 '@vue/shared@3.4.38': resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} + '@vue/shared@3.5.0': + resolution: {integrity: sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q==} + '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} @@ -2912,8 +2902,10 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-flat-gitignore@0.1.8: - resolution: {integrity: sha512-OEUbS2wzzYtUfshjOqzFo4Bl4lHykXUdM08TCnYNl7ki+niW4Q1R0j0FDFDr0vjVsI5ZFOz5LvluxOP+Ew+dYw==} + eslint-config-flat-gitignore@0.3.0: + resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} + peerDependencies: + eslint: ^9.5.0 eslint-flat-config-utils@0.3.1: resolution: {integrity: sha512-eFT3EaoJN1hlN97xw4FIEX//h0TiFUobgl2l5uLkIwhVN9ahGq95Pbs+i1/B5UACA78LO3rco3JzuvxLdTUOPA==} @@ -3886,8 +3878,8 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - miniflare@3.20240821.0: - resolution: {integrity: sha512-4BhLGpssQxM/O6TZmJ10GkT3wBJK6emFkZ3V87/HyvQmVt8zMxEBvyw5uv6kdtp+7F54Nw6IKFJjPUL8rFVQrQ==} + miniflare@3.20240821.1: + resolution: {integrity: sha512-81qdiryDG7VXzZuoa0EwhkaIYYrn7+StRIrd/2i7SPqPUNICUBjbhFFKqTnvE1+fqIPPB6l8ShKFaFvmnZOASg==} engines: {node: '>=16.13'} hasBin: true @@ -4083,8 +4075,8 @@ packages: engines: {node: ^16.10.0 || >=18.0.0} hasBin: true - nuxt-auth-utils@0.3.4: - resolution: {integrity: sha512-0CNREFADCyZtyAusV3n27y1jnvt2KjrZI2boaMbKPDWiyI8AcV1jESG1aBFOxyViKsF4YnXRY8QN3EJKYvxMjA==} + nuxt-auth-utils@0.3.5: + resolution: {integrity: sha512-lEjfYNsEZiHAHpEFS/5sWOPojYtvvYjsap8U+UyLuzv8Q+5OYbwGtW1DwSo9kbep5gzRTKXzrX/LiPXlX1Tlkg==} nuxt@3.13.0: resolution: {integrity: sha512-NZlPGlMav18KXWiOmTguQtH5lcrwooPniWXM3Ca4c9spsMRu3wyWLlN8wiI/cK+lEu3rQyKCGSA75nFVK4Ew3w==} @@ -4538,6 +4530,10 @@ packages: resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.44: + resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -5217,8 +5213,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - unenv-nightly@1.10.0-1717606461.a117952: - resolution: {integrity: sha512-u3TfBX02WzbHTpaEfWEKwDijDSFAHcgXkayUZ+MVDrjhLFvgAJzFGTSTmwlEhwWi2exyRQey23ah9wELMM6etg==} + unenv-nightly@2.0.0-1724863496.70db6f1: + resolution: {integrity: sha512-r+VIl1gnsI4WQxluruSQhy8alpAf1AsLRLm4sEKp3otCyTIVD6I6wHEYzeQnwsyWgaD4+3BD4A/eqrgOpdTzhw==} unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} @@ -5474,14 +5470,14 @@ packages: peerDependencies: vue: ^3.2.0 - vue-tsc@2.0.29: - resolution: {integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==} + vue-tsc@2.1.4: + resolution: {integrity: sha512-XTzMXQcsixAvNbpou/9qngEsZawaiJRZH3Ja+lfgRfv2A1TJv9vnZ/Kyv7XxPqv/TaZVFSnjGpM87VbWIg6yQg==} hasBin: true peerDependencies: typescript: '>=5.0.0' - vue@3.4.38: - resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==} + vue@3.5.0: + resolution: {integrity: sha512-1t70favYoFijwfWJ7g81aTd32obGaAnKYE9FNyMgnEzn3F4YncRi/kqAHHKloG0VXTD8vBYMhbgLKCA+Sk6QDw==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5523,8 +5519,8 @@ packages: engines: {node: '>=16'} hasBin: true - wrangler@3.72.3: - resolution: {integrity: sha512-EBlJGOcwanbzFkiJkRB47WKhvevh1AZK0ty0MyD0gptsgWnAxBfmFGiBuzOuRXbvH45ZrFrTqgi8c67EwcV1nA==} + wrangler@3.74.0: + resolution: {integrity: sha512-wmtb+tQrgb61yN+Wa2JM98G1Gt4tKFRYPw6xwuyzUcA74L+Dum1A13w22/manl9Gq1jA3dPn+7UzT5sYEVHRog==} engines: {node: '>=16.17.0'} hasBin: true peerDependencies: @@ -5633,17 +5629,17 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.27.3(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.4.38)(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@antfu/eslint-config@3.0.0(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.5.0)(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.9.1(jiti@1.21.6)) - '@stylistic/eslint-plugin': 2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@stylistic/eslint-plugin': 2.7.2(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/eslint-plugin': 8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) '@typescript-eslint/parser': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@vitest/eslint-plugin': 1.0.5(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@vitest/eslint-plugin': 1.1.0(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) eslint: 9.9.1(jiti@1.21.6) - eslint-config-flat-gitignore: 0.1.8 + eslint-config-flat-gitignore: 0.3.0(eslint@9.9.1(jiti@1.21.6)) eslint-flat-config-utils: 0.3.1 eslint-merge-processors: 0.1.0(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-antfu: 2.3.6(eslint@9.9.1(jiti@1.21.6)) @@ -5661,7 +5657,7 @@ snapshots: eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.3.0(@typescript-eslint/parser@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-vue: 9.27.0(eslint@9.9.1(jiti@1.21.6)) eslint-plugin-yml: 1.14.0(eslint@9.9.1(jiti@1.21.6)) - eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.1(jiti@1.21.6)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.0)(eslint@9.9.1(jiti@1.21.6)) globals: 15.9.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 @@ -5925,7 +5921,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20240821.1': optional: true - '@cloudflare/workers-shared@0.4.0': {} + '@cloudflare/workers-shared@0.4.1': {} '@cloudflare/workers-types@4.20240821.1': {} @@ -6402,6 +6398,8 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} + '@eslint/compat@1.1.1': {} + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 @@ -6437,10 +6435,10 @@ snapshots: dependencies: tailwindcss: 3.4.10 - '@headlessui/vue@1.7.22(vue@3.4.38(typescript@5.5.4))': + '@headlessui/vue@1.7.22(vue@3.5.0(typescript@5.5.4))': dependencies: - '@tanstack/vue-virtual': 3.10.5(vue@3.4.38(typescript@5.5.4)) - vue: 3.4.38(typescript@5.5.4) + '@tanstack/vue-virtual': 3.10.5(vue@3.5.0(typescript@5.5.4)) + vue: 3.5.0(typescript@5.5.4) '@humanwhocodes/module-importer@1.0.1': {} @@ -6468,10 +6466,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/vue@4.1.3-beta.1(vue@3.4.38(typescript@5.5.4))': + '@iconify/vue@4.1.3-beta.1(vue@3.5.0(typescript@5.5.4))': dependencies: '@iconify/types': 2.0.0 - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) '@ioredis/commands@1.2.0': {} @@ -6569,12 +6567,12 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))': + '@nuxt/devtools-kit@1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))': dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) '@nuxt/schema': 3.13.0(rollup@4.21.1) execa: 7.2.0 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) transitivePeerDependencies: - magicast - rollup @@ -6593,13 +6591,13 @@ snapshots: rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))': + '@nuxt/devtools@1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxt/devtools-wizard': 1.4.1 '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) - '@vue/devtools-core': 7.3.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + '@vue/devtools-core': 7.3.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@vue/devtools-kit': 7.3.3 birpc: 0.2.17 consola: 3.2.3 @@ -6628,9 +6626,9 @@ snapshots: sirv: 2.0.4 tinyglobby: 0.2.5 unimport: 3.11.1(rollup@4.21.1) - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) - vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.0(magicast@0.3.5)(rollup@4.21.1))(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) - vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) + vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.0(magicast@0.3.5)(rollup@4.21.1))(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) + vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -6639,13 +6637,13 @@ snapshots: - supports-color - utf-8-validate - '@nuxt/icon@1.5.0(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/icon@1.5.0(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))': dependencies: '@iconify/collections': 1.0.454 '@iconify/types': 2.0.0 '@iconify/utils': 2.1.32 - '@iconify/vue': 4.1.3-beta.1(vue@3.4.38(typescript@5.5.4)) - '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + '@iconify/vue': 4.1.3-beta.1(vue@3.5.0(typescript@5.5.4)) + '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) consola: 3.2.3 fast-glob: 3.3.2 @@ -6660,7 +6658,7 @@ snapshots: - vite - vue - '@nuxt/image@1.7.1(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)': + '@nuxt/image@1.8.0(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)': dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) consola: 3.2.3 @@ -6762,12 +6760,12 @@ snapshots: - rollup - supports-color - '@nuxt/ui@2.18.4(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/ui@2.18.4(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))': dependencies: '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.10) - '@headlessui/vue': 1.7.22(vue@3.4.38(typescript@5.5.4)) + '@headlessui/vue': 1.7.22(vue@3.5.0(typescript@5.5.4)) '@iconify-json/heroicons': 1.1.24 - '@nuxt/icon': 1.5.0(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@nuxt/icon': 1.5.0(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4)) '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) '@nuxtjs/color-mode': 3.4.4(magicast@0.3.5)(rollup@4.21.1) '@nuxtjs/tailwindcss': 6.12.1(magicast@0.3.5)(rollup@4.21.1) @@ -6776,9 +6774,9 @@ snapshots: '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.10) '@tailwindcss/forms': 0.5.8(tailwindcss@3.4.10) '@tailwindcss/typography': 0.5.15(tailwindcss@3.4.10) - '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) - '@vueuse/integrations': 10.11.1(fuse.js@6.6.2)(vue@3.4.38(typescript@5.5.4)) - '@vueuse/math': 10.11.1(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': 10.11.1(vue@3.5.0(typescript@5.5.4)) + '@vueuse/integrations': 10.11.1(fuse.js@6.6.2)(vue@3.5.0(typescript@5.5.4)) + '@vueuse/math': 10.11.1(vue@3.5.0(typescript@5.5.4)) defu: 6.1.4 fuse.js: 6.6.2 ohash: 1.1.3 @@ -6807,12 +6805,12 @@ snapshots: - vite - vue - '@nuxt/vite-builder@3.13.0(@types/node@22.5.1)(eslint@9.9.1(jiti@1.21.6))(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))(vue@3.4.38(typescript@5.5.4))': + '@nuxt/vite-builder@3.13.0(@types/node@22.5.2)(eslint@9.9.1(jiti@1.21.6))(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vue-tsc@2.1.4(typescript@5.5.4))(vue@3.5.0(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) '@rollup/plugin-replace': 5.0.7(rollup@4.21.1) - '@vitejs/plugin-vue': 5.1.2(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@vitejs/plugin-vue': 5.1.2(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4)) + '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4)) autoprefixer: 10.4.20(postcss@8.4.41) clear: 0.1.0 consola: 3.2.3 @@ -6838,10 +6836,10 @@ snapshots: ufo: 1.5.4 unenv: 1.10.0 unplugin: 1.12.2 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) - vite-node: 2.0.5(@types/node@22.5.1)(terser@5.31.6) - vite-plugin-checker: 0.7.2(eslint@9.9.1(jiti@1.21.6))(meow@9.0.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)) - vue: 3.4.38(typescript@5.5.4) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) + vite-node: 2.0.5(@types/node@22.5.2)(terser@5.31.6) + vite-plugin-checker: 0.7.2(eslint@9.9.1(jiti@1.21.6))(meow@9.0.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)) + vue: 3.5.0(typescript@5.5.4) vue-bundle-renderer: 2.1.0 transitivePeerDependencies: - '@biomejs/biome' @@ -6866,10 +6864,10 @@ snapshots: - vti - vue-tsc - '@nuxthub/core@0.7.7(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))': + '@nuxthub/core@0.7.9(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))': dependencies: '@cloudflare/workers-types': 4.20240821.1 - '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + '@nuxt/devtools-kit': 1.4.1(magicast@0.3.5)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) '@uploadthing/mime-types': 0.2.10 citty: 0.1.6 @@ -7138,47 +7136,15 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.1(jiti@1.21.6))': + '@stylistic/eslint-plugin@2.7.2(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: '@types/eslint': 9.6.1 - acorn: 8.12.1 - eslint: 9.9.1(jiti@1.21.6) - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - - '@stylistic/eslint-plugin-jsx@2.6.4(eslint@9.9.1(jiti@1.21.6))': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@1.21.6)) - '@types/eslint': 9.6.1 + '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) eslint: 9.9.1(jiti@1.21.6) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 picomatch: 4.0.2 - - '@stylistic/eslint-plugin-plus@2.6.4(eslint@9.9.1(jiti@1.21.6))': - dependencies: - '@types/eslint': 9.6.1 - eslint: 9.9.1(jiti@1.21.6) - - '@stylistic/eslint-plugin-ts@2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@1.21.6)) - '@types/eslint': 9.6.1 - '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.9.1(jiti@1.21.6) - transitivePeerDependencies: - - supports-color - - typescript - - '@stylistic/eslint-plugin@2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': - dependencies: - '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.1(jiti@1.21.6)) - '@stylistic/eslint-plugin-jsx': 2.6.4(eslint@9.9.1(jiti@1.21.6)) - '@stylistic/eslint-plugin-plus': 2.6.4(eslint@9.9.1(jiti@1.21.6)) - '@stylistic/eslint-plugin-ts': 2.6.4(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) - '@types/eslint': 9.6.1 - eslint: 9.9.1(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript @@ -7206,10 +7172,10 @@ snapshots: '@tanstack/virtual-core@3.10.5': {} - '@tanstack/vue-virtual@3.10.5(vue@3.4.38(typescript@5.5.4))': + '@tanstack/vue-virtual@3.10.5(vue@3.5.0(typescript@5.5.4))': dependencies: '@tanstack/virtual-core': 3.10.5 - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) '@trysound/sax@0.2.0': {} @@ -7227,7 +7193,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.5.1 + '@types/node': 22.5.2 '@types/json-schema@7.0.15': {} @@ -7240,9 +7206,9 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.5.1 + '@types/node': 22.5.2 - '@types/node@22.5.1': + '@types/node@22.5.2': dependencies: undici-types: 6.19.8 @@ -7250,7 +7216,7 @@ snapshots: '@types/pg@8.11.7': dependencies: - '@types/node': 22.5.1 + '@types/node': 22.5.2 pg-protocol: 1.6.1 pg-types: 4.0.2 optional: true @@ -7363,13 +7329,13 @@ snapshots: '@unhead/schema': 1.10.0 '@unhead/shared': 1.10.0 - '@unhead/vue@1.10.0(vue@3.4.38(typescript@5.5.4))': + '@unhead/vue@1.10.0(vue@3.5.0(typescript@5.5.4))': dependencies: '@unhead/schema': 1.10.0 '@unhead/shared': 1.10.0 hookable: 5.5.3 unhead: 1.10.0 - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) '@uploadthing/mime-types@0.2.10': {} @@ -7391,41 +7357,41 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) - vue: 3.4.38(typescript@5.5.4) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) + vue: 3.5.0(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue@3.5.0(typescript@5.5.4))': dependencies: - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) - vue: 3.4.38(typescript@5.5.4) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) + vue: 3.5.0(typescript@5.5.4) - '@vitest/eslint-plugin@1.0.5(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + '@vitest/eslint-plugin@1.1.0(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': dependencies: eslint: 9.9.1(jiti@1.21.6) optionalDependencies: '@typescript-eslint/utils': 8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) typescript: 5.5.4 - '@volar/language-core@2.4.0': + '@volar/language-core@2.4.1': dependencies: - '@volar/source-map': 2.4.0 + '@volar/source-map': 2.4.1 - '@volar/source-map@2.4.0': {} + '@volar/source-map@2.4.1': {} - '@volar/typescript@2.4.0': + '@volar/typescript@2.4.1': dependencies: - '@volar/language-core': 2.4.0 + '@volar/language-core': 2.4.1 path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue-macros/common@1.12.2(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4))': + '@vue-macros/common@1.12.2(rollup@4.21.1)(vue@3.5.0(typescript@5.5.4))': dependencies: '@babel/types': 7.25.4 '@rollup/pluginutils': 5.1.0(rollup@4.21.1) @@ -7434,7 +7400,7 @@ snapshots: local-pkg: 0.5.0 magic-string-ast: 0.6.2 optionalDependencies: - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) transitivePeerDependencies: - rollup @@ -7475,11 +7441,24 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-core@3.5.0': + dependencies: + '@babel/parser': 7.25.4 + '@vue/shared': 3.5.0 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + '@vue/compiler-dom@3.4.38': dependencies: '@vue/compiler-core': 3.4.38 '@vue/shared': 3.4.38 + '@vue/compiler-dom@3.5.0': + dependencies: + '@vue/compiler-core': 3.5.0 + '@vue/shared': 3.5.0 + '@vue/compiler-sfc@3.4.38': dependencies: '@babel/parser': 7.25.4 @@ -7492,11 +7471,28 @@ snapshots: postcss: 8.4.41 source-map-js: 1.2.0 + '@vue/compiler-sfc@3.5.0': + dependencies: + '@babel/parser': 7.25.4 + '@vue/compiler-core': 3.5.0 + '@vue/compiler-dom': 3.5.0 + '@vue/compiler-ssr': 3.5.0 + '@vue/shared': 3.5.0 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.44 + source-map-js: 1.2.0 + '@vue/compiler-ssr@3.4.38': dependencies: '@vue/compiler-dom': 3.4.38 '@vue/shared': 3.4.38 + '@vue/compiler-ssr@3.5.0': + dependencies: + '@vue/compiler-dom': 3.5.0 + '@vue/shared': 3.5.0 + '@vue/compiler-vue2@2.7.16': dependencies: de-indent: 1.0.2 @@ -7504,14 +7500,14 @@ snapshots: '@vue/devtools-api@6.6.3': {} - '@vue/devtools-core@7.3.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))': + '@vue/devtools-core@7.3.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))': dependencies: '@vue/devtools-kit': 7.3.3 '@vue/devtools-shared': 7.3.9 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + vite-hot-client: 0.2.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) transitivePeerDependencies: - vite @@ -7529,9 +7525,9 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/language-core@2.0.29(typescript@5.5.4)': + '@vue/language-core@2.1.4(typescript@5.5.4)': dependencies: - '@volar/language-core': 2.4.0 + '@volar/language-core': 2.4.1 '@vue/compiler-dom': 3.4.38 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.4.38 @@ -7542,65 +7538,67 @@ snapshots: optionalDependencies: typescript: 5.5.4 - '@vue/reactivity@3.4.38': + '@vue/reactivity@3.5.0': dependencies: - '@vue/shared': 3.4.38 + '@vue/shared': 3.5.0 - '@vue/runtime-core@3.4.38': + '@vue/runtime-core@3.5.0': dependencies: - '@vue/reactivity': 3.4.38 - '@vue/shared': 3.4.38 + '@vue/reactivity': 3.5.0 + '@vue/shared': 3.5.0 - '@vue/runtime-dom@3.4.38': + '@vue/runtime-dom@3.5.0': dependencies: - '@vue/reactivity': 3.4.38 - '@vue/runtime-core': 3.4.38 - '@vue/shared': 3.4.38 + '@vue/reactivity': 3.5.0 + '@vue/runtime-core': 3.5.0 + '@vue/shared': 3.5.0 csstype: 3.1.3 - '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@5.5.4))': + '@vue/server-renderer@3.5.0(vue@3.5.0(typescript@5.5.4))': dependencies: - '@vue/compiler-ssr': 3.4.38 - '@vue/shared': 3.4.38 - vue: 3.4.38(typescript@5.5.4) + '@vue/compiler-ssr': 3.5.0 + '@vue/shared': 3.5.0 + vue: 3.5.0(typescript@5.5.4) '@vue/shared@3.4.38': {} - '@vueuse/core@10.11.1(vue@3.4.38(typescript@5.5.4))': + '@vue/shared@3.5.0': {} + + '@vueuse/core@10.11.1(vue@3.5.0(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@11.0.3(vue@3.4.38(typescript@5.5.4))': + '@vueuse/core@11.0.3(vue@3.5.0(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 11.0.3 - '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + '@vueuse/shared': 11.0.3(vue@3.5.0(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@10.11.1(fuse.js@6.6.2)(vue@3.4.38(typescript@5.5.4))': + '@vueuse/integrations@10.11.1(fuse.js@6.6.2)(vue@3.5.0(typescript@5.5.4))': dependencies: - '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) - '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': 10.11.1(vue@3.5.0(typescript@5.5.4)) + '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) optionalDependencies: fuse.js: 6.6.2 transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/math@10.11.1(vue@3.4.38(typescript@5.5.4))': + '@vueuse/math@10.11.1(vue@3.5.0(typescript@5.5.4))': dependencies: - '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + '@vueuse/shared': 10.11.1(vue@3.5.0(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -7609,14 +7607,14 @@ snapshots: '@vueuse/metadata@11.0.3': {} - '@vueuse/nuxt@11.0.3(magicast@0.3.5)(nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.1)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)))(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4))': + '@vueuse/nuxt@11.0.3(magicast@0.3.5)(nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.2)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)))(rollup@4.21.1)(vue@3.5.0(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) - '@vueuse/core': 11.0.3(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': 11.0.3(vue@3.5.0(typescript@5.5.4)) '@vueuse/metadata': 11.0.3 local-pkg: 0.5.0 - nuxt: 3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.1)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + nuxt: 3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.2)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - magicast @@ -7624,16 +7622,16 @@ snapshots: - supports-color - vue - '@vueuse/shared@10.11.1(vue@3.4.38(typescript@5.5.4))': + '@vueuse/shared@10.11.1(vue@3.5.0(typescript@5.5.4))': dependencies: - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@11.0.3(vue@3.4.38(typescript@5.5.4))': + '@vueuse/shared@11.0.3(vue@3.5.0(typescript@5.5.4))': dependencies: - vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -8511,10 +8509,11 @@ snapshots: eslint: 9.9.1(jiti@1.21.6) semver: 7.6.3 - eslint-config-flat-gitignore@0.1.8: + eslint-config-flat-gitignore@0.3.0(eslint@9.9.1(jiti@1.21.6)): dependencies: + '@eslint/compat': 1.1.1 + eslint: 9.9.1(jiti@1.21.6) find-up-simple: 1.0.0 - parse-gitignore: 2.0.0 eslint-flat-config-utils@0.3.1: dependencies: @@ -8702,9 +8701,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.1(jiti@1.21.6)): + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.0)(eslint@9.9.1(jiti@1.21.6)): dependencies: - '@vue/compiler-sfc': 3.4.38 + '@vue/compiler-sfc': 3.5.0 eslint: 9.9.1(jiti@1.21.6) eslint-scope@7.2.2: @@ -9636,7 +9635,7 @@ snapshots: mini-svg-data-uri@1.4.4: {} - miniflare@3.20240821.0: + miniflare@3.20240821.1: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.12.1 @@ -9907,7 +9906,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - nuxt-auth-utils@0.3.4(magicast@0.3.5)(rollup@4.21.1): + nuxt-auth-utils@0.3.5(magicast@0.3.5)(rollup@4.21.1): dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) defu: 6.1.4 @@ -9915,23 +9914,24 @@ snapshots: ofetch: 1.3.4 ohash: 1.1.3 pathe: 1.1.2 + scule: 1.3.0 uncrypto: 0.1.3 transitivePeerDependencies: - magicast - rollup - supports-color - nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.1)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)): + nuxt@3.13.0(@parcel/watcher@2.4.1)(@types/node@22.5.2)(drizzle-orm@0.33.0(@cloudflare/workers-types@4.20240821.1)(@types/pg@8.11.7)(pg@8.12.0)(postgres@3.4.4)(react@18.3.1))(eslint@9.9.1(jiti@1.21.6))(ioredis@5.4.1)(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)): dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)) + '@nuxt/devtools': 1.4.1(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)) '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) '@nuxt/schema': 3.13.0(rollup@4.21.1) '@nuxt/telemetry': 2.5.4(magicast@0.3.5)(rollup@4.21.1) - '@nuxt/vite-builder': 3.13.0(@types/node@22.5.1)(eslint@9.9.1(jiti@1.21.6))(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vue-tsc@2.0.29(typescript@5.5.4))(vue@3.4.38(typescript@5.5.4)) + '@nuxt/vite-builder': 3.13.0(@types/node@22.5.2)(eslint@9.9.1(jiti@1.21.6))(magicast@0.3.5)(meow@9.0.0)(optionator@0.9.4)(rollup@4.21.1)(terser@5.31.6)(typescript@5.5.4)(vue-tsc@2.1.4(typescript@5.5.4))(vue@3.5.0(typescript@5.5.4)) '@unhead/dom': 1.10.0 '@unhead/ssr': 1.10.0 - '@unhead/vue': 1.10.0(vue@3.4.38(typescript@5.5.4)) + '@unhead/vue': 1.10.0(vue@3.5.0(typescript@5.5.4)) '@vue/shared': 3.4.38 acorn: 8.12.1 c12: 1.11.1(magicast@0.3.5) @@ -9975,16 +9975,16 @@ snapshots: unenv: 1.10.0 unimport: 3.11.1(rollup@4.21.1) unplugin: 1.12.2 - unplugin-vue-router: 0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)) + unplugin-vue-router: 0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.5.0(typescript@5.5.4)))(vue@3.5.0(typescript@5.5.4)) unstorage: 1.10.2(ioredis@5.4.1) untyped: 1.4.2 - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) vue-bundle-renderer: 2.1.0 vue-devtools-stub: 0.1.0 - vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) + vue-router: 4.4.3(vue@3.5.0(typescript@5.5.4)) optionalDependencies: '@parcel/watcher': 2.4.1 - '@types/node': 22.5.1 + '@types/node': 22.5.2 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10471,6 +10471,12 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 + postcss@8.4.44: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + postgres-array@2.0.0: optional: true @@ -10502,7 +10508,8 @@ snapshots: postgres-range@1.1.4: optional: true - postgres@3.4.4: {} + postgres@3.4.4: + optional: true prebuild-install@7.1.2: dependencies: @@ -11222,12 +11229,10 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - unenv-nightly@1.10.0-1717606461.a117952: + unenv-nightly@2.0.0-1724863496.70db6f1: dependencies: - consola: 3.2.3 defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 + ohash: 1.1.3 pathe: 1.1.2 ufo: 1.5.4 @@ -11272,11 +11277,11 @@ snapshots: universalify@2.0.1: {} - unplugin-vue-router@0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4)): + unplugin-vue-router@0.10.7(rollup@4.21.1)(vue-router@4.4.3(vue@3.5.0(typescript@5.5.4)))(vue@3.5.0(typescript@5.5.4)): dependencies: '@babel/types': 7.25.4 '@rollup/pluginutils': 5.1.0(rollup@4.21.1) - '@vue-macros/common': 1.12.2(rollup@4.21.1)(vue@3.4.38(typescript@5.5.4)) + '@vue-macros/common': 1.12.2(rollup@4.21.1)(vue@3.5.0(typescript@5.5.4)) ast-walker-scope: 0.6.2 chokidar: 3.6.0 fast-glob: 3.3.2 @@ -11289,7 +11294,7 @@ snapshots: unplugin: 1.12.2 yaml: 2.5.0 optionalDependencies: - vue-router: 4.4.3(vue@3.4.38(typescript@5.5.4)) + vue-router: 4.4.3(vue@3.5.0(typescript@5.5.4)) transitivePeerDependencies: - rollup - vue @@ -11368,17 +11373,17 @@ snapshots: vary@1.1.2: {} - vite-hot-client@0.2.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)): + vite-hot-client@0.2.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)): dependencies: - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) - vite-node@2.0.5(@types/node@22.5.1)(terser@5.31.6): + vite-node@2.0.5(@types/node@22.5.2)(terser@5.31.6): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) transitivePeerDependencies: - '@types/node' - less @@ -11390,7 +11395,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.7.2(eslint@9.9.1(jiti@1.21.6))(meow@9.0.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue-tsc@2.0.29(typescript@5.5.4)): + vite-plugin-checker@0.7.2(eslint@9.9.1(jiti@1.21.6))(meow@9.0.0)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6))(vue-tsc@2.1.4(typescript@5.5.4)): dependencies: '@babel/code-frame': 7.24.7 ansi-escapes: 4.3.2 @@ -11402,7 +11407,7 @@ snapshots: npm-run-path: 4.0.1 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.12 @@ -11412,9 +11417,9 @@ snapshots: meow: 9.0.0 optionator: 0.9.4 typescript: 5.5.4 - vue-tsc: 2.0.29(typescript@5.5.4) + vue-tsc: 2.1.4(typescript@5.5.4) - vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.0(magicast@0.3.5)(rollup@4.21.1))(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)): + vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.0(magicast@0.3.5)(rollup@4.21.1))(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.21.1) @@ -11425,14 +11430,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) optionalDependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.1) transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)): + vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@22.5.2)(terser@5.31.6)): dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) @@ -11443,17 +11448,17 @@ snapshots: '@vue/compiler-dom': 3.4.38 kolorist: 1.8.0 magic-string: 0.30.11 - vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6) + vite: 5.4.2(@types/node@22.5.2)(terser@5.31.6) transitivePeerDependencies: - supports-color - vite@5.4.2(@types/node@22.5.1)(terser@5.31.6): + vite@5.4.2(@types/node@22.5.2)(terser@5.31.6): dependencies: esbuild: 0.21.5 postcss: 8.4.41 rollup: 4.21.1 optionalDependencies: - '@types/node': 22.5.1 + '@types/node': 22.5.2 fsevents: 2.3.3 terser: 5.31.6 @@ -11484,9 +11489,9 @@ snapshots: dependencies: ufo: 1.5.4 - vue-demi@0.14.10(vue@3.4.38(typescript@5.5.4)): + vue-demi@0.14.10(vue@3.5.0(typescript@5.5.4)): dependencies: - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) vue-devtools-stub@0.1.0: {} @@ -11503,25 +11508,25 @@ snapshots: transitivePeerDependencies: - supports-color - vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)): + vue-router@4.4.3(vue@3.5.0(typescript@5.5.4)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.4.38(typescript@5.5.4) + vue: 3.5.0(typescript@5.5.4) - vue-tsc@2.0.29(typescript@5.5.4): + vue-tsc@2.1.4(typescript@5.5.4): dependencies: - '@volar/typescript': 2.4.0 - '@vue/language-core': 2.0.29(typescript@5.5.4) + '@volar/typescript': 2.4.1 + '@vue/language-core': 2.1.4(typescript@5.5.4) semver: 7.6.3 typescript: 5.5.4 - vue@3.4.38(typescript@5.5.4): + vue@3.5.0(typescript@5.5.4): dependencies: - '@vue/compiler-dom': 3.4.38 - '@vue/compiler-sfc': 3.4.38 - '@vue/runtime-dom': 3.4.38 - '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@5.5.4)) - '@vue/shared': 3.4.38 + '@vue/compiler-dom': 3.5.0 + '@vue/compiler-sfc': 3.5.0 + '@vue/runtime-dom': 3.5.0 + '@vue/server-renderer': 3.5.0(vue@3.5.0(typescript@5.5.4)) + '@vue/shared': 3.5.0 optionalDependencies: typescript: 5.5.4 @@ -11558,24 +11563,24 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20240821.1 '@cloudflare/workerd-windows-64': 1.20240821.1 - wrangler@3.72.3(@cloudflare/workers-types@4.20240821.1): + wrangler@3.74.0(@cloudflare/workers-types@4.20240821.1): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 - '@cloudflare/workers-shared': 0.4.0 + '@cloudflare/workers-shared': 0.4.1 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 chokidar: 3.6.0 date-fns: 3.6.0 esbuild: 0.17.19 - miniflare: 3.20240821.0 + miniflare: 3.20240821.1 nanoid: 3.3.7 path-to-regexp: 6.2.2 resolve: 1.22.8 resolve.exports: 2.0.2 selfsigned: 2.4.1 source-map: 0.6.1 - unenv: unenv-nightly@1.10.0-1717606461.a117952 + unenv: unenv-nightly@2.0.0-1724863496.70db6f1 workerd: 1.20240821.1 xxhash-wasm: 1.0.2 optionalDependencies: diff --git a/script.cjs b/script.cjs index 4fad5e1..09fb537 100644 --- a/script.cjs +++ b/script.cjs @@ -2,8 +2,8 @@ const fs = require('node:fs') const path = require('node:path') const filesToModify = [ - 'node_modules/drizzle-orm/pg-core/columns/timestamp.js', - 'node_modules/drizzle-orm/pg-core/columns/timestamp.cjs', + 'node_modules/drizzle-orm/sqlite-core/columns/integer.js', + 'node_modules/drizzle-orm/sqlite-core/columns/integer.cjs', ] filesToModify.forEach((file) => { @@ -13,8 +13,8 @@ filesToModify.forEach((file) => { if (fs.existsSync(filePath)) { let fileContent = fs.readFileSync(filePath, 'utf8') fileContent = fileContent.replace( - 'return value.toISOString()', - 'return value', + 'value.getTime()', + 'value', ) fs.writeFileSync(filePath, fileContent, 'utf8') console.log(`Modified: ${file}`) diff --git a/server/database/migrations/0000_grey_marvel_zombies.sql b/server/database/migrations/0000_grey_marvel_zombies.sql new file mode 100644 index 0000000..28f3208 --- /dev/null +++ b/server/database/migrations/0000_grey_marvel_zombies.sql @@ -0,0 +1,48 @@ +CREATE TABLE `categories` ( + `id` integer PRIMARY KEY NOT NULL, + `name` text DEFAULT '', + `name_visible` integer DEFAULT true, + `icon` text DEFAULT 'i-ph:circle-wavy-question-duotone', + `color` text DEFAULT 'gray', + `user_id` integer NOT NULL, + `created_at` integer, + `updated_at` integer, + FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `tabs` ( + `id` integer PRIMARY KEY NOT NULL, + `name` text DEFAULT '', + `primary` integer DEFAULT false, + `icon` text DEFAULT 'i-ph:circle-wavy-question-duotone', + `color` text DEFAULT 'gray', + `link` text DEFAULT '', + `category_id` integer NOT NULL, + `created_at` integer, + `updated_at` integer, + FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON UPDATE no action ON DELETE cascade +); +--> statement-breakpoint +CREATE TABLE `users` ( + `id` integer PRIMARY KEY NOT NULL, + `username` text NOT NULL, + `name` text NOT NULL, + `email` text NOT NULL, + `github_id` text, + `github_token` text, + `google_id` text, + `google_token` text, + `description` text DEFAULT '', + `avatar` text DEFAULT '', + `private` integer DEFAULT false, + `language` text DEFAULT 'en-EN', + `location` text DEFAULT 'unknown', + `subscription` text DEFAULT 'free', + `created_at` integer, + `updated_at` integer +); +--> statement-breakpoint +CREATE UNIQUE INDEX `users_username_unique` ON `users` (`username`);--> statement-breakpoint +CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint +CREATE UNIQUE INDEX `users_github_id_unique` ON `users` (`github_id`);--> statement-breakpoint +CREATE UNIQUE INDEX `users_google_id_unique` ON `users` (`google_id`); \ No newline at end of file diff --git a/server/database/migrations/0000_noisy_randall_flagg.sql b/server/database/migrations/0000_noisy_randall_flagg.sql deleted file mode 100644 index 223fab2..0000000 --- a/server/database/migrations/0000_noisy_randall_flagg.sql +++ /dev/null @@ -1,63 +0,0 @@ -DO $$ BEGIN - CREATE TYPE "public"."subscription" AS ENUM('free', 'paid'); -EXCEPTION - WHEN duplicate_object THEN null; -END $$; ---> statement-breakpoint -CREATE TABLE IF NOT EXISTS "categories" ( - "id" serial PRIMARY KEY NOT NULL, - "name" text DEFAULT '', - "name_visible" boolean DEFAULT true, - "icon" text DEFAULT 'i-ph:circle-wavy-question-duotone', - "color" text DEFAULT 'gray', - "user_id" integer NOT NULL, - "created_at" timestamp(0) with time zone DEFAULT now(), - "updated_at" timestamp(0) with time zone DEFAULT now() -); ---> statement-breakpoint -CREATE TABLE IF NOT EXISTS "tabs" ( - "id" serial PRIMARY KEY NOT NULL, - "name" text DEFAULT '', - "primary" boolean DEFAULT false, - "icon" text DEFAULT 'i-ph:circle-wavy-question-duotone', - "color" text DEFAULT 'gray', - "link" text DEFAULT '', - "category_id" integer NOT NULL, - "created_at" timestamp(0) with time zone DEFAULT now(), - "updated_at" timestamp(0) with time zone DEFAULT now() -); ---> statement-breakpoint -CREATE TABLE IF NOT EXISTS "users" ( - "id" serial PRIMARY KEY NOT NULL, - "username" text NOT NULL, - "name" text NOT NULL, - "email" text NOT NULL, - "github_id" text, - "github_token" text, - "google_id" text, - "google_token" text, - "description" text DEFAULT '', - "avatar" text DEFAULT '', - "private" boolean DEFAULT false, - "language" text DEFAULT 'en-EN', - "location" text DEFAULT 'unknown', - "subscription" "subscription" DEFAULT 'free', - "created_at" timestamp(0) with time zone DEFAULT now(), - "updated_at" timestamp(0) with time zone DEFAULT now(), - CONSTRAINT "users_username_unique" UNIQUE("username"), - CONSTRAINT "users_email_unique" UNIQUE("email"), - CONSTRAINT "users_github_id_unique" UNIQUE("github_id"), - CONSTRAINT "users_google_id_unique" UNIQUE("google_id") -); ---> statement-breakpoint -DO $$ BEGIN - ALTER TABLE "categories" ADD CONSTRAINT "categories_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action; -EXCEPTION - WHEN duplicate_object THEN null; -END $$; ---> statement-breakpoint -DO $$ BEGIN - ALTER TABLE "tabs" ADD CONSTRAINT "tabs_category_id_categories_id_fk" FOREIGN KEY ("category_id") REFERENCES "public"."categories"("id") ON DELETE cascade ON UPDATE no action; -EXCEPTION - WHEN duplicate_object THEN null; -END $$; diff --git a/server/database/migrations/meta/0000_snapshot.json b/server/database/migrations/meta/0000_snapshot.json index f9cc8d4..93803fd 100644 --- a/server/database/migrations/meta/0000_snapshot.json +++ b/server/database/migrations/meta/0000_snapshot.json @@ -1,31 +1,33 @@ { - "id": "21470761-4c33-4588-be9b-4927bbcbfe2c", + "version": "6", + "dialect": "sqlite", + "id": "2764f724-b59e-4de8-b7e7-691122ed7e73", "prevId": "00000000-0000-0000-0000-000000000000", - "version": "7", - "dialect": "postgresql", "tables": { - "public.categories": { + "categories": { "name": "categories", - "schema": "", "columns": { "id": { "name": "id", - "type": "serial", + "type": "integer", "primaryKey": true, - "notNull": true + "notNull": true, + "autoincrement": false }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "''" }, "name_visible": { "name": "name_visible", - "type": "boolean", + "type": "integer", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": true }, "icon": { @@ -33,6 +35,7 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'i-ph:circle-wavy-question-duotone'" }, "color": { @@ -40,27 +43,29 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'gray'" }, "user_id": { "name": "user_id", "type": "integer", "primaryKey": false, - "notNull": true + "notNull": true, + "autoincrement": false }, "created_at": { "name": "created_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false }, "updated_at": { "name": "updated_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false } }, "indexes": {}, @@ -82,28 +87,30 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "public.tabs": { + "tabs": { "name": "tabs", - "schema": "", "columns": { "id": { "name": "id", - "type": "serial", + "type": "integer", "primaryKey": true, - "notNull": true + "notNull": true, + "autoincrement": false }, "name": { "name": "name", "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "''" }, "primary": { "name": "primary", - "type": "boolean", + "type": "integer", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": false }, "icon": { @@ -111,6 +118,7 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'i-ph:circle-wavy-question-duotone'" }, "color": { @@ -118,6 +126,7 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'gray'" }, "link": { @@ -125,27 +134,29 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "''" }, "category_id": { "name": "category_id", "type": "integer", "primaryKey": false, - "notNull": true + "notNull": true, + "autoincrement": false }, "created_at": { "name": "created_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false }, "updated_at": { "name": "updated_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false } }, "indexes": {}, @@ -167,63 +178,71 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "public.users": { + "users": { "name": "users", - "schema": "", "columns": { "id": { "name": "id", - "type": "serial", + "type": "integer", "primaryKey": true, - "notNull": true + "notNull": true, + "autoincrement": false }, "username": { "name": "username", "type": "text", "primaryKey": false, - "notNull": true + "notNull": true, + "autoincrement": false }, "name": { "name": "name", "type": "text", "primaryKey": false, - "notNull": true + "notNull": true, + "autoincrement": false }, "email": { "name": "email", "type": "text", "primaryKey": false, - "notNull": true + "notNull": true, + "autoincrement": false }, "github_id": { "name": "github_id", "type": "text", "primaryKey": false, - "notNull": false + "notNull": false, + "autoincrement": false }, "github_token": { "name": "github_token", "type": "text", "primaryKey": false, - "notNull": false + "notNull": false, + "autoincrement": false }, "google_id": { "name": "google_id", "type": "text", "primaryKey": false, - "notNull": false + "notNull": false, + "autoincrement": false }, "google_token": { "name": "google_token", "type": "text", "primaryKey": false, - "notNull": false + "notNull": false, + "autoincrement": false }, "description": { "name": "description", "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "''" }, "avatar": { @@ -231,13 +250,15 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "''" }, "private": { "name": "private", - "type": "boolean", + "type": "integer", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": false }, "language": { @@ -245,6 +266,7 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'en-EN'" }, "location": { @@ -252,81 +274,74 @@ "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'unknown'" }, "subscription": { "name": "subscription", - "type": "subscription", - "typeSchema": "public", + "type": "text", "primaryKey": false, "notNull": false, + "autoincrement": false, "default": "'free'" }, "created_at": { "name": "created_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false }, "updated_at": { "name": "updated_at", - "type": "timestamp(0) with time zone", + "type": "integer", "primaryKey": false, "notNull": false, - "default": "now()" + "autoincrement": false } }, - "indexes": {}, - "foreignKeys": {}, - "compositePrimaryKeys": {}, - "uniqueConstraints": { + "indexes": { "users_username_unique": { "name": "users_username_unique", - "nullsNotDistinct": false, "columns": [ "username" - ] + ], + "isUnique": true }, "users_email_unique": { "name": "users_email_unique", - "nullsNotDistinct": false, "columns": [ "email" - ] + ], + "isUnique": true }, "users_github_id_unique": { "name": "users_github_id_unique", - "nullsNotDistinct": false, "columns": [ "github_id" - ] + ], + "isUnique": true }, "users_google_id_unique": { "name": "users_google_id_unique", - "nullsNotDistinct": false, "columns": [ "google_id" - ] + ], + "isUnique": true } - } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} } }, - "enums": { - "public.subscription": { - "name": "subscription", - "schema": "public", - "values": [ - "free", - "paid" - ] - } - }, - "schemas": {}, - "sequences": {}, + "enums": {}, "_meta": { - "columns": {}, "schemas": {}, - "tables": {} + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} } } \ No newline at end of file diff --git a/server/database/migrations/meta/_journal.json b/server/database/migrations/meta/_journal.json index 65dc2a8..afffdcb 100644 --- a/server/database/migrations/meta/_journal.json +++ b/server/database/migrations/meta/_journal.json @@ -1,12 +1,12 @@ { "version": "7", - "dialect": "postgresql", + "dialect": "sqlite", "entries": [ { "idx": 0, - "version": "7", - "when": 1725302227098, - "tag": "0000_noisy_randall_flagg", + "version": "6", + "when": 1725385265625, + "tag": "0000_grey_marvel_zombies", "breakpoints": true } ] diff --git a/server/database/schema.ts b/server/database/schema.ts index efd057b..c797ef4 100644 --- a/server/database/schema.ts +++ b/server/database/schema.ts @@ -1,11 +1,9 @@ -import { boolean, integer, pgEnum, pgTable, text } from 'drizzle-orm/pg-core' +import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core' import { relations } from 'drizzle-orm' import { id, timestamps } from '../utils/dbFields' import { Subscription } from '../../types/types' -export const subscriptionEnum = pgEnum('subscription', Subscription) - -export const users = pgTable('users', { +export const users = sqliteTable('users', { id, username: text('username').notNull().unique(), name: text('name').notNull(), @@ -16,17 +14,17 @@ export const users = pgTable('users', { googleToken: text('google_token'), description: text('description').default(''), avatar: text('avatar').default(''), - private: boolean('private').default(false), + private: integer('private', { mode: 'boolean' }).default(false), language: text('language').default('en-EN'), location: text('location').default('unknown'), - subscription: subscriptionEnum('subscription').default('free'), + subscription: text('subscription', { enum: Subscription }).default('free'), ...timestamps, }) -export const categories = pgTable('categories', { +export const categories = sqliteTable('categories', { id, name: text('name').default(''), - nameVisible: boolean('name_visible').default(true), + nameVisible: integer('name_visible', { mode: 'boolean' }).default(true), icon: text('icon').default('i-ph:circle-wavy-question-duotone'), color: text('color').default('gray'), userId: integer('user_id') @@ -35,10 +33,10 @@ export const categories = pgTable('categories', { ...timestamps, }) -export const tabs = pgTable('tabs', { +export const tabs = sqliteTable('tabs', { id, name: text('name').default(''), - primary: boolean('primary').default(false), + primary: integer('primary', { mode: 'boolean' }).default(false), icon: text('icon').default('i-ph:circle-wavy-question-duotone'), color: text('color').default('gray'), link: text('link').default(''), diff --git a/server/plugins/migrations.ts b/server/plugins/migrations.ts new file mode 100644 index 0000000..aff92a9 --- /dev/null +++ b/server/plugins/migrations.ts @@ -0,0 +1,17 @@ +import { consola } from 'consola' +import { migrate } from 'drizzle-orm/d1/migrator' + +export default defineNitroPlugin(async () => { + if (!import.meta.dev) + return + + onHubReady(async () => { + await migrate(useDrizzle(), { migrationsFolder: 'server/database/migrations' }) + .then(() => { + consola.success('Database migrations done') + }) + .catch((err) => { + consola.error('Database migrations failed', err) + }) + }) +}) diff --git a/server/utils/db.ts b/server/utils/db.ts index b3ffbdc..bae5659 100644 --- a/server/utils/db.ts +++ b/server/utils/db.ts @@ -1,5 +1,4 @@ -import postgres from 'postgres' -import { drizzle } from 'drizzle-orm/postgres-js' +import { drizzle } from 'drizzle-orm/d1' import * as schema from '../database/schema' export { sql, eq, and, or, asc, desc, sum, isNull } from 'drizzle-orm' @@ -7,8 +6,7 @@ export { sql, eq, and, or, asc, desc, sum, isNull } from 'drizzle-orm' export const tables = schema export function useDrizzle() { - const config = useRuntimeConfig() - return drizzle(postgres(config.postgres.url, { prepare: false, max: 50 }), { schema }) + return drizzle(hubDatabase(), { schema }) } export type UserInsert = typeof schema.users.$inferInsert diff --git a/server/utils/dbFields.ts b/server/utils/dbFields.ts index aa0ad60..eaf7ae7 100644 --- a/server/utils/dbFields.ts +++ b/server/utils/dbFields.ts @@ -1,11 +1,15 @@ -import { serial, timestamp } from 'drizzle-orm/pg-core' -/** - * A centralized list of standardized Drizzle ORM schema field definitions to prevent duplication errors - */ +import { integer } from 'drizzle-orm/sqlite-core' -export const createdAt = timestamp('created_at', { mode: 'string', withTimezone: true, precision: 0 }).defaultNow() -export const updatedAt = timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 0 }).defaultNow().$onUpdateFn(() => sql`(current_timestamp)`) -export const id = serial('id').primaryKey() +export const id = integer('id').primaryKey() + +export const createdAt + = integer('created_at', { mode: 'timestamp' }) + .$defaultFn(() => new Date()) + +export const updatedAt + = integer('updated_at', { mode: 'timestamp' }) + .$onUpdateFn(() => new Date()) + .$defaultFn(() => new Date()) export const timestamps = { createdAt,