diff --git a/drizzle.config.ts b/drizzle.config.ts index 3fd7d51..e5c87d8 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,11 +1,20 @@ import 'dotenv/config' import type { Config } from 'drizzle-kit' +const databaseUrl = process.env.DATABASE_URL +const authToken = process.env.TURSO_AUTH_TOKEN +if (!databaseUrl || !authToken) { + throw new Error( + 'Either DATABASE_URL or TURSO_AUTH_TOKEN not set in the environment variables.', + ) +} + export default { out: 'src/server/database/migrations', schema: 'src/server/database/schema/*', - driver: 'mysql2', + driver: 'turso', dbCredentials: { - uri: process.env.DATABASE_URL as NonNullable, + url: databaseUrl, + authToken, }, } satisfies Config diff --git a/migrate.ts b/migrate.ts index 78e9a37..edf2d90 100644 --- a/migrate.ts +++ b/migrate.ts @@ -1,13 +1,19 @@ import 'dotenv/config' -import { migrate } from 'drizzle-orm/planetscale-serverless/migrator' +import { migrate } from 'drizzle-orm/libsql/migrator' import { getDb } from '~/server/database/db' const databaseUrl = process.env.DATABASE_URL +const authToken = process.env.TURSO_AUTH_TOKEN -if (!databaseUrl) { - throw Error('Database URL not configured in environment variable') +if (!databaseUrl || !authToken) { + throw Error( + 'Either database URL (DATABASE_URL) or Turso Auth token (TURSO_AUTH_TOKEN) not set in environment variable', + ) } // This will run migrations on the database, skipping the ones already applied -await migrate(getDb(databaseUrl), { +migrate(getDb({ url: databaseUrl, authToken }), { migrationsFolder: './src/server/database/migrations', +}).catch((err) => { + console.error(err) + process.exit(1) }) diff --git a/nuxt.config.ts b/nuxt.config.ts index b9ef622..a3d714d 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -106,6 +106,9 @@ export default defineNuxtConfig({ }, runtimeConfig: { databaseUrl: process.env.DATABASE_URL, + turso: { + authToken: process.env.TURSO_AUTH_TOKEN, + }, }, // Development diff --git a/package.json b/package.json index 43825ed..5fbf5f2 100644 --- a/package.json +++ b/package.json @@ -6,44 +6,47 @@ "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", - "postinstall": "nuxt prepare" + "postinstall": "nuxt prepare", + "db:migrate": "tsx migrate.ts", + "db:seed": "tsx src/server/database/seed.ts", + "db:generate": "drizzle-kit generate:sqlite --config ./drizzle.config.ts" }, "browserslist": ["last 4 versions, >0.2%, not dead"], "devDependencies": { "@biomejs/biome": "1.6.1", "@nuxt/devtools": "latest", "@tailwindcss/typography": "^0.5.10", + "@types/better-sqlite3": "^7.6.9", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.11.8", - "drizzle-kit": "^0.20.13", + "@types/node": "^20.11.27", + "drizzle-kit": "^0.20.14", "lodash-es": "^4.17.21", - "mysql2": "^3.9.1", - "nuxt": "^3.10.0", + "nuxt": "^3.10.3", "nuxt-build-cache": "^0.1.1", - "prettier": "^3.2.4", - "prettier-plugin-tailwindcss": "^0.5.11", - "ts-node": "^10.9.2", - "type-fest": "^4.10.2", - "vue": "^3.4.15", - "vue-router": "^4.2.5", - "vue-tsc": "^2.0.0" + "prettier": "^3.2.5", + "prettier-plugin-tailwindcss": "^0.5.12", + "tsx": "^4.7.1", + "type-fest": "^4.12.0", + "vue": "^3.4.21", + "vue-router": "^4.3.0", + "vue-tsc": "^2.0.6" }, "dependencies": { + "@libsql/client": "^0.5.6", "@nuxt/content": "2.12.1", - "@nuxt/image": "^1.3.0", + "@nuxt/image": "^1.4.0", "@nuxtjs/critters": "^0.6.0", "@nuxtjs/fontaine": "^0.4.1", "@nuxtjs/google-fonts": "^3.1.3", "@nuxtjs/robots": "^3.0.0", - "@nuxtjs/tailwindcss": "^6.11.1", - "@planetscale/database": "^1.14.0", - "@vueuse/core": "^10.7.2", - "@vueuse/nuxt": "^10.7.2", + "@nuxtjs/tailwindcss": "^6.11.4", + "@vueuse/core": "^10.9.0", + "@vueuse/nuxt": "^10.9.0", "browserslist-to-esbuild": "^2.1.1", - "drizzle-orm": "^0.30.0", + "drizzle-orm": "^0.30.1", "nuxt-delay-hydration": "^1.3.3", - "nuxt-icon": "^0.6.8", - "postcss-preset-env": "^9.3.0", + "nuxt-icon": "^0.6.9", + "postcss-preset-env": "^9.5.1", "valibot": "^0.30.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a26bca0..cefa52f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,15 @@ settings: excludeLinksFromLockfile: false dependencies: + '@libsql/client': + specifier: ^0.5.6 + version: 0.5.6 '@nuxt/content': specifier: 2.12.1 - version: 2.12.1(@planetscale/database@1.16.0)(nuxt@3.10.3)(vue@3.4.21) + version: 2.12.1(nuxt@3.10.3)(vue@3.4.21) '@nuxt/image': - specifier: ^1.3.0 - version: 1.4.0(@planetscale/database@1.16.0) + specifier: ^1.4.0 + version: 1.4.0 '@nuxtjs/critters': specifier: ^0.6.0 version: 0.6.0 @@ -24,32 +27,29 @@ dependencies: specifier: ^3.0.0 version: 3.0.0 '@nuxtjs/tailwindcss': - specifier: ^6.11.1 - version: 6.11.4(ts-node@10.9.2) - '@planetscale/database': - specifier: ^1.14.0 - version: 1.16.0 + specifier: ^6.11.4 + version: 6.11.4 '@vueuse/core': - specifier: ^10.7.2 + specifier: ^10.9.0 version: 10.9.0(vue@3.4.21) '@vueuse/nuxt': - specifier: ^10.7.2 + specifier: ^10.9.0 version: 10.9.0(nuxt@3.10.3)(vue@3.4.21) browserslist-to-esbuild: specifier: ^2.1.1 version: 2.1.1(browserslist@4.23.0) drizzle-orm: - specifier: ^0.30.0 - version: 0.30.1(@planetscale/database@1.16.0)(mysql2@3.9.2) + specifier: ^0.30.1 + version: 0.30.1(@libsql/client@0.5.6)(@types/better-sqlite3@7.6.9) nuxt-delay-hydration: specifier: ^1.3.3 version: 1.3.3 nuxt-icon: - specifier: ^0.6.8 - version: 0.6.9(nuxt@3.10.3)(vite@5.1.5)(vue@3.4.21) + specifier: ^0.6.9 + version: 0.6.9(nuxt@3.10.3)(vite@5.1.6)(vue@3.4.21) postcss-preset-env: - specifier: ^9.3.0 - version: 9.5.0(postcss@8.4.35) + specifier: ^9.5.1 + version: 9.5.1(postcss@8.4.35) valibot: specifier: ^0.30.0 version: 0.30.0 @@ -60,51 +60,51 @@ devDependencies: version: 1.6.1 '@nuxt/devtools': specifier: latest - version: 1.0.8(nuxt@3.10.3)(vite@5.1.5) + version: 1.0.8(nuxt@3.10.3)(vite@5.1.6) '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.1) + '@types/better-sqlite3': + specifier: ^7.6.9 + version: 7.6.9 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^20.11.8 - version: 20.11.25 + specifier: ^20.11.27 + version: 20.11.27 drizzle-kit: - specifier: ^0.20.13 + specifier: ^0.20.14 version: 0.20.14 lodash-es: specifier: ^4.17.21 version: 4.17.21 - mysql2: - specifier: ^3.9.1 - version: 3.9.2 nuxt: - specifier: ^3.10.0 - version: 3.10.3(@planetscale/database@1.16.0)(@types/node@20.11.25)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6) + specifier: ^3.10.3 + version: 3.10.3(@libsql/client@0.5.6)(@types/node@20.11.27)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6) nuxt-build-cache: specifier: ^0.1.1 version: 0.1.1 prettier: - specifier: ^3.2.4 + specifier: ^3.2.5 version: 3.2.5 prettier-plugin-tailwindcss: - specifier: ^0.5.11 + specifier: ^0.5.12 version: 0.5.12(prettier@3.2.5) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@20.11.25)(typescript@5.4.2) + tsx: + specifier: ^4.7.1 + version: 4.7.1 type-fest: - specifier: ^4.10.2 + specifier: ^4.12.0 version: 4.12.0 vue: - specifier: ^3.4.15 + specifier: ^3.4.21 version: 3.4.21(typescript@5.4.2) vue-router: - specifier: ^4.2.5 + specifier: ^4.3.0 version: 4.3.0(vue@3.4.21) vue-tsc: - specifier: ^2.0.0 + specifier: ^2.0.6 version: 2.0.6(typescript@5.4.2) packages: @@ -527,21 +527,15 @@ packages: dependencies: mime: 3.0.0 - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - /@csstools/cascade-layer-name-parser@1.0.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-xHxXavWvXB5nAA9IvZtjEzkONM3hPXpxqYK4cEw60LcqPiFjq7ZlEFxOyYFPrG4UdANKtnucNtRVDy7frjq6AA==} + /@csstools/cascade-layer-name-parser@1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-RRqNjxTZDUhx7pxYOBG/AkCVmPS3zYzfE47GEhIGkFuWFTQGJBgWOUUkKNo5MfxIfjDz5/1L3F3rF1oIsYaIpw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.6.0 - '@csstools/css-tokenizer': ^2.2.3 + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 dependencies: - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 dev: false /@csstools/color-helpers@4.0.0: @@ -549,53 +543,53 @@ packages: engines: {node: ^14 || ^16 || >=18} dev: false - /@csstools/css-calc@1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-+7bUzB5I4cI97tKmBJA8ilTl/YRo6VAOdlrnd/4x2NyK60nvYurGKa5TZpE1zcgIrTC97iJRE0/V65feyFytuw==} + /@csstools/css-calc@1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-iQqIW5vDPqQdLx07/atCuNKDprhIWjB0b8XRhUyXZWBZYUG+9mNyFwyu30rypX84WLevVo25NYW2ipxR8WyseQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.6.0 - '@csstools/css-tokenizer': ^2.2.3 + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 dependencies: - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 dev: false - /@csstools/css-color-parser@1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-5GEkuuUxD5dael3xoWjyf7gAPAi4pwm8X8JW/nUMhxntGY4Wo4Lp7vKlex4V5ZgTfAoov14rZFsZyOantdTatg==} + /@csstools/css-color-parser@1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-Wc1X6jZvGhT8Bii4jUF6tC3Je3wgDFg7D/SvGKndrnakDsCPk4TMxtt4AQHyWdMBrBJ1hLjXbppaXgP1DUIpBw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.6.0 - '@csstools/css-tokenizer': ^2.2.3 + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 dependencies: '@csstools/color-helpers': 4.0.0 - '@csstools/css-calc': 1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 dev: false - /@csstools/css-parser-algorithms@2.6.0(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-YfEHq0eRH98ffb5/EsrrDspVWAuph6gDggAE74ZtjecsmyyWpW768hOyiONa8zwWGbIWYfa2Xp4tRTrpQQ00CQ==} + /@csstools/css-parser-algorithms@2.6.1(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-tokenizer': ^2.2.3 + '@csstools/css-tokenizer': ^2.2.4 dependencies: - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-tokenizer': 2.2.4 dev: false - /@csstools/css-tokenizer@2.2.3: - resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==} + /@csstools/css-tokenizer@2.2.4: + resolution: {integrity: sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==} engines: {node: ^14 || ^16 || >=18} dev: false - /@csstools/media-query-list-parser@2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3): - resolution: {integrity: sha512-DiD3vG5ciNzeuTEoh74S+JMjQDs50R3zlxHnBnfd04YYfA/kh2KiBCGhzqLxlJcNq+7yNQ3stuZZYLX6wK/U2g==} + /@csstools/media-query-list-parser@2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4): + resolution: {integrity: sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.6.0 - '@csstools/css-tokenizer': ^2.2.3 + '@csstools/css-parser-algorithms': ^2.6.1 + '@csstools/css-tokenizer': ^2.2.4 dependencies: - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 dev: false /@csstools/postcss-cascade-layers@4.0.3(postcss@8.4.35): @@ -604,48 +598,48 @@ packages: peerDependencies: postcss: ^8.4 dependencies: - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.16) postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false - /@csstools/postcss-color-function@3.0.10(postcss@8.4.35): - resolution: {integrity: sha512-jxiXmSl4ZYX8KewFjL5ef6of9uW73VkaHeDb2tqb5q4ZDPYxjusNX1KJ8UXY8+7ydqS5QBo42tVMrSMGy+rDmw==} + /@csstools/postcss-color-function@3.0.11(postcss@8.4.35): + resolution: {integrity: sha512-z53Pp2tsemiIq72PKu4vjD0CtcQlXdvA22elEHuDOvCIlqphNjd5ZD5HBns/ZjaJF7BjPls2zaAT58hfLyS0MQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-color-mix-function@2.0.10(postcss@8.4.35): - resolution: {integrity: sha512-zeD856+FDCUjB077pPS+Z9OnTQnqpiJrao3TW+sasCb/gJ3vZCX7sRSRFsRUo0/MntTtJu9hkKv9eMkFmfjydA==} + /@csstools/postcss-color-mix-function@2.0.11(postcss@8.4.35): + resolution: {integrity: sha512-Jz1R5ZXxpT5FIY95F3VSJtwQYWCYOtCBUBS/ShDxS+fUtd3sAdAtD3a9tAdz3FG3BvkmqtlURyoIhJRu/wfo/A==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-exponential-functions@1.0.4(postcss@8.4.35): - resolution: {integrity: sha512-frMf0CFVnZoGEKAHlxLy3s4g/tpjyFn5+A+h895UJNm9Uc+ewGT7+EeK7Kh9IHH4pD4FkaGW1vOQtER00PLurQ==} + /@csstools/postcss-exponential-functions@1.0.5(postcss@8.4.35): + resolution: {integrity: sha512-7S7I7KgwHWQYzJJAoIjRtUf7DQs1dxipeg1A6ikZr0PYapNJX7UHz0evlpE67SQqYj1xBs70gpG7xUv3uLp4PA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-calc': 1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 postcss: 8.4.35 dev: false @@ -660,53 +654,53 @@ packages: postcss-value-parser: 4.2.0 dev: false - /@csstools/postcss-gamut-mapping@1.0.3(postcss@8.4.35): - resolution: {integrity: sha512-P0+ude1KyCy9LXOe2pHJmpcXK4q/OQbr2Sn2wQSssMw0rALGmny2MfHiCqEu8n6mf2cN6lWDZdzY8enBk8WHXQ==} + /@csstools/postcss-gamut-mapping@1.0.4(postcss@8.4.35): + resolution: {integrity: sha512-jjHP44awnSijgddNJpZEFfmb8csFx+BiYYpX+ydyScWwLzSpve5eLXneu4uIhZmKom+WXLXWc4y7CvOfVLQ2VQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 postcss: 8.4.35 dev: false - /@csstools/postcss-gradients-interpolation-method@4.0.11(postcss@8.4.35): - resolution: {integrity: sha512-LFom5jCVUfzF+iuiOZvhvX7RRN8vc+tKpcKo9s4keEBAU2mPwV5/Fgz5iylEfXP/DZbEdq2C0At20urMi/lupw==} + /@csstools/postcss-gradients-interpolation-method@4.0.12(postcss@8.4.35): + resolution: {integrity: sha512-F1mOb6MuIMAV7qq9dYLhi2tlmmQn+osCVl+VdDNI+4AO6y3l6dTWmc7XVQMsVxIZCKEZMie9KLtE0PRp3i1UyQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-hwb-function@3.0.9(postcss@8.4.35): - resolution: {integrity: sha512-S3/Z+mGHWIKAex7DLsHFDiku5lBEK34avT2My6sGPNCXB38TZjrKI0rd7JdN9oulem5sn+CU7oONyIftui24oQ==} + /@csstools/postcss-hwb-function@3.0.10(postcss@8.4.35): + resolution: {integrity: sha512-wYyhFLQ1zkirAhfRxh5BK9WRIJGBb7jtE9H9a2wPOf20kGbS/PmqxHtGmE+o1vSz/MaBIbW+6lqyS16yEzjQJA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-ic-unit@3.0.4(postcss@8.4.35): - resolution: {integrity: sha512-OB6ojl33/TQHhjVx1NI+n3EnYbdUM6Q/mSUv3WFATdcz7IrH/CmBaZt7P1R6j1Xdp58thIa6jm4Je7saGs+2AA==} + /@csstools/postcss-ic-unit@3.0.5(postcss@8.4.35): + resolution: {integrity: sha512-9CriM/zvKXa/lDARlxs/MgeyKE6ZmmX4V77VLD7VUxKLVSt0Go3NCy/gRMbwGzxbrk3iaHFXnFbc2lNw+/7jcg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 @@ -727,20 +721,20 @@ packages: peerDependencies: postcss: ^8.4 dependencies: - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.16) postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false - /@csstools/postcss-light-dark-function@1.0.0(postcss@8.4.35): - resolution: {integrity: sha512-KHo633V16DGo6tmpr1ARAwO73CPBNmDI3PfSQYe7ZBMiv60WEizbcEroK75fHjxKYJ4tj9uCCzp5sYG4cEUqqw==} + /@csstools/postcss-light-dark-function@1.0.1(postcss@8.4.35): + resolution: {integrity: sha512-CJOcp+m7Njbu91HtYMMoYuZznsvNSpJtLiR/7BO8/bHTXYPiuAZfxunh7wXLkMbHd5dRBgAVAQZ+H4iFqrvWZw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false @@ -782,39 +776,39 @@ packages: postcss-value-parser: 4.2.0 dev: false - /@csstools/postcss-logical-viewport-units@2.0.6(postcss@8.4.35): - resolution: {integrity: sha512-6hV0ngZh8J7HqNY3kyt+z5ABN/XE18qvrU7ne4YSkKfltrWDnQgGiW/Q+h7bdQz8/W5juAefcdCCAJUIBE7erg==} + /@csstools/postcss-logical-viewport-units@2.0.7(postcss@8.4.35): + resolution: {integrity: sha512-L4G3zsp/bnU0+WXUyysihCUH14LkfMgUJsS9vKz3vCYbVobOTqQRoNXnEPpyNp8WYyolLqAWbGGJhVu8J6u2OQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-tokenizer': 2.2.4 '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-media-minmax@1.1.3(postcss@8.4.35): - resolution: {integrity: sha512-W9AFRQSLvT+Dxtp20AewzGTUxzkJ21XSKzqRALwQdAv0uJGXkR76qgdhkoX0L/tcV4gXtgDfVtGYL/x2Nz/M5Q==} + /@csstools/postcss-media-minmax@1.1.4(postcss@8.4.35): + resolution: {integrity: sha512-xl/PIO3TUbXO1ZA4SA6HCw+Q9UGe2cgeRKx3lHCzoNig2D4bT5vfVCOrwhxjUb09oHihc9eI3I0iIfVPiXaN1A==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-calc': 1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/media-query-list-parser': 2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) postcss: 8.4.35 dev: false - /@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.6(postcss@8.4.35): - resolution: {integrity: sha512-awc2qenSDvx6r+w6G9xxENp+LsbvHC8mMMV23KYmk4pR3YL8JxeKPDSiDhmqd93FQ9nNNDc/CaCQEcvP+GV4rw==} + /@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.7(postcss@8.4.35): + resolution: {integrity: sha512-HBDAQw1K0NilcHGMUHv8jzf2mpOtcWTVKtuY3AeZ5TS1uyWWNVi5/yuA/tREPLU9WifNdqHQ+rfbsV/8zTIkTg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/media-query-list-parser': 2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) postcss: 8.4.35 dev: false @@ -839,22 +833,22 @@ packages: postcss-value-parser: 4.2.0 dev: false - /@csstools/postcss-oklab-function@3.0.10(postcss@8.4.35): - resolution: {integrity: sha512-s9trs1c+gUMtaTtwrrIpdVQkUbRuwi6bQ9rBHaqwt4kd3kEnEYfP85uLY1inFx6Rt8OM2XVg3PSYbfnFSAO51A==} + /@csstools/postcss-oklab-function@3.0.11(postcss@8.4.35): + resolution: {integrity: sha512-nIeOZqTFn/zJXSb70JwUcyUBb9658FED7saZlaZNEEhQ3GYxjRhdlV7hgflNi0FDdqNqaEeeI/B/BqnPG9+Q/Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /@csstools/postcss-progressive-custom-properties@3.1.0(postcss@8.4.35): - resolution: {integrity: sha512-Mfb1T1BHa6pktLI+poMEHI7Q+VYvAsdwJZPFsSkIB2ZUsawCiPxXLw06BKSVPITxFlaY/FEUzfpyOTfX9YCE2w==} + /@csstools/postcss-progressive-custom-properties@3.1.1(postcss@8.4.35): + resolution: {integrity: sha512-cx/bZgj+MK8SpRZNTu2zGeVFMCQfhsaeuDhukAhfA53yykvIXaTIwLi5shW9hfkvPrkqBeFoiRAzq/qogxeHTA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 @@ -863,16 +857,16 @@ packages: postcss-value-parser: 4.2.0 dev: false - /@csstools/postcss-relative-color-syntax@2.0.10(postcss@8.4.35): - resolution: {integrity: sha512-IkTIk9Eq2VegSN4lgsljGY8boyfX3l3Pw58e+R9oyPe/Ye7r3NwuiQ3w0nkXoQ+RC+d240V6n7eZme2mEPqQvg==} + /@csstools/postcss-relative-color-syntax@2.0.11(postcss@8.4.35): + resolution: {integrity: sha512-YmYGwGLoqZp71wXqjyFuG+JApL+CoZqUZ+MJshlokdqqryKX/zj/NrSrwMTAwB4xSx2DgHJUQK3iWumUse8rXw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false @@ -884,18 +878,18 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false - /@csstools/postcss-stepped-value-functions@3.0.5(postcss@8.4.35): - resolution: {integrity: sha512-B8K8RaTrYVZLxbNzVUvFO3SlCDJDaUTAO7KRth05fa7f01ufPvb6ztdBuxSoRwOtmNp8iROxPJHOemWo2kBBtA==} + /@csstools/postcss-stepped-value-functions@3.0.6(postcss@8.4.35): + resolution: {integrity: sha512-rnyp8tWRuBXERTHVdB5hjUlif5dQgPcyN+BX55wUnYpZ3LN9QPfK2Z3/HUZymwyou8Gg6vhd6X2W+g1pLq1jYg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-calc': 1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 postcss: 8.4.35 dev: false @@ -910,15 +904,15 @@ packages: postcss-value-parser: 4.2.0 dev: false - /@csstools/postcss-trigonometric-functions@3.0.5(postcss@8.4.35): - resolution: {integrity: sha512-RhBfQ0TsBudyPuoo8pXKdfQuUiQxMU/Sc5GyV57bWk93JbUHXq6b4CdPx+B/tHUeFKvocVJn/e2jbu96rh0d3Q==} + /@csstools/postcss-trigonometric-functions@3.0.6(postcss@8.4.35): + resolution: {integrity: sha512-i5Zd0bMJooZAn+ZcDmPij2WCkcOJJJ6opzK+QeDjxbMrYmoGQl0CY8FDHdeQyBF1Nly+Q0Fq3S7QfdNLKBBaCg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-calc': 1.1.7(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/css-calc': 1.2.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 postcss: 8.4.35 dev: false @@ -931,22 +925,22 @@ packages: postcss: 8.4.35 dev: false - /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.15): + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16): resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false - /@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15): + /@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.16): resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /@csstools/utilities@1.0.0(postcss@8.4.35): @@ -1555,8 +1549,8 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - /@iconify/collections@1.0.402: - resolution: {integrity: sha512-7GpWRCFOpuzPuFEHM/XzIlL3G25lhgbrnPsBkAdadTV1/m0fOYM5u55FNajATA8L+Bl2gGC5Z7HpBt86gefheQ==} + /@iconify/collections@1.0.404: + resolution: {integrity: sha512-xpz44VeL5YAGQR6smMW+u6A46vCxPnwhqIgzpBopckBj+LLxrL4IDaop6ZrwUpGGkk8vj//SV8dZRS05s6DlqQ==} dependencies: '@iconify/types': 2.0.0 dev: false @@ -1574,9 +1568,6 @@ packages: vue: 3.4.21(typescript@5.4.2) dev: false - /@ioredis/commands@1.2.0: - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1604,8 +1595,8 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -1619,12 +1610,6 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - /@koa/router@12.0.1: resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} engines: {node: '>= 12'} @@ -1648,6 +1633,101 @@ packages: /@kwsites/promise-deferred@1.1.1: resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + /@libsql/client@0.5.6: + resolution: {integrity: sha512-UBjmDoxz75Z2sHdP+ETCROpeLA/77VMesiff8R4UWK1rnaWbh6/YoCLDILMJL3Rh0udQeKxjL8MjXthqohax+g==} + dependencies: + '@libsql/core': 0.5.6 + '@libsql/hrana-client': 0.5.6 + js-base64: 3.7.7 + libsql: 0.3.10 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@libsql/core@0.5.6: + resolution: {integrity: sha512-3vicUAydq6jPth410n4AsHHm1n2psTwvkSf94nfJlSXutGSZsl0updn2N/mJBgqUHkbuFoWZtlMifF0SwBj1xQ==} + dependencies: + js-base64: 3.7.7 + + /@libsql/darwin-arm64@0.3.10: + resolution: {integrity: sha512-RaexEFfPAFogd6dJlqkpCkTxdr6K14Z0286lodIJ8Ny77mWuWyBkWKxf70OYWXXAMxMJFUW+6al1F3/Osf/pTg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@libsql/darwin-x64@0.3.10: + resolution: {integrity: sha512-SNVN6n4qNUdMW1fJMFmx4qn4n5RnXsxjFbczpkzG/V7m/5VeTFt1chhGcrahTHCr3+K6eRJWJUEQHRGqjBwPkw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@libsql/hrana-client@0.5.6: + resolution: {integrity: sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==} + dependencies: + '@libsql/isomorphic-fetch': 0.1.12 + '@libsql/isomorphic-ws': 0.1.5 + js-base64: 3.7.7 + node-fetch: 3.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@libsql/isomorphic-fetch@0.1.12: + resolution: {integrity: sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==} + dependencies: + '@types/node-fetch': 2.6.11 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + /@libsql/isomorphic-ws@0.1.5: + resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} + dependencies: + '@types/ws': 8.5.10 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + /@libsql/linux-arm64-gnu@0.3.10: + resolution: {integrity: sha512-2uXpi9d8qtyIOr7pyG4a88j6YXgemyIHEs2Wbp+PPletlCIPsFS+E7IQHbz8VwTohchOzcokGUm1Bc5QC+A7wg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@libsql/linux-arm64-musl@0.3.10: + resolution: {integrity: sha512-72SN1FUavLvzHddCS861ynSpQndcW5oLGKA3U8CyMfgIZIwJAPc7+48Uj1plW00htXBx4GBpcntFp68KKIx3YQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@libsql/linux-x64-gnu@0.3.10: + resolution: {integrity: sha512-hXyNqVRi7ONuyWZ1SX6setxL0QaQ7InyS3bHLupsi9s7NpOGD5vcpTaYicJOqmIIm+6kt8vJfmo7ZxlarIHy7Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@libsql/linux-x64-musl@0.3.10: + resolution: {integrity: sha512-kNmIRxomVwt9S+cLyYS497F/3gXFF4r8wW12YSBQgxG75JYft07AHVd8J7HINg+oqRkLzT0s+mVX5dM6nk68EQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@libsql/win32-x64-msvc@0.3.10: + resolution: {integrity: sha512-c/6rjdtGULKrJkLgfLobFefObfOtxjXGmCfPxv6pr0epPCeUEssfDbDIeEH9fQUgzogIMWEHwT8so52UJ/iT1Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@mapbox/node-pre-gyp@1.0.11: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -1665,6 +1745,9 @@ packages: - encoding - supports-color + /@neon-rs/load@0.0.4: + resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} + /@netlify/functions@2.6.0: resolution: {integrity: sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ==} engines: {node: '>=14.0.0'} @@ -1778,7 +1861,7 @@ packages: - bluebird - supports-color - /@nuxt/content@2.12.1(@planetscale/database@1.16.0)(nuxt@3.10.3)(vue@3.4.21): + /@nuxt/content@2.12.1(nuxt@3.10.3)(vue@3.4.21): resolution: {integrity: sha512-xW4xjyYm6zqglb17Tu0J+rpKUV1PF9zp6SLu1lopylFnerdyImtce84206HT6Zd/DJgivKtoW4dyyJn0ZaSqCQ==} dependencies: '@nuxt/kit': 3.10.3 @@ -1806,7 +1889,7 @@ packages: socket.io-client: 4.7.4 ufo: 1.4.0 unist-util-stringify-position: 4.0.0 - unstorage: 1.10.1(@planetscale/database@1.16.0) + unstorage: 1.10.2 ws: 8.16.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -1823,6 +1906,7 @@ packages: - '@vue/composition-api' - bufferutil - idb-keyval + - ioredis - nuxt - rollup - supports-color @@ -1834,7 +1918,7 @@ packages: /@nuxt/devalue@2.0.2: resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} - /@nuxt/devtools-kit@1.0.8(nuxt@3.10.3)(vite@5.1.5): + /@nuxt/devtools-kit@1.0.8(nuxt@3.10.3)(vite@5.1.6): resolution: {integrity: sha512-j7bNZmoAXQ1a8qv6j6zk4c/aekrxYqYVQM21o/Hy4XHCUq4fajSgpoc8mjyWJSTfpkOmuLyEzMexpDWiIVSr6A==} peerDependencies: nuxt: ^3.9.0 @@ -1843,8 +1927,8 @@ packages: '@nuxt/kit': 3.10.3 '@nuxt/schema': 3.10.3 execa: 7.2.0 - nuxt: 3.10.3(@planetscale/database@1.16.0)(@types/node@20.11.25)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6) - vite: 5.1.5(@types/node@20.11.25) + nuxt: 3.10.3(@libsql/client@0.5.6)(@types/node@20.11.27)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6) + vite: 5.1.6(@types/node@20.11.27) transitivePeerDependencies: - rollup - supports-color @@ -1864,7 +1948,7 @@ packages: rc9: 2.1.1 semver: 7.6.0 - /@nuxt/devtools@1.0.8(nuxt@3.10.3)(vite@5.1.5): + /@nuxt/devtools@1.0.8(nuxt@3.10.3)(vite@5.1.6): resolution: {integrity: sha512-o6aBFEBxc8OgVHV4OPe2g0q9tFIe9HiTxRiJnlTJ+jHvOQsBLS651ArdVtwLChf9UdMouFlpLLJ1HteZqTbtsQ==} hasBin: true peerDependencies: @@ -1872,7 +1956,7 @@ packages: vite: '*' dependencies: '@antfu/utils': 0.7.7 - '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(vite@5.1.5) + '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(vite@5.1.6) '@nuxt/devtools-wizard': 1.0.8 '@nuxt/kit': 3.10.3 birpc: 0.2.17 @@ -1889,7 +1973,7 @@ packages: launch-editor: 2.6.1 local-pkg: 0.5.0 magicast: 0.3.3 - nuxt: 3.10.3(@planetscale/database@1.16.0)(@types/node@20.11.25)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6) + nuxt: 3.10.3(@libsql/client@0.5.6)(@types/node@20.11.27)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6) nypm: 0.3.8 ohash: 1.1.3 pacote: 17.0.6 @@ -1901,10 +1985,10 @@ packages: semver: 7.6.0 simple-git: 3.22.0 sirv: 2.0.4 - unimport: 3.7.1(rollup@4.12.1) - vite: 5.1.5(@types/node@20.11.25) - vite-plugin-inspect: 0.8.3(@nuxt/kit@3.10.3)(vite@5.1.5) - vite-plugin-vue-inspector: 4.0.2(vite@5.1.5) + unimport: 3.7.1(rollup@4.13.0) + vite: 5.1.6(@types/node@20.11.27) + vite-plugin-inspect: 0.8.3(@nuxt/kit@3.10.3)(vite@5.1.6) + vite-plugin-vue-inspector: 4.0.2(vite@5.1.6) which: 3.0.1 ws: 8.16.0 transitivePeerDependencies: @@ -1914,7 +1998,7 @@ packages: - supports-color - utf-8-validate - /@nuxt/image@1.4.0(@planetscale/database@1.16.0): + /@nuxt/image@1.4.0: resolution: {integrity: sha512-ZEGHjX8UZY/Wt/jWm+66QuUQA14E0dTwdi7n9BoZ1cJdinL8QdRMm3FcbwJvCj2quvD85c9LT2wvNA8l6hOMOA==} engines: {node: ^14.16.0 || >=16.11.0} dependencies: @@ -1929,7 +2013,7 @@ packages: std-env: 3.7.0 ufo: 1.4.0 optionalDependencies: - ipx: 2.1.0(@planetscale/database@1.16.0) + ipx: 2.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -1943,6 +2027,7 @@ packages: - '@upstash/redis' - '@vercel/kv' - idb-keyval + - ioredis - rollup - supports-color - uWebSockets.js @@ -1968,7 +2053,7 @@ packages: semver: 7.6.0 ufo: 1.4.0 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.12.1) + unimport: 3.7.1(rollup@4.13.0) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -1994,7 +2079,7 @@ packages: semver: 7.6.0 ufo: 1.4.0 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.12.1) + unimport: 3.7.1(rollup@4.13.0) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2014,7 +2099,7 @@ packages: scule: 1.3.0 std-env: 3.7.0 ufo: 1.4.0 - unimport: 3.7.1(rollup@4.12.1) + unimport: 3.7.1(rollup@4.13.0) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2033,7 +2118,7 @@ packages: scule: 1.3.0 std-env: 3.7.0 ufo: 1.4.0 - unimport: 3.7.1(rollup@4.12.1) + unimport: 3.7.1(rollup@4.13.0) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2068,16 +2153,16 @@ packages: /@nuxt/ui-templates@1.3.1: resolution: {integrity: sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==} - /@nuxt/vite-builder@3.10.3(@types/node@20.11.25)(typescript@5.4.2)(vue-tsc@2.0.6)(vue@3.4.21): + /@nuxt/vite-builder@3.10.3(@types/node@20.11.27)(typescript@5.4.2)(vue-tsc@2.0.6)(vue@3.4.21): resolution: {integrity: sha512-BqkbrYkEk1AVUJleofbqTRV+ltf2p1CDjGDK78zENPCgrSABlj4F4oK8rze8vmRY5qoH7kMZxgMa2dXVXCp6OA==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: vue: ^3.3.4 dependencies: '@nuxt/kit': 3.10.3 - '@rollup/plugin-replace': 5.0.5(rollup@4.12.1) - '@vitejs/plugin-vue': 5.0.4(vite@5.1.5)(vue@3.4.21) - '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.1.5)(vue@3.4.21) + '@rollup/plugin-replace': 5.0.5(rollup@4.13.0) + '@vitejs/plugin-vue': 5.0.4(vite@5.1.6)(vue@3.4.21) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.1.6)(vue@3.4.21) autoprefixer: 10.4.18(postcss@8.4.35) clear: 0.1.0 consola: 3.2.3 @@ -2098,15 +2183,15 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 postcss: 8.4.35 - rollup-plugin-visualizer: 5.12.0(rollup@4.12.1) + rollup-plugin-visualizer: 5.12.0(rollup@4.13.0) std-env: 3.7.0 strip-literal: 2.0.0 ufo: 1.4.0 unenv: 1.9.0 - unplugin: 1.9.0 - vite: 5.1.5(@types/node@20.11.25) - vite-node: 1.3.1(@types/node@20.11.25) - vite-plugin-checker: 0.6.4(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6) + unplugin: 1.10.0 + vite: 5.1.6(@types/node@20.11.27) + vite-node: 1.3.1(@types/node@20.11.27) + vite-plugin-checker: 0.6.4(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6) vue: 3.4.21(typescript@5.4.2) vue-bundle-renderer: 2.0.0 transitivePeerDependencies: @@ -2220,7 +2305,7 @@ packages: - uWebSockets.js dev: false - /@nuxtjs/tailwindcss@6.11.4(ts-node@10.9.2): + /@nuxtjs/tailwindcss@6.11.4: resolution: {integrity: sha512-09cksgZD4seQj054Z/BeiwFg1bzQTol8KPulLDLGnmMTkEi21vj/z+WlXQRpVbN1GS9+oU9tcSsu2ufXCM3DBg==} dependencies: '@nuxt/kit': 3.10.3 @@ -2233,10 +2318,10 @@ packages: micromatch: 4.0.5 pathe: 1.1.2 postcss: 8.4.35 - postcss-custom-properties: 13.3.5(postcss@8.4.35) + postcss-custom-properties: 13.3.6(postcss@8.4.35) postcss-nesting: 12.1.0(postcss@8.4.35) tailwind-config-viewer: 1.7.3(tailwindcss@3.4.1) - tailwindcss: 3.4.1(ts-node@10.9.2) + tailwindcss: 3.4.1 ufo: 1.4.0 transitivePeerDependencies: - rollup @@ -2378,14 +2463,10 @@ packages: requiresBuild: true optional: true - /@planetscale/database@1.16.0: - resolution: {integrity: sha512-HNUrTqrd8aTRZYMDcsoZ62s36sIWkMMmKZBOehoCWR2WrfNPKq+Q1yQef5okl3pSVlldFnu2h/dbHjOsDTHXug==} - engines: {node: '>=16'} - /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - /@rollup/plugin-alias@5.1.0(rollup@4.12.1): + /@rollup/plugin-alias@5.1.0(rollup@4.13.0): resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2394,10 +2475,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.12.1 + rollup: 4.13.0 slash: 4.0.0 - /@rollup/plugin-commonjs@25.0.7(rollup@4.12.1): + /@rollup/plugin-commonjs@25.0.7(rollup@4.13.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2406,15 +2487,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.8 - rollup: 4.12.1 + rollup: 4.13.0 - /@rollup/plugin-inject@5.0.5(rollup@4.12.1): + /@rollup/plugin-inject@5.0.5(rollup@4.13.0): resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2423,12 +2504,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) estree-walker: 2.0.2 magic-string: 0.30.8 - rollup: 4.12.1 + rollup: 4.13.0 - /@rollup/plugin-json@6.1.0(rollup@4.12.1): + /@rollup/plugin-json@6.1.0(rollup@4.13.0): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2437,10 +2518,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) - rollup: 4.12.1 + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + rollup: 4.13.0 - /@rollup/plugin-node-resolve@15.2.3(rollup@4.12.1): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.13.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2449,15 +2530,15 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.12.1 + rollup: 4.13.0 - /@rollup/plugin-replace@5.0.5(rollup@4.12.1): + /@rollup/plugin-replace@5.0.5(rollup@4.13.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2466,11 +2547,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) magic-string: 0.30.8 - rollup: 4.12.1 + rollup: 4.13.0 - /@rollup/plugin-terser@0.4.4(rollup@4.12.1): + /@rollup/plugin-terser@0.4.4(rollup@4.13.0): resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2479,10 +2560,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.12.1 + rollup: 4.13.0 serialize-javascript: 6.0.2 smob: 1.4.1 - terser: 5.29.1 + terser: 5.29.2 /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2491,7 +2572,7 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 - /@rollup/pluginutils@5.1.0(rollup@4.12.1): + /@rollup/pluginutils@5.1.0(rollup@4.13.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2503,94 +2584,94 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.12.1 + rollup: 4.13.0 - /@rollup/rollup-android-arm-eabi@4.12.1: - resolution: {integrity: sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==} + /@rollup/rollup-android-arm-eabi@4.13.0: + resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.12.1: - resolution: {integrity: sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==} + /@rollup/rollup-android-arm64@4.13.0: + resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.12.1: - resolution: {integrity: sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==} + /@rollup/rollup-darwin-arm64@4.13.0: + resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.12.1: - resolution: {integrity: sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==} + /@rollup/rollup-darwin-x64@4.13.0: + resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.12.1: - resolution: {integrity: sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.13.0: + resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.12.1: - resolution: {integrity: sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==} + /@rollup/rollup-linux-arm64-gnu@4.13.0: + resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.12.1: - resolution: {integrity: sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==} + /@rollup/rollup-linux-arm64-musl@4.13.0: + resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.12.1: - resolution: {integrity: sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==} + /@rollup/rollup-linux-riscv64-gnu@4.13.0: + resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.12.1: - resolution: {integrity: sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==} + /@rollup/rollup-linux-x64-gnu@4.13.0: + resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.12.1: - resolution: {integrity: sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==} + /@rollup/rollup-linux-x64-musl@4.13.0: + resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.12.1: - resolution: {integrity: sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==} + /@rollup/rollup-win32-arm64-msvc@4.13.0: + resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.12.1: - resolution: {integrity: sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==} + /@rollup/rollup-win32-ia32-msvc@4.13.0: + resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.12.1: - resolution: {integrity: sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==} + /@rollup/rollup-win32-x64-msvc@4.13.0: + resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} cpu: [x64] os: [win32] requiresBuild: true @@ -2683,7 +2764,7 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1(ts-node@10.9.2) + tailwindcss: 3.4.1 dev: true /@trysound/sax@0.2.0: @@ -2691,18 +2772,6 @@ packages: engines: {node: '>=10.13.0'} requiresBuild: true - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@tufjs/canonical-json@2.0.0: resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2714,6 +2783,11 @@ packages: '@tufjs/canonical-json': 2.0.0 minimatch: 9.0.3 + /@types/better-sqlite3@7.6.9: + resolution: {integrity: sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==} + dependencies: + '@types/node': 20.11.27 + /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: @@ -2732,16 +2806,16 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.11.25 + '@types/node': 20.11.27 /@types/lodash-es@4.17.12: resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} dependencies: - '@types/lodash': 4.14.202 + '@types/lodash': 4.17.0 dev: true - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} dev: true /@types/mdast@4.0.3: @@ -2754,8 +2828,14 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: false - /@types/node@20.11.25: - resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + dependencies: + '@types/node': 20.11.27 + form-data: 4.0.0 + + /@types/node@20.11.27: + resolution: {integrity: sha512-qyUZfMnCg1KEz57r7pzFtSGt49f6RPkPBis3Vo4PbS7roQEDn22hiHzl/Lo1q4i4hDEgBJmBF/NTNg2XR0HbFg==} dependencies: undici-types: 5.26.5 @@ -2774,42 +2854,47 @@ packages: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: false + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.11.27 + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false - /@unhead/dom@1.8.12: - resolution: {integrity: sha512-1A94VyVX/yxBXmZR1mvxvmhhbgF72dUDcmsmoyXOiobd3Zt2rJLu19Ih8jy35CDR4oUAWzK+o6HO1vWzY4wGAQ==} + /@unhead/dom@1.8.18: + resolution: {integrity: sha512-F6ckuW+IAojGCSb++WFQlDeI3/80OALpD6yDcDrhAxZ8ogQatd5gXWjTmSiuV/0M2XIeDq3jwampvq6oomU6Gw==} dependencies: - '@unhead/schema': 1.8.12 - '@unhead/shared': 1.8.12 + '@unhead/schema': 1.8.18 + '@unhead/shared': 1.8.18 - /@unhead/schema@1.8.12: - resolution: {integrity: sha512-sUkjvRGaAN0NCvZtB7VtyC5pUdYQAutHtmKbEK79nfPfb2Z7kFT1nysIno13ivybeq98l4Ge1o4crVuTwGHhTw==} + /@unhead/schema@1.8.18: + resolution: {integrity: sha512-E4oq4juwGJkXPOJlc4Qdp1iVTe79H4TSMWkOB8sSlU44vhvcuZduFYH9CCn29JvtV/640Uaf2QeX4o+wX96LRQ==} dependencies: hookable: 5.5.3 zhead: 2.2.4 - /@unhead/shared@1.8.12: - resolution: {integrity: sha512-3pP1cYSH22UeCvvVyAVkh7Nfo2GwWDuO/h/31I2eVl5oVvmb0vZx7Ff47RlfKDMkfN7ddKaRwkLaYAR+hNNWsQ==} + /@unhead/shared@1.8.18: + resolution: {integrity: sha512-2Tw5oyTjMkPn11UoR9AB3kSk2nDVG+7nCS4dZUwdxTMqndUnYyWoGB0EcO2WbK6YpkpulLIlfmiXVzWW4PTrWg==} dependencies: - '@unhead/schema': 1.8.12 + '@unhead/schema': 1.8.18 - /@unhead/ssr@1.8.12: - resolution: {integrity: sha512-e1pcp5HU6QgQChxx4YrMA+Lq/fw783vKtbbbnh0XCcHhwvuw2wr55Ah27KEwm+CGKHkuAhmz75ZKBJy1GZcu2Q==} + /@unhead/ssr@1.8.18: + resolution: {integrity: sha512-l66PSAHartxcWvOW5E/zx8LJJFnRiMBZnDh3Ve9KnGIA8w5B/0Mhhhe/tcv2yyXEV4K/q6ke0taeBy2mD3/Auw==} dependencies: - '@unhead/schema': 1.8.12 - '@unhead/shared': 1.8.12 + '@unhead/schema': 1.8.18 + '@unhead/shared': 1.8.18 - /@unhead/vue@1.8.12(vue@3.4.21): - resolution: {integrity: sha512-26D+3SIfJwTx1PgPa+urjJ5agImucevSS5pwXMTYHQOK45ip+TTAealrRTbMmAkvaw+KK6Su9OaCzlYVJnmDOQ==} + /@unhead/vue@1.8.18(vue@3.4.21): + resolution: {integrity: sha512-aKsDCYAiQ27Cjs8nyUHaYNYOQjdhhobMswrelNddekGpk63Y25bRO2NT3DheAOqAAcH4Qdt7JIe5Bu4N1HG5Gg==} peerDependencies: vue: '>=2.7 || >=3' dependencies: - '@unhead/schema': 1.8.12 - '@unhead/shared': 1.8.12 + '@unhead/schema': 1.8.18 + '@unhead/shared': 1.8.18 hookable: 5.5.3 - unhead: 1.8.12 + unhead: 1.8.18 vue: 3.4.21(typescript@5.4.2) /@vercel/nft@0.26.4: @@ -2833,7 +2918,7 @@ packages: - encoding - supports-color - /@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.5)(vue@3.4.21): + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.6)(vue@3.4.21): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2843,19 +2928,19 @@ packages: '@babel/core': 7.24.0 '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.24.0) - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) vue: 3.4.21(typescript@5.4.2) transitivePeerDependencies: - supports-color - /@vitejs/plugin-vue@5.0.4(vite@5.1.5)(vue@3.4.21): + /@vitejs/plugin-vue@5.0.4(vite@5.1.6)(vue@3.4.21): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) vue: 3.4.21(typescript@5.4.2) /@volar/language-core@2.1.2: @@ -2884,7 +2969,7 @@ packages: optional: true dependencies: '@babel/types': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) '@vue/compiler-sfc': 3.4.21 ast-kit: 0.11.3 local-pkg: 0.5.0 @@ -3032,10 +3117,10 @@ packages: peerDependencies: vue: '>=2.7 || >=3' dependencies: - '@unhead/dom': 1.8.12 - '@unhead/schema': 1.8.12 - '@unhead/ssr': 1.8.12 - '@unhead/vue': 1.8.12(vue@3.4.21) + '@unhead/dom': 1.8.18 + '@unhead/schema': 1.8.18 + '@unhead/ssr': 1.8.18 + '@unhead/vue': 1.8.18(vue@3.4.21) vue: 3.4.21(typescript@5.4.2) dev: false @@ -3052,7 +3137,7 @@ packages: '@vueuse/core': 10.9.0(vue@3.4.21) '@vueuse/metadata': 10.9.0 local-pkg: 0.5.0 - nuxt: 3.10.3(@planetscale/database@1.16.0)(@types/node@20.11.25)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6) + nuxt: 3.10.3(@libsql/client@0.5.6)(@types/node@20.11.27)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6) vue-demi: 0.14.7(vue@3.4.21) transitivePeerDependencies: - '@vue/composition-api' @@ -3098,10 +3183,6 @@ packages: dependencies: acorn: 8.11.3 - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -3208,9 +3289,6 @@ packages: delegates: 1.0.0 readable-stream: 3.6.2 - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -3222,7 +3300,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) pathe: 1.1.2 transitivePeerDependencies: - rollup @@ -3232,7 +3310,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) pathe: 1.1.2 transitivePeerDependencies: - rollup @@ -3258,6 +3336,9 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -3271,7 +3352,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -3293,19 +3374,19 @@ packages: requiresBuild: true optional: true - /bare-fs@2.2.1: - resolution: {integrity: sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==} + /bare-fs@2.2.2: + resolution: {integrity: sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==} requiresBuild: true dependencies: bare-events: 2.2.1 - bare-os: 2.2.0 + bare-os: 2.2.1 bare-path: 2.1.0 streamx: 2.16.1 dev: false optional: true - /bare-os@2.2.0: - resolution: {integrity: sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==} + /bare-os@2.2.1: + resolution: {integrity: sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==} requiresBuild: true dev: false optional: true @@ -3314,7 +3395,7 @@ packages: resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} requiresBuild: true dependencies: - bare-os: 2.2.0 + bare-os: 2.2.1 dev: false optional: true @@ -3389,8 +3470,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001596 - electron-to-chromium: 1.4.699 + caniuse-lite: 1.0.30001597 + electron-to-chromium: 1.4.705 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -3498,12 +3579,12 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - /caniuse-lite@1.0.30001596: - resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==} + /caniuse-lite@1.0.30001597: + resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3629,10 +3710,6 @@ packages: engines: {node: '>=0.8'} dev: false - /cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -3681,6 +3758,12 @@ packages: /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false @@ -3838,7 +3921,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /css-declaration-sorter@7.1.1(postcss@8.4.35): @@ -3855,9 +3938,9 @@ packages: peerDependencies: postcss: ^8.4 dependencies: - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.16) postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 dev: false @@ -3988,7 +4071,11 @@ packages: type: 2.7.2 dev: true - /db0@0.1.4(drizzle-orm@0.30.1): + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + /db0@0.1.4(@libsql/client@0.5.6)(drizzle-orm@0.30.1): resolution: {integrity: sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==} peerDependencies: '@libsql/client': ^0.5.2 @@ -4002,7 +4089,8 @@ packages: drizzle-orm: optional: true dependencies: - drizzle-orm: 0.30.1(@planetscale/database@1.16.0)(mysql2@3.9.2) + '@libsql/client': 0.5.6 + drizzle-orm: 0.30.1(@libsql/client@0.5.6)(@types/better-sqlite3@7.6.9) /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -4091,13 +4179,13 @@ packages: /defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - /denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -4148,10 +4236,6 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -4227,7 +4311,7 @@ packages: - supports-color dev: true - /drizzle-orm@0.30.1(@planetscale/database@1.16.0)(mysql2@3.9.2): + /drizzle-orm@0.30.1(@libsql/client@0.5.6)(@types/better-sqlite3@7.6.9): resolution: {integrity: sha512-5P6CXl4XyWtDDiYOX/jYOJp1HTUmBlXRAwaq+muUOgaSykMEy5sJesCxceMT0oCGvxeWkKfSXo5owLnfKwCIdw==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' @@ -4301,8 +4385,8 @@ packages: sqlite3: optional: true dependencies: - '@planetscale/database': 1.16.0 - mysql2: 3.9.2 + '@libsql/client': 0.5.6 + '@types/better-sqlite3': 7.6.9 /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -4313,8 +4397,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.699: - resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==} + /electron-to-chromium@1.4.705: + resolution: {integrity: sha512-LKqhpwJCLhYId2VVwEzFXWrqQI5n5zBppz1W9ehhTlfYU8CUUW6kClbN8LHF/v7flMgRdETS772nqywJ+ckVAw==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4368,8 +4452,8 @@ packages: engines: {node: '>=10.0.0'} dev: false - /enhanced-resolve@5.15.1: - resolution: {integrity: sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==} + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -4634,7 +4718,7 @@ packages: /externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} dependencies: - enhanced-resolve: 5.15.1 + enhanced-resolve: 5.16.0 mlly: 1.6.1 pathe: 1.1.2 ufo: 1.4.0 @@ -4661,6 +4745,13 @@ packages: dependencies: reusify: 1.0.4 + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -4692,7 +4783,7 @@ packages: magic-string: 0.30.8 pathe: 1.1.2 ufo: 1.4.0 - unplugin: 1.9.0 + unplugin: 1.10.0 transitivePeerDependencies: - encoding dev: false @@ -4718,6 +4809,20 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -4788,11 +4893,6 @@ packages: strip-ansi: 6.0.1 wide-align: 1.1.5 - /generate-function@2.3.1: - resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} - dependencies: - is-property: 1.0.2 - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5191,8 +5291,10 @@ packages: /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: safer-buffer: 2.1.2 + optional: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5238,22 +5340,6 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - /ioredis@5.3.2: - resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} - engines: {node: '>=12.22.0'} - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.3.4 - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - /ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -5261,7 +5347,7 @@ packages: jsbn: 1.1.0 sprintf-js: 1.1.3 - /ipx@2.1.0(@planetscale/database@1.16.0): + /ipx@2.1.0: resolution: {integrity: sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==} hasBin: true requiresBuild: true @@ -5280,7 +5366,7 @@ packages: sharp: 0.32.6 svgo: 3.2.0 ufo: 1.4.0 - unstorage: 1.10.1(@planetscale/database@1.16.0) + unstorage: 1.10.2 xss: 1.0.15 transitivePeerDependencies: - '@azure/app-configuration' @@ -5295,7 +5381,7 @@ packages: - '@upstash/redis' - '@vercel/kv' - idb-keyval - - supports-color + - ioredis - uWebSockets.js dev: false optional: true @@ -5422,9 +5508,6 @@ packages: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: true - /is-property@1.0.2: - resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} - /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: @@ -5488,6 +5571,9 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + /js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5637,6 +5723,22 @@ packages: dependencies: readable-stream: 2.3.8 + /libsql@0.3.10: + resolution: {integrity: sha512-/8YMTbwWFPmrDWY+YFK3kYqVPFkMgQre0DGmBaOmjogMdSe+7GHm1/q9AZ61AWkEub/vHmi+bA4tqIzVhKnqzg==} + cpu: [x64, arm64, wasm32] + os: [darwin, linux, win32] + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + optionalDependencies: + '@libsql/darwin-arm64': 0.3.10 + '@libsql/darwin-x64': 0.3.10 + '@libsql/linux-arm64-gnu': 0.3.10 + '@libsql/linux-arm64-musl': 0.3.10 + '@libsql/linux-x64-gnu': 0.3.10 + '@libsql/linux-x64-musl': 0.3.10 + '@libsql/win32-x64-msvc': 0.3.10 + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -5691,12 +5793,6 @@ packages: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: true - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - /lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true @@ -5718,9 +5814,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false @@ -5740,14 +5833,6 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - /lru-cache@8.0.5: - resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} - engines: {node: '>=16.14'} - /lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: @@ -5762,7 +5847,7 @@ packages: mlly: 1.6.1 type-level-regexp: 0.1.17 ufo: 1.4.0 - unplugin: 1.9.0 + unplugin: 1.10.0 dev: false /magic-string-ast@0.3.0: @@ -5790,9 +5875,6 @@ packages: dependencies: semver: 6.3.1 - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /make-fetch-happen@13.0.0: resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} engines: {node: ^16.14.0 || >=18.0.0} @@ -6256,14 +6338,12 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: false /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: false /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -6430,19 +6510,6 @@ packages: /muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - /mysql2@3.9.2: - resolution: {integrity: sha512-3Cwg/UuRkAv/wm6RhtPE5L7JlPB877vwSF6gfLAS68H+zhH+u5oa3AieqEd0D0/kC3W7qIhYbH419f7O9i/5nw==} - engines: {node: '>= 8.0'} - dependencies: - denque: 2.1.0 - generate-function: 2.3.1 - iconv-lite: 0.6.3 - long: 5.2.3 - lru-cache: 8.0.5 - named-placeholders: 1.1.3 - seq-queue: 0.0.5 - sqlstring: 2.3.3 - /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -6450,12 +6517,6 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /named-placeholders@1.1.3: - resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} - engines: {node: '>=12.0.0'} - dependencies: - lru-cache: 7.18.3 - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -6484,7 +6545,7 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /nitropack@2.9.3(@planetscale/database@1.16.0)(drizzle-orm@0.30.1): + /nitropack@2.9.3(@libsql/client@0.5.6)(drizzle-orm@0.30.1): resolution: {integrity: sha512-k3wXlhxmTNkkFXnVyRYJ6CCdZmvlqjYJ4oaL8o9uTKIjg7A1udAle+3cVDxUWi2r9owwEysAP2+quNsAujZyTg==} engines: {node: ^16.11.0 || >=17.0.0} hasBin: true @@ -6496,14 +6557,14 @@ packages: dependencies: '@cloudflare/kv-asset-handler': 0.3.1 '@netlify/functions': 2.6.0 - '@rollup/plugin-alias': 5.1.0(rollup@4.12.1) - '@rollup/plugin-commonjs': 25.0.7(rollup@4.12.1) - '@rollup/plugin-inject': 5.0.5(rollup@4.12.1) - '@rollup/plugin-json': 6.1.0(rollup@4.12.1) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.12.1) - '@rollup/plugin-replace': 5.0.5(rollup@4.12.1) - '@rollup/plugin-terser': 0.4.4(rollup@4.12.1) - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/plugin-alias': 5.1.0(rollup@4.13.0) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.13.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.13.0) + '@rollup/plugin-json': 6.1.0(rollup@4.13.0) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.13.0) + '@rollup/plugin-replace': 5.0.5(rollup@4.13.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) '@types/http-proxy': 1.17.14 '@vercel/nft': 0.26.4 archiver: 7.0.1 @@ -6515,7 +6576,7 @@ packages: cookie-es: 1.0.0 croner: 8.0.1 crossws: 0.2.4 - db0: 0.1.4(drizzle-orm@0.30.1) + db0: 0.1.4(@libsql/client@0.5.6)(drizzle-orm@0.30.1) defu: 6.1.4 destr: 2.0.3 dot-prop: 8.0.2 @@ -6540,14 +6601,14 @@ packages: node-fetch-native: 1.6.2 ofetch: 1.3.3 ohash: 1.1.3 - openapi-typescript: 6.7.4 + openapi-typescript: 6.7.5 pathe: 1.1.2 perfect-debounce: 1.0.0 pkg-types: 1.0.3 pretty-bytes: 6.1.1 radix3: 1.1.1 - rollup: 4.12.1 - rollup-plugin-visualizer: 5.12.0(rollup@4.12.1) + rollup: 4.13.0 + rollup-plugin-visualizer: 5.12.0(rollup@4.13.0) scule: 1.3.0 semver: 7.6.0 serve-placeholder: 2.0.1 @@ -6557,8 +6618,8 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.12.1) - unstorage: 1.10.1(@planetscale/database@1.16.0) + unimport: 3.7.1(rollup@4.13.0) + unstorage: 1.10.2 unwasm: 0.3.7 transitivePeerDependencies: - '@azure/app-configuration' @@ -6577,6 +6638,7 @@ packages: - drizzle-orm - encoding - idb-keyval + - ioredis - supports-color - uWebSockets.js @@ -6599,6 +6661,10 @@ packages: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + /node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} @@ -6623,6 +6689,14 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -6790,19 +6864,19 @@ packages: dependencies: '@nuxt/kit': 3.10.3 lodash-es: 4.17.21 - packrup: 0.1.0 + packrup: 0.1.2 radix3: 1.1.1 transitivePeerDependencies: - rollup - supports-color dev: false - /nuxt-icon@0.6.9(nuxt@3.10.3)(vite@5.1.5)(vue@3.4.21): + /nuxt-icon@0.6.9(nuxt@3.10.3)(vite@5.1.6)(vue@3.4.21): resolution: {integrity: sha512-l80F5sIVdwlQPfw/9RFuhVE1Pi3NM3wbgePxDZkgYZe5XOpg4ZznhgObLRyAFFjCeU7XVbFMBe09uJBRM4tuvg==} dependencies: - '@iconify/collections': 1.0.402 + '@iconify/collections': 1.0.404 '@iconify/vue': 4.1.1(vue@3.4.21) - '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(vite@5.1.5) + '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(vite@5.1.6) '@nuxt/kit': 3.10.3 transitivePeerDependencies: - nuxt @@ -6812,7 +6886,7 @@ packages: - vue dev: false - /nuxt@3.10.3(@planetscale/database@1.16.0)(@types/node@20.11.25)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6): + /nuxt@3.10.3(@libsql/client@0.5.6)(@types/node@20.11.27)(drizzle-orm@0.30.1)(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6): resolution: {integrity: sha512-NchGNiiz9g/ErJAb462W/lpX2NqcXYb9hugySKWvLXNdrjeAPiJ2/7mhgwUSiZA9MpjuQg3saiEajr1zlRIOCg==} engines: {node: ^14.18.0 || >=16.10.0} hasBin: true @@ -6826,16 +6900,16 @@ packages: optional: true dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.0.8(nuxt@3.10.3)(vite@5.1.5) + '@nuxt/devtools': 1.0.8(nuxt@3.10.3)(vite@5.1.6) '@nuxt/kit': 3.10.3 '@nuxt/schema': 3.10.3 '@nuxt/telemetry': 2.5.3 '@nuxt/ui-templates': 1.3.1 - '@nuxt/vite-builder': 3.10.3(@types/node@20.11.25)(typescript@5.4.2)(vue-tsc@2.0.6)(vue@3.4.21) - '@types/node': 20.11.25 - '@unhead/dom': 1.8.12 - '@unhead/ssr': 1.8.12 - '@unhead/vue': 1.8.12(vue@3.4.21) + '@nuxt/vite-builder': 3.10.3(@types/node@20.11.27)(typescript@5.4.2)(vue-tsc@2.0.6)(vue@3.4.21) + '@types/node': 20.11.27 + '@unhead/dom': 1.8.18 + '@unhead/ssr': 1.8.18 + '@unhead/vue': 1.8.18(vue@3.4.21) '@vue/shared': 3.4.21 acorn: 8.11.3 c12: 1.10.0 @@ -6856,7 +6930,7 @@ packages: knitwork: 1.0.0 magic-string: 0.30.8 mlly: 1.6.1 - nitropack: 2.9.3(@planetscale/database@1.16.0)(drizzle-orm@0.30.1) + nitropack: 2.9.3(@libsql/client@0.5.6)(drizzle-orm@0.30.1) nuxi: 3.10.1 nypm: 0.3.8 ofetch: 1.3.3 @@ -6873,8 +6947,8 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.12.1) - unplugin: 1.9.0 + unimport: 3.7.1(rollup@4.13.0) + unplugin: 1.10.0 unplugin-vue-router: 0.7.0(vue-router@4.3.0)(vue@3.4.21) untyped: 1.4.2 vue: 3.4.21(typescript@5.4.2) @@ -6901,6 +6975,7 @@ packages: - encoding - eslint - idb-keyval + - ioredis - less - lightningcss - meow @@ -6996,8 +7071,8 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 - /openapi-typescript@6.7.4: - resolution: {integrity: sha512-EZyeW9Wy7UDCKv0iYmKrq2pVZtquXiD/YHiUClAKqiMi42nodx/EQH11K6fLqjt1IZlJmVokrAsExsBMM2RROQ==} + /openapi-typescript@6.7.5: + resolution: {integrity: sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==} hasBin: true dependencies: ansi-colors: 4.1.3 @@ -7013,8 +7088,8 @@ packages: dependencies: aggregate-error: 3.1.0 - /packrup@0.1.0: - resolution: {integrity: sha512-HnUl9ztHGty5ZK13WM8Q7854SWPKH/eCT+MiTO0P1qCu1Y4S5PPJ8E9MwD3cnjSr7PUPzXDnmOVJIKM043OfJQ==} + /packrup@0.1.2: + resolution: {integrity: sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA==} dev: false /pacote@17.0.6: @@ -7174,7 +7249,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-calc@9.0.1(postcss@8.4.35): @@ -7184,7 +7259,7 @@ packages: postcss: ^8.2.2 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 /postcss-clamp@4.1.0(postcss@8.4.35): @@ -7197,16 +7272,16 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-color-functional-notation@6.0.5(postcss@8.4.35): - resolution: {integrity: sha512-aTFsIy89ftjyclwUHRwvz1IxucLzVrzmmcXmtbPWT9GdyYeaJEKeAwbaZzOZn7AQlXg4xfwgkYhKsofC4aLIwg==} + /postcss-color-functional-notation@6.0.6(postcss@8.4.35): + resolution: {integrity: sha512-2GENDVgEk1dt+OdVhPO+zO4Dzj31Xs9EuKgQLbY9RSkKS3jUqnbTAh33bUhKce5JM1ZmsXm0azCb7Bh8j6W6Nw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false @@ -7255,44 +7330,44 @@ packages: postcss: 8.4.35 postcss-value-parser: 4.2.0 - /postcss-custom-media@10.0.3(postcss@8.4.35): - resolution: {integrity: sha512-wfJ9nKpLn/Qy7LASKu0Rj9Iq2uMzlRt27P4FAE1889IKRMdYUgy8SqvdXfAOs7LJLQX9Fjm0mZ+TSFphD/mKwA==} + /postcss-custom-media@10.0.4(postcss@8.4.35): + resolution: {integrity: sha512-Ubs7O3wj2prghaKRa68VHBvuy3KnTQ0zbGwqDYY1mntxJD0QL2AeiAy+AMfl3HBedTCVr2IcFNktwty9YpSskA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/cascade-layer-name-parser': 1.0.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/media-query-list-parser': 2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/media-query-list-parser': 2.1.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) postcss: 8.4.35 dev: false - /postcss-custom-properties@13.3.5(postcss@8.4.35): - resolution: {integrity: sha512-xHg8DTCMfN2nrqs2CQTF+0m5jgnzKL5zrW5Y05KF6xBRO0uDPxiplBm/xcr1o49SLbyJXkMuaRJKhRzkrquKnQ==} + /postcss-custom-properties@13.3.6(postcss@8.4.35): + resolution: {integrity: sha512-vVVIwQbJiIz+PBLMIWA6XMi53Zg66/f474KolA7x0Das6EwkATc/9ZvM6zZx2gs7ZhcgVHjmWBbHkK9FlCgLeA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/cascade-layer-name-parser': 1.0.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: false - /postcss-custom-selectors@7.1.7(postcss@8.4.35): - resolution: {integrity: sha512-N19MpExaR+hYTXU59VO02xE42zLoAUYSVcupwkKlWWLteOb+sWCWHw5FhV7u7gVLTzaGULy7nZP3DNTHgOZAPA==} + /postcss-custom-selectors@7.1.8(postcss@8.4.35): + resolution: {integrity: sha512-fqDkGSEsO7+oQaqdRdR8nwwqH+N2uk6LE/2g4myVJJYz/Ly418lHKEleKTdV/GzjBjFcG4n0dbfuH/Pd2BE8YA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/cascade-layer-name-parser': 1.0.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 + '@csstools/cascade-layer-name-parser': 1.0.9(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-dir-pseudo-class@8.0.1(postcss@8.4.35): @@ -7302,7 +7377,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-discard-comments@6.0.2(postcss@8.4.35): @@ -7337,13 +7412,13 @@ packages: dependencies: postcss: 8.4.35 - /postcss-double-position-gradients@5.0.4(postcss@8.4.35): - resolution: {integrity: sha512-xOH2QhazCPeYR+ziYaDcGlpo7Bpw8PVoggOFfU/xPkmBRUQH8MR2eWoPY1CZM93CB0WKs2mxq3ORo83QGIooLw==} + /postcss-double-position-gradients@5.0.5(postcss@8.4.35): + resolution: {integrity: sha512-26Tx4BfoxMNO9C89Nk56bfGv4jAwdDVgrQOyHZOP/6/D+xuOBf306KzTjHC2oBzaIIVtX+famOWHv4raxMjJMQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 @@ -7356,7 +7431,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-focus-within@8.0.1(postcss@8.4.35): @@ -7366,7 +7441,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-font-variant@5.0.0(postcss@8.4.35): @@ -7417,21 +7492,21 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.35 - /postcss-lab-function@6.0.10(postcss@8.4.35): - resolution: {integrity: sha512-Csvw/CwwuwTojK2O3Ad0SvYKrfnAKy+uvT+1Fjk6igR+n8gHuJHIwdj1A2s46EZZojg3RkibdMBuv1vMvR6Sng==} + /postcss-lab-function@6.0.11(postcss@8.4.35): + resolution: {integrity: sha512-toTAozTlBBhqSynSJ32O6ssukZFphS58AAQcVqMA8kG/E04+v+e7E5OKRqq68M/VJaWIeMdpyeBEO51buMrdvw==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/css-color-parser': 1.5.2(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) - '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) - '@csstools/css-tokenizer': 2.2.3 - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) + '@csstools/css-color-parser': 1.6.0(@csstools/css-parser-algorithms@2.6.1)(@csstools/css-tokenizer@2.2.4) + '@csstools/css-parser-algorithms': 2.6.1(@csstools/css-tokenizer@2.2.4) + '@csstools/css-tokenizer': 2.2.4 + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) '@csstools/utilities': 1.0.0(postcss@8.4.35) postcss: 8.4.35 dev: false - /postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2): + /postcss-load-config@4.0.2(postcss@8.4.35): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -7445,7 +7520,6 @@ packages: dependencies: lilconfig: 3.1.1 postcss: 8.4.35 - ts-node: 10.9.2(@types/node@20.11.25)(typescript@5.4.2) yaml: 2.4.1 /postcss-logical@7.0.1(postcss@8.4.35): @@ -7478,7 +7552,7 @@ packages: caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.4.35) postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 /postcss-minify-font-values@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==} @@ -7518,7 +7592,7 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 /postcss-nested@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} @@ -7527,7 +7601,7 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 /postcss-nesting@12.1.0(postcss@8.4.35): resolution: {integrity: sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==} @@ -7535,10 +7609,10 @@ packages: peerDependencies: postcss: ^8.4 dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.15) - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.16) postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-normalize-charset@6.0.2(postcss@8.4.35): @@ -7669,40 +7743,40 @@ packages: postcss-value-parser: 4.2.0 dev: false - /postcss-preset-env@9.5.0(postcss@8.4.35): - resolution: {integrity: sha512-ZTrTWCSqKVYSABB1GerMBb6F8Uto5YWIq1nqi+TKOHPzrXMcyJNuJTc0v2lp5WjG4Sfvwdo7HF/7/3j7HskRog==} + /postcss-preset-env@9.5.1(postcss@8.4.35): + resolution: {integrity: sha512-m2biepZ2amqH/ygGRV+lQxnT9+AsYG2OScMwBRLa9YefDOXaCVKzsPtmnvdUG7QENdhAl9tE9nsHbYHVYsqJmQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: '@csstools/postcss-cascade-layers': 4.0.3(postcss@8.4.35) - '@csstools/postcss-color-function': 3.0.10(postcss@8.4.35) - '@csstools/postcss-color-mix-function': 2.0.10(postcss@8.4.35) - '@csstools/postcss-exponential-functions': 1.0.4(postcss@8.4.35) + '@csstools/postcss-color-function': 3.0.11(postcss@8.4.35) + '@csstools/postcss-color-mix-function': 2.0.11(postcss@8.4.35) + '@csstools/postcss-exponential-functions': 1.0.5(postcss@8.4.35) '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.35) - '@csstools/postcss-gamut-mapping': 1.0.3(postcss@8.4.35) - '@csstools/postcss-gradients-interpolation-method': 4.0.11(postcss@8.4.35) - '@csstools/postcss-hwb-function': 3.0.9(postcss@8.4.35) - '@csstools/postcss-ic-unit': 3.0.4(postcss@8.4.35) + '@csstools/postcss-gamut-mapping': 1.0.4(postcss@8.4.35) + '@csstools/postcss-gradients-interpolation-method': 4.0.12(postcss@8.4.35) + '@csstools/postcss-hwb-function': 3.0.10(postcss@8.4.35) + '@csstools/postcss-ic-unit': 3.0.5(postcss@8.4.35) '@csstools/postcss-initial': 1.0.1(postcss@8.4.35) '@csstools/postcss-is-pseudo-class': 4.0.5(postcss@8.4.35) - '@csstools/postcss-light-dark-function': 1.0.0(postcss@8.4.35) + '@csstools/postcss-light-dark-function': 1.0.1(postcss@8.4.35) '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.35) '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.35) '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.35) '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.35) - '@csstools/postcss-logical-viewport-units': 2.0.6(postcss@8.4.35) - '@csstools/postcss-media-minmax': 1.1.3(postcss@8.4.35) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.6(postcss@8.4.35) + '@csstools/postcss-logical-viewport-units': 2.0.7(postcss@8.4.35) + '@csstools/postcss-media-minmax': 1.1.4(postcss@8.4.35) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.7(postcss@8.4.35) '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.35) '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.35) - '@csstools/postcss-oklab-function': 3.0.10(postcss@8.4.35) - '@csstools/postcss-progressive-custom-properties': 3.1.0(postcss@8.4.35) - '@csstools/postcss-relative-color-syntax': 2.0.10(postcss@8.4.35) + '@csstools/postcss-oklab-function': 3.0.11(postcss@8.4.35) + '@csstools/postcss-progressive-custom-properties': 3.1.1(postcss@8.4.35) + '@csstools/postcss-relative-color-syntax': 2.0.11(postcss@8.4.35) '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.35) - '@csstools/postcss-stepped-value-functions': 3.0.5(postcss@8.4.35) + '@csstools/postcss-stepped-value-functions': 3.0.6(postcss@8.4.35) '@csstools/postcss-text-decoration-shorthand': 3.0.4(postcss@8.4.35) - '@csstools/postcss-trigonometric-functions': 3.0.5(postcss@8.4.35) + '@csstools/postcss-trigonometric-functions': 3.0.6(postcss@8.4.35) '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.35) autoprefixer: 10.4.18(postcss@8.4.35) browserslist: 4.23.0 @@ -7713,20 +7787,20 @@ packages: postcss: 8.4.35 postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.35) postcss-clamp: 4.1.0(postcss@8.4.35) - postcss-color-functional-notation: 6.0.5(postcss@8.4.35) + postcss-color-functional-notation: 6.0.6(postcss@8.4.35) postcss-color-hex-alpha: 9.0.4(postcss@8.4.35) postcss-color-rebeccapurple: 9.0.3(postcss@8.4.35) - postcss-custom-media: 10.0.3(postcss@8.4.35) - postcss-custom-properties: 13.3.5(postcss@8.4.35) - postcss-custom-selectors: 7.1.7(postcss@8.4.35) + postcss-custom-media: 10.0.4(postcss@8.4.35) + postcss-custom-properties: 13.3.6(postcss@8.4.35) + postcss-custom-selectors: 7.1.8(postcss@8.4.35) postcss-dir-pseudo-class: 8.0.1(postcss@8.4.35) - postcss-double-position-gradients: 5.0.4(postcss@8.4.35) + postcss-double-position-gradients: 5.0.5(postcss@8.4.35) postcss-focus-visible: 9.0.1(postcss@8.4.35) postcss-focus-within: 8.0.1(postcss@8.4.35) postcss-font-variant: 5.0.0(postcss@8.4.35) postcss-gap-properties: 5.0.1(postcss@8.4.35) postcss-image-set-function: 6.0.3(postcss@8.4.35) - postcss-lab-function: 6.0.10(postcss@8.4.35) + postcss-lab-function: 6.0.11(postcss@8.4.35) postcss-logical: 7.0.1(postcss@8.4.35) postcss-nesting: 12.1.0(postcss@8.4.35) postcss-opacity-percentage: 2.0.0(postcss@8.4.35) @@ -7745,7 +7819,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-reduce-initial@6.1.0(postcss@8.4.35): @@ -7782,7 +7856,7 @@ packages: postcss: ^8.4 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: false /postcss-selector-parser@6.0.10: @@ -7793,8 +7867,8 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -7817,7 +7891,7 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -8068,16 +8142,6 @@ packages: dependencies: picomatch: 2.3.1 - /redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - /redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - dependencies: - redis-errors: 1.2.0 - /rehype-external-links@3.0.0: resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} dependencies: @@ -8256,7 +8320,7 @@ packages: dependencies: glob: 7.2.3 - /rollup-plugin-visualizer@5.12.0(rollup@4.12.1): + /rollup-plugin-visualizer@5.12.0(rollup@4.13.0): resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} engines: {node: '>=14'} hasBin: true @@ -8268,30 +8332,30 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 4.12.1 + rollup: 4.13.0 source-map: 0.7.4 yargs: 17.7.2 - /rollup@4.12.1: - resolution: {integrity: sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==} + /rollup@4.13.0: + resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.1 - '@rollup/rollup-android-arm64': 4.12.1 - '@rollup/rollup-darwin-arm64': 4.12.1 - '@rollup/rollup-darwin-x64': 4.12.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.1 - '@rollup/rollup-linux-arm64-gnu': 4.12.1 - '@rollup/rollup-linux-arm64-musl': 4.12.1 - '@rollup/rollup-linux-riscv64-gnu': 4.12.1 - '@rollup/rollup-linux-x64-gnu': 4.12.1 - '@rollup/rollup-linux-x64-musl': 4.12.1 - '@rollup/rollup-win32-arm64-msvc': 4.12.1 - '@rollup/rollup-win32-ia32-msvc': 4.12.1 - '@rollup/rollup-win32-x64-msvc': 4.12.1 + '@rollup/rollup-android-arm-eabi': 4.13.0 + '@rollup/rollup-android-arm64': 4.13.0 + '@rollup/rollup-darwin-arm64': 4.13.0 + '@rollup/rollup-darwin-x64': 4.13.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 + '@rollup/rollup-linux-arm64-gnu': 4.13.0 + '@rollup/rollup-linux-arm64-musl': 4.13.0 + '@rollup/rollup-linux-riscv64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-musl': 4.13.0 + '@rollup/rollup-win32-arm64-msvc': 4.13.0 + '@rollup/rollup-win32-ia32-msvc': 4.13.0 + '@rollup/rollup-win32-x64-msvc': 4.13.0 fsevents: 2.3.3 /run-applescript@7.0.0: @@ -8311,6 +8375,8 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + requiresBuild: true + optional: true /scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -8346,9 +8412,6 @@ packages: transitivePeerDependencies: - supports-color - /seq-queue@0.0.5: - resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} - /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: @@ -8590,19 +8653,12 @@ packages: /sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - /sqlstring@2.3.3: - resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} - engines: {node: '>= 0.6'} - /ssri@10.0.5: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: minipass: 7.0.4 - /standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8697,7 +8753,7 @@ packages: dependencies: browserslist: 4.23.0 postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} @@ -8774,12 +8830,12 @@ packages: open: 7.4.2 portfinder: 1.0.32 replace-in-file: 6.3.5 - tailwindcss: 3.4.1(ts-node@10.9.2) + tailwindcss: 3.4.1 transitivePeerDependencies: - supports-color dev: false - /tailwindcss@3.4.1(ts-node@10.9.2): + /tailwindcss@3.4.1: resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} engines: {node: '>=14.0.0'} hasBin: true @@ -8801,9 +8857,9 @@ packages: postcss: 8.4.35 postcss-import: 15.1.0(postcss@8.4.35) postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.2) + postcss-load-config: 4.0.2(postcss@8.4.35) postcss-nested: 6.0.1(postcss@8.4.35) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -8831,7 +8887,7 @@ packages: pump: 3.0.0 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 2.2.1 + bare-fs: 2.2.2 bare-path: 2.1.0 dev: false optional: true @@ -8867,12 +8923,12 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 - /terser@5.29.1: - resolution: {integrity: sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==} + /terser@5.29.2: + resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -8934,36 +8990,6 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-node@10.9.2(@types/node@20.11.25)(typescript@5.4.2): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.25 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false @@ -8973,6 +8999,17 @@ packages: engines: {node: '>=0.6.x'} dev: false + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.3 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /tuf-js@2.2.0: resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} engines: {node: ^16.14.0 || >=18.0.0} @@ -9040,7 +9077,7 @@ packages: acorn: 8.11.3 estree-walker: 3.0.3 magic-string: 0.30.8 - unplugin: 1.9.0 + unplugin: 1.10.0 /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -9060,12 +9097,12 @@ packages: node-fetch-native: 1.6.2 pathe: 1.1.2 - /unhead@1.8.12: - resolution: {integrity: sha512-O7YPZo1QtNo24Cv9cXiewB74feARf7v8fCmYWQiY3w0z/7oig1kOoGJub6y2XuusQMZpSX56/GDRmog0IZldeA==} + /unhead@1.8.18: + resolution: {integrity: sha512-XmCGVev0bwo+jy5qh6PW1vACnPoQvv3MEwqo4w0+49W2ZGPMZYPtIa8GAZiaWgkycrlie1WgZejjJEG9bYVgZw==} dependencies: - '@unhead/dom': 1.8.12 - '@unhead/schema': 1.8.12 - '@unhead/shared': 1.8.12 + '@unhead/dom': 1.8.18 + '@unhead/schema': 1.8.18 + '@unhead/shared': 1.8.18 hookable: 5.5.3 /unicode-emoji-modifier-base@1.0.0: @@ -9103,10 +9140,10 @@ packages: vfile: 6.0.1 dev: false - /unimport@3.7.1(rollup@4.12.1): + /unimport@3.7.1(rollup@4.13.0): resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) acorn: 8.11.3 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 @@ -9118,7 +9155,7 @@ packages: pkg-types: 1.0.3 scule: 1.3.0 strip-literal: 1.3.0 - unplugin: 1.9.0 + unplugin: 1.10.0 transitivePeerDependencies: - rollup @@ -9186,7 +9223,7 @@ packages: optional: true dependencies: '@babel/types': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) '@vue-macros/common': 1.10.1(vue@3.4.21) ast-walker-scope: 0.5.0 chokidar: 3.6.0 @@ -9196,15 +9233,15 @@ packages: mlly: 1.6.1 pathe: 1.1.2 scule: 1.3.0 - unplugin: 1.9.0 + unplugin: 1.10.0 vue-router: 4.3.0(vue@3.4.21) yaml: 2.4.1 transitivePeerDependencies: - rollup - vue - /unplugin@1.9.0: - resolution: {integrity: sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==} + /unplugin@1.10.0: + resolution: {integrity: sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==} engines: {node: '>=14.0.0'} dependencies: acorn: 8.11.3 @@ -9212,21 +9249,22 @@ packages: webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 - /unstorage@1.10.1(@planetscale/database@1.16.0): - resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} + /unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} peerDependencies: - '@azure/app-configuration': ^1.4.1 + '@azure/app-configuration': ^1.5.0 '@azure/cosmos': ^4.0.0 '@azure/data-tables': ^13.2.2 - '@azure/identity': ^3.3.2 - '@azure/keyvault-secrets': ^4.7.0 - '@azure/storage-blob': ^12.16.0 - '@capacitor/preferences': ^5.0.6 - '@netlify/blobs': ^6.2.0 - '@planetscale/database': ^1.11.0 - '@upstash/redis': ^1.23.4 - '@vercel/kv': ^0.2.3 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 idb-keyval: ^6.2.1 + ioredis: ^5.3.2 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -9252,13 +9290,13 @@ packages: optional: true idb-keyval: optional: true + ioredis: + optional: true dependencies: - '@planetscale/database': 1.16.0 anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 h3: 1.11.1 - ioredis: 5.3.2 listhen: 1.7.2 lru-cache: 10.2.0 mri: 1.2.0 @@ -9266,7 +9304,6 @@ packages: ofetch: 1.3.3 ufo: 1.4.0 transitivePeerDependencies: - - supports-color - uWebSockets.js /untun@0.1.3: @@ -9298,7 +9335,7 @@ packages: mlly: 1.6.1 pathe: 1.1.2 pkg-types: 1.0.3 - unplugin: 1.9.0 + unplugin: 1.10.0 /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} @@ -9319,9 +9356,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /valibot@0.30.0: resolution: {integrity: sha512-5POBdbSkM+3nvJ6ZlyQHsggisfRtyT4tVTo1EIIShs6qCdXJnyWU5TJ68vr8iTg5zpOLjXLRiBqNx+9zwZz/rA==} dev: false @@ -9365,7 +9399,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@1.3.1(@types/node@20.11.25): + /vite-node@1.3.1(@types/node@20.11.27): resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9374,7 +9408,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) transitivePeerDependencies: - '@types/node' - less @@ -9385,7 +9419,7 @@ packages: - supports-color - terser - /vite-plugin-checker@0.6.4(typescript@5.4.2)(vite@5.1.5)(vue-tsc@2.0.6): + /vite-plugin-checker@0.6.4(typescript@5.4.2)(vite@5.1.6)(vue-tsc@2.0.6): resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} engines: {node: '>=14.16'} peerDependencies: @@ -9428,14 +9462,14 @@ packages: strip-ansi: 6.0.1 tiny-invariant: 1.3.3 typescript: 5.4.2 - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 vue-tsc: 2.0.6(typescript@5.4.2) - /vite-plugin-inspect@0.8.3(@nuxt/kit@3.10.3)(vite@5.1.5): + /vite-plugin-inspect@0.8.3(@nuxt/kit@3.10.3)(vite@5.1.6): resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: @@ -9447,7 +9481,7 @@ packages: dependencies: '@antfu/utils': 0.7.7 '@nuxt/kit': 3.10.3 - '@rollup/pluginutils': 5.1.0(rollup@4.12.1) + '@rollup/pluginutils': 5.1.0(rollup@4.13.0) debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 @@ -9455,12 +9489,12 @@ packages: perfect-debounce: 1.0.0 picocolors: 1.0.0 sirv: 2.0.4 - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) transitivePeerDependencies: - rollup - supports-color - /vite-plugin-vue-inspector@4.0.2(vite@5.1.5): + /vite-plugin-vue-inspector@4.0.2(vite@5.1.6): resolution: {integrity: sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==} peerDependencies: vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 @@ -9474,12 +9508,12 @@ packages: '@vue/compiler-dom': 3.4.21 kolorist: 1.8.0 magic-string: 0.30.8 - vite: 5.1.5(@types/node@20.11.25) + vite: 5.1.6(@types/node@20.11.27) transitivePeerDependencies: - supports-color - /vite@5.1.5(@types/node@20.11.25): - resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + /vite@5.1.6(@types/node@20.11.27): + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9506,10 +9540,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.25 + '@types/node': 20.11.27 esbuild: 0.19.12 postcss: 8.4.35 - rollup: 4.12.1 + rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -9613,6 +9647,10 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -9755,10 +9793,6 @@ packages: engines: {node: '>= 4.0.0'} dev: false - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - /zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} diff --git a/src/server/crud/answer.ts b/src/server/crud/answer.ts index 21ff81a..77dda99 100644 --- a/src/server/crud/answer.ts +++ b/src/server/crud/answer.ts @@ -28,6 +28,7 @@ export async function createAnswer( ) { return await db.transaction(async (tx) => { await tx.insert(answers).values(value) + // @ts-expect-error return await getAnswerByMsgid(tx, value.msgid) }) } @@ -39,6 +40,7 @@ export async function createAnswers( return await db.transaction(async (tx) => { await tx.insert(answers).values(values) return await getAnswersByMsgids( + // @ts-expect-error tx, values.map((v) => v.msgid), ) diff --git a/src/server/crud/question.ts b/src/server/crud/question.ts index 5bdf2aa..413453b 100644 --- a/src/server/crud/question.ts +++ b/src/server/crud/question.ts @@ -55,6 +55,7 @@ export async function createQuestion( ) { return await db.transaction(async (tx) => { await tx.insert(questions).values(value) + // @ts-expect-error const question = await getQuestionByMsgid(tx, value.msgid) return question as NonNullable }) @@ -67,6 +68,7 @@ export async function createQuestions( return await db.transaction(async (tx) => { await tx.insert(questions).values(values) return await getQuestionsByMsgids( + // @ts-expect-error tx, values.map((v) => v.msgid), ) diff --git a/src/server/crud/section.ts b/src/server/crud/section.ts index 13eae5d..2845ac2 100644 --- a/src/server/crud/section.ts +++ b/src/server/crud/section.ts @@ -43,6 +43,8 @@ export async function createSection( ) { return await db.transaction(async (tx) => { await tx.insert(sections).values(value) + // @ts-expect-error: type of `tx` (transaction) not compatible with type of + // `db` (DatabaseClient), however they are functionally equivalent return await getSectionByMsgid(tx, value.msgid) }) } diff --git a/src/server/database/db.ts b/src/server/database/db.ts index 6fdcc66..2fafaa4 100644 --- a/src/server/database/db.ts +++ b/src/server/database/db.ts @@ -1,14 +1,19 @@ -import { Client } from '@planetscale/database' -import { drizzle } from 'drizzle-orm/planetscale-serverless' +import { createClient } from '@libsql/client' +import { drizzle } from 'drizzle-orm/libsql' import * as answers from './schema/answers' import * as distributions from './schema/distributions' import * as questions from './schema/questions' import * as results from './schema/results' import * as sections from './schema/sections' -export function getDb(url: string) { - const connection = new Client({ url }) - return drizzle(connection, { +interface Options { + url: string + authToken: string +} + +export function getDb(opts: Options) { + const client = createClient({ ...opts }) + return drizzle(client, { schema: { ...questions, ...answers, diff --git a/src/server/database/migrations/0000_famous_ultimo.sql b/src/server/database/migrations/0000_famous_ultimo.sql new file mode 100644 index 0000000..a4853f2 --- /dev/null +++ b/src/server/database/migrations/0000_famous_ultimo.sql @@ -0,0 +1,78 @@ +CREATE TABLE `answers` ( + `id` text(36) PRIMARY KEY NOT NULL, + `msgid` text(100) NOT NULL, + `media_source_path` text(256), + `question_id` text(36) NOT NULL, + FOREIGN KEY (`question_id`) REFERENCES `questions`(`id`) ON UPDATE cascade ON DELETE cascade +); + +--> statement-breakpoint +CREATE TABLE `_answers_blocked` ( + `answer_id` text(36) NOT NULL, + `blocked_by_answer_id` text(36) NOT NULL, + PRIMARY KEY(`answer_id`, `blocked_by_answer_id`), + FOREIGN KEY (`answer_id`) REFERENCES `answers`(`id`) ON UPDATE cascade ON DELETE cascade, + FOREIGN KEY (`blocked_by_answer_id`) REFERENCES `answers`(`id`) ON UPDATE cascade ON DELETE cascade +); + +--> statement-breakpoint +CREATE TABLE `distributions` ( + `id` text(36) PRIMARY KEY NOT NULL, + `name` text(200) NOT NULL, + `identifier` text(200) NOT NULL, + `fg_color` text(50), + `bg_color` text(50), + `logo` text(256), + `url` text(256) +); + +--> statement-breakpoint +CREATE TABLE `questions` ( + `id` text(36) PRIMARY KEY NOT NULL, + `msgid` text(100) NOT NULL, + `is_multiple_choice` integer DEFAULT false, + `is_media_question` integer DEFAULT false, + `additional_info` text(256), + `section_id` text(36) NOT NULL, + FOREIGN KEY (`section_id`) REFERENCES `sections`(`id`) ON UPDATE cascade ON DELETE cascade +); + +--> statement-breakpoint +CREATE TABLE `_important_answers` ( + `result_id` text(36) NOT NULL, + `important_answer_id` text(36) NOT NULL, + PRIMARY KEY(`important_answer_id`, `result_id`), + FOREIGN KEY (`result_id`) REFERENCES `results`(`id`) ON UPDATE cascade ON DELETE cascade, + FOREIGN KEY (`important_answer_id`) REFERENCES `answers`(`id`) ON UPDATE cascade ON DELETE cascade +); + +--> statement-breakpoint +CREATE TABLE `results` ( + `id` text(36) PRIMARY KEY NOT NULL, + `created_at` integer DEFAULT CURRENT_TIMESTAMP NOT NULL +); + +--> statement-breakpoint +CREATE TABLE `_selected_answers` ( + `result_id` text(36) NOT NULL, + `selected_answer_id` text(36) NOT NULL, + PRIMARY KEY(`result_id`, `selected_answer_id`), + FOREIGN KEY (`result_id`) REFERENCES `results`(`id`) ON UPDATE cascade ON DELETE cascade, + FOREIGN KEY (`selected_answer_id`) REFERENCES `answers`(`id`) ON UPDATE cascade ON DELETE cascade +); + +--> statement-breakpoint +CREATE TABLE `sections` ( + `id` text(36) PRIMARY KEY NOT NULL, + `msgid` text(100) NOT NULL, + `icon_name` text(100) NOT NULL +); + +--> statement-breakpoint +CREATE UNIQUE INDEX `answers_msgid_unique` ON `answers` (`msgid`); + +--> statement-breakpoint +CREATE UNIQUE INDEX `questions_msgid_unique` ON `questions` (`msgid`); + +--> statement-breakpoint +CREATE UNIQUE INDEX `sections_msgid_unique` ON `sections` (`msgid`); diff --git a/src/server/database/migrations/0000_naive_red_ghost.sql b/src/server/database/migrations/0000_naive_red_ghost.sql deleted file mode 100644 index 0670ba3..0000000 --- a/src/server/database/migrations/0000_naive_red_ghost.sql +++ /dev/null @@ -1,117 +0,0 @@ -CREATE TABLE `answers` ( - `id` char(36) NOT NULL, - `msgid` varchar(100) NOT NULL, - `media_source_path` varchar(256), - `question_id` char(36) NOT NULL, - CONSTRAINT `answers_id` PRIMARY KEY(`id`), - CONSTRAINT `answers_msgid_unique` UNIQUE(`msgid`) -); - ---> statement-breakpoint -CREATE TABLE `_answers_blocked` ( - `answer_id` char(36) NOT NULL, - `blocked_by_answer_id` char(36) NOT NULL, - CONSTRAINT `_answers_blocked_blocked_by_answer_id_answer_id_pk` PRIMARY KEY(`blocked_by_answer_id`, `answer_id`) -); - ---> statement-breakpoint -CREATE TABLE `distributions` ( - `id` char(36) NOT NULL, - `name` varchar(200) NOT NULL, - `identifier` varchar(200) NOT NULL, - `fg_color` varchar(50), - `bg_color` varchar(50), - `logo` varchar(256), - `url` varchar(256), - CONSTRAINT `distributions_id` PRIMARY KEY(`id`) -); - ---> statement-breakpoint -CREATE TABLE `questions` ( - `id` char(36) NOT NULL, - `msgid` varchar(100) NOT NULL, - `is_multiple_choice` boolean DEFAULT false, - `is_media_question` boolean DEFAULT false, - `additional_info` varchar(256), - `section_id` char(36) NOT NULL, - CONSTRAINT `questions_id` PRIMARY KEY(`id`), - CONSTRAINT `questions_msgid_unique` UNIQUE(`msgid`) -); - ---> statement-breakpoint -CREATE TABLE `_important_answers` ( - `result_id` char(36) NOT NULL, - `important_answer_id` char(36) NOT NULL, - CONSTRAINT `_important_answers_result_id_important_answer_id_pk` PRIMARY KEY(`result_id`, `important_answer_id`) -); - ---> statement-breakpoint -CREATE TABLE `results` ( - `id` char(36) NOT NULL, - `created_at` timestamp NOT NULL DEFAULT (now()), - CONSTRAINT `results_id` PRIMARY KEY(`id`) -); - ---> statement-breakpoint -CREATE TABLE `_selected_answers` ( - `result_id` char(36) NOT NULL, - `selected_answer_id` char(36) NOT NULL, - CONSTRAINT `_selected_answers_result_id_selected_answer_id_pk` PRIMARY KEY(`result_id`, `selected_answer_id`) -); - ---> statement-breakpoint -CREATE TABLE `sections` ( - `id` char(36) NOT NULL, - `msgid` varchar(100) NOT NULL, - `icon_name` varchar(100) NOT NULL, - CONSTRAINT `sections_id` PRIMARY KEY(`id`), - CONSTRAINT `sections_msgid_unique` UNIQUE(`msgid`) -); - ---> statement-breakpoint -ALTER TABLE - `answers` -ADD - CONSTRAINT `answers_question_id_questions_id_fk` FOREIGN KEY (`question_id`) REFERENCES `questions`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_answers_blocked` -ADD - CONSTRAINT `_answers_blocked_answer_id_answers_id_fk` FOREIGN KEY (`answer_id`) REFERENCES `answers`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_answers_blocked` -ADD - CONSTRAINT `_answers_blocked_blocked_by_answer_id_answers_id_fk` FOREIGN KEY (`blocked_by_answer_id`) REFERENCES `answers`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `questions` -ADD - CONSTRAINT `questions_section_id_sections_id_fk` FOREIGN KEY (`section_id`) REFERENCES `sections`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_important_answers` -ADD - CONSTRAINT `_important_answers_result_id_results_id_fk` FOREIGN KEY (`result_id`) REFERENCES `results`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_important_answers` -ADD - CONSTRAINT `_important_answers_important_answer_id_answers_id_fk` FOREIGN KEY (`important_answer_id`) REFERENCES `answers`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_selected_answers` -ADD - CONSTRAINT `_selected_answers_result_id_results_id_fk` FOREIGN KEY (`result_id`) REFERENCES `results`(`id`) ON DELETE cascade ON UPDATE cascade; - ---> statement-breakpoint -ALTER TABLE - `_selected_answers` -ADD - CONSTRAINT `_selected_answers_selected_answer_id_answers_id_fk` FOREIGN KEY (`selected_answer_id`) REFERENCES `answers`(`id`) ON DELETE cascade ON UPDATE cascade; diff --git a/src/server/database/migrations/meta/0000_snapshot.json b/src/server/database/migrations/meta/0000_snapshot.json index e714c96..23ba40b 100644 --- a/src/server/database/migrations/meta/0000_snapshot.json +++ b/src/server/database/migrations/meta/0000_snapshot.json @@ -1,7 +1,7 @@ { "version": "5", - "dialect": "mysql", - "id": "1b711a21-ad84-429f-a9cd-676008d3f050", + "dialect": "sqlite", + "id": "ff568414-a117-4f18-b1d3-179afb40c023", "prevId": "00000000-0000-0000-0000-000000000000", "tables": { "answers": { @@ -9,34 +9,40 @@ "columns": { "id": { "name": "id", - "type": "char(36)", - "primaryKey": false, + "type": "text(36)", + "primaryKey": true, "notNull": true, "autoincrement": false }, "msgid": { "name": "msgid", - "type": "varchar(100)", + "type": "text(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "media_source_path": { "name": "media_source_path", - "type": "varchar(256)", + "type": "text(256)", "primaryKey": false, "notNull": false, "autoincrement": false }, "question_id": { "name": "question_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false } }, - "indexes": {}, + "indexes": { + "answers_msgid_unique": { + "name": "answers_msgid_unique", + "columns": ["msgid"], + "isUnique": true + } + }, "foreignKeys": { "answers_question_id_questions_id_fk": { "name": "answers_question_id_questions_id_fk", @@ -48,32 +54,22 @@ "onUpdate": "cascade" } }, - "compositePrimaryKeys": { - "answers_id": { - "name": "answers_id", - "columns": ["id"] - } - }, - "uniqueConstraints": { - "answers_msgid_unique": { - "name": "answers_msgid_unique", - "columns": ["msgid"] - } - } + "compositePrimaryKeys": {}, + "uniqueConstraints": {} }, "_answers_blocked": { "name": "_answers_blocked", "columns": { "answer_id": { "name": "answer_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "blocked_by_answer_id": { "name": "blocked_by_answer_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false @@ -102,8 +98,8 @@ }, "compositePrimaryKeys": { "_answers_blocked_blocked_by_answer_id_answer_id_pk": { - "name": "_answers_blocked_blocked_by_answer_id_answer_id_pk", - "columns": ["blocked_by_answer_id", "answer_id"] + "columns": ["answer_id", "blocked_by_answer_id"], + "name": "_answers_blocked_blocked_by_answer_id_answer_id_pk" } }, "uniqueConstraints": {} @@ -113,49 +109,49 @@ "columns": { "id": { "name": "id", - "type": "char(36)", - "primaryKey": false, + "type": "text(36)", + "primaryKey": true, "notNull": true, "autoincrement": false }, "name": { "name": "name", - "type": "varchar(200)", + "type": "text(200)", "primaryKey": false, "notNull": true, "autoincrement": false }, "identifier": { "name": "identifier", - "type": "varchar(200)", + "type": "text(200)", "primaryKey": false, "notNull": true, "autoincrement": false }, "fg_color": { "name": "fg_color", - "type": "varchar(50)", + "type": "text(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "bg_color": { "name": "bg_color", - "type": "varchar(50)", + "type": "text(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "logo": { "name": "logo", - "type": "varchar(256)", + "type": "text(256)", "primaryKey": false, "notNull": false, "autoincrement": false }, "url": { "name": "url", - "type": "varchar(256)", + "type": "text(256)", "primaryKey": false, "notNull": false, "autoincrement": false @@ -163,12 +159,7 @@ }, "indexes": {}, "foreignKeys": {}, - "compositePrimaryKeys": { - "distributions_id": { - "name": "distributions_id", - "columns": ["id"] - } - }, + "compositePrimaryKeys": {}, "uniqueConstraints": {} }, "questions": { @@ -176,21 +167,21 @@ "columns": { "id": { "name": "id", - "type": "char(36)", - "primaryKey": false, + "type": "text(36)", + "primaryKey": true, "notNull": true, "autoincrement": false }, "msgid": { "name": "msgid", - "type": "varchar(100)", + "type": "text(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "is_multiple_choice": { "name": "is_multiple_choice", - "type": "boolean", + "type": "integer", "primaryKey": false, "notNull": false, "autoincrement": false, @@ -198,7 +189,7 @@ }, "is_media_question": { "name": "is_media_question", - "type": "boolean", + "type": "integer", "primaryKey": false, "notNull": false, "autoincrement": false, @@ -206,20 +197,26 @@ }, "additional_info": { "name": "additional_info", - "type": "varchar(256)", + "type": "text(256)", "primaryKey": false, "notNull": false, "autoincrement": false }, "section_id": { "name": "section_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false } }, - "indexes": {}, + "indexes": { + "questions_msgid_unique": { + "name": "questions_msgid_unique", + "columns": ["msgid"], + "isUnique": true + } + }, "foreignKeys": { "questions_section_id_sections_id_fk": { "name": "questions_section_id_sections_id_fk", @@ -231,32 +228,22 @@ "onUpdate": "cascade" } }, - "compositePrimaryKeys": { - "questions_id": { - "name": "questions_id", - "columns": ["id"] - } - }, - "uniqueConstraints": { - "questions_msgid_unique": { - "name": "questions_msgid_unique", - "columns": ["msgid"] - } - } + "compositePrimaryKeys": {}, + "uniqueConstraints": {} }, "_important_answers": { "name": "_important_answers", "columns": { "result_id": { "name": "result_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "important_answer_id": { "name": "important_answer_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false @@ -285,8 +272,8 @@ }, "compositePrimaryKeys": { "_important_answers_result_id_important_answer_id_pk": { - "name": "_important_answers_result_id_important_answer_id_pk", - "columns": ["result_id", "important_answer_id"] + "columns": ["important_answer_id", "result_id"], + "name": "_important_answers_result_id_important_answer_id_pk" } }, "uniqueConstraints": {} @@ -296,28 +283,23 @@ "columns": { "id": { "name": "id", - "type": "char(36)", - "primaryKey": false, + "type": "text(36)", + "primaryKey": true, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", - "type": "timestamp", + "type": "integer", "primaryKey": false, "notNull": true, "autoincrement": false, - "default": "(now())" + "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, - "compositePrimaryKeys": { - "results_id": { - "name": "results_id", - "columns": ["id"] - } - }, + "compositePrimaryKeys": {}, "uniqueConstraints": {} }, "_selected_answers": { @@ -325,14 +307,14 @@ "columns": { "result_id": { "name": "result_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "selected_answer_id": { "name": "selected_answer_id", - "type": "char(36)", + "type": "text(36)", "primaryKey": false, "notNull": true, "autoincrement": false @@ -361,8 +343,8 @@ }, "compositePrimaryKeys": { "_selected_answers_result_id_selected_answer_id_pk": { - "name": "_selected_answers_result_id_selected_answer_id_pk", - "columns": ["result_id", "selected_answer_id"] + "columns": ["result_id", "selected_answer_id"], + "name": "_selected_answers_result_id_selected_answer_id_pk" } }, "uniqueConstraints": {} @@ -372,43 +354,39 @@ "columns": { "id": { "name": "id", - "type": "char(36)", - "primaryKey": false, + "type": "text(36)", + "primaryKey": true, "notNull": true, "autoincrement": false }, "msgid": { "name": "msgid", - "type": "varchar(100)", + "type": "text(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "icon_name": { "name": "icon_name", - "type": "varchar(100)", + "type": "text(100)", "primaryKey": false, "notNull": true, "autoincrement": false } }, - "indexes": {}, - "foreignKeys": {}, - "compositePrimaryKeys": { - "sections_id": { - "name": "sections_id", - "columns": ["id"] - } - }, - "uniqueConstraints": { + "indexes": { "sections_msgid_unique": { "name": "sections_msgid_unique", - "columns": ["msgid"] + "columns": ["msgid"], + "isUnique": true } - } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} } }, - "schemas": {}, + "enums": {}, "_meta": { "schemas": {}, "tables": {}, diff --git a/src/server/database/migrations/meta/_journal.json b/src/server/database/migrations/meta/_journal.json index 43f0700..1f9156c 100644 --- a/src/server/database/migrations/meta/_journal.json +++ b/src/server/database/migrations/meta/_journal.json @@ -1,12 +1,12 @@ { "version": "5", - "dialect": "mysql", + "dialect": "sqlite", "entries": [ { "idx": 0, "version": "5", - "when": 1707229914556, - "tag": "0000_naive_red_ghost", + "when": 1710503533816, + "tag": "0000_famous_ultimo", "breakpoints": true } ] diff --git a/src/server/database/schema/answers.ts b/src/server/database/schema/answers.ts index 7cc6308..3934c30 100644 --- a/src/server/database/schema/answers.ts +++ b/src/server/database/schema/answers.ts @@ -1,21 +1,15 @@ import { relations } from 'drizzle-orm' -import { - char, - index, - mysqlTable, - primaryKey, - varchar, -} from 'drizzle-orm/mysql-core' +import { index, primaryKey, sqliteTable, text } from 'drizzle-orm/sqlite-core' import { questions } from './questions' -export const answers = mysqlTable('answers', { - id: char('id', { length: 36 }) +export const answers = sqliteTable('answers', { + id: text('id', { length: 36 }) .$defaultFn(() => crypto.randomUUID()) .primaryKey() .notNull(), - msgid: varchar('msgid', { length: 100 }).unique().notNull(), - mediaSourcePath: varchar('media_source_path', { length: 256 }), - questionId: char('question_id', { length: 36 }) + msgid: text('msgid', { length: 100 }).unique().notNull(), + mediaSourcePath: text('media_source_path', { length: 256 }), + questionId: text('question_id', { length: 36 }) .notNull() .references(() => questions.id, { onDelete: 'cascade', @@ -32,16 +26,16 @@ export const answerRelations = relations(answers, ({ one, many }) => ({ blocks: many(answersBlocked, { relationName: 'blocks' }), })) -export const answersBlocked = mysqlTable( +export const answersBlocked = sqliteTable( '_answers_blocked', { - answerId: char('answer_id', { length: 36 }) + answerId: text('answer_id', { length: 36 }) .references(() => answers.id, { onDelete: 'cascade', onUpdate: 'cascade', }) .notNull(), - blockedByAnswerId: char('blocked_by_answer_id', { length: 36 }) + blockedByAnswerId: text('blocked_by_answer_id', { length: 36 }) .references(() => answers.id, { onDelete: 'cascade', onUpdate: 'cascade', diff --git a/src/server/database/schema/distributions.ts b/src/server/database/schema/distributions.ts index 3d176c2..965c885 100644 --- a/src/server/database/schema/distributions.ts +++ b/src/server/database/schema/distributions.ts @@ -1,13 +1,13 @@ -import { char, mysqlTable, varchar } from 'drizzle-orm/mysql-core' +import { sqliteTable, text } from 'drizzle-orm/sqlite-core' -export const distributions = mysqlTable('distributions', { - id: char('id', { length: 36 }) +export const distributions = sqliteTable('distributions', { + id: text('id', { length: 36 }) .$defaultFn(() => crypto.randomUUID()) .primaryKey(), - name: varchar('name', { length: 200 }).notNull(), - identifier: varchar('identifier', { length: 200 }).notNull(), - fgColor: varchar('fg_color', { length: 50 }), - bgColor: varchar('bg_color', { length: 50 }), - logo: varchar('logo', { length: 256 }), - url: varchar('url', { length: 256 }), + name: text('name', { length: 200 }).notNull(), + identifier: text('identifier', { length: 200 }).notNull(), + fgColor: text('fg_color', { length: 50 }), + bgColor: text('bg_color', { length: 50 }), + logo: text('logo', { length: 256 }), + url: text('url', { length: 256 }), }) diff --git a/src/server/database/schema/questions.ts b/src/server/database/schema/questions.ts index a6e68cf..5e34896 100644 --- a/src/server/database/schema/questions.ts +++ b/src/server/database/schema/questions.ts @@ -1,24 +1,22 @@ import { relations } from 'drizzle-orm' -import { - boolean, - char, - index, - mysqlTable, - varchar, -} from 'drizzle-orm/mysql-core' +import { index, integer, sqliteTable, text } from 'drizzle-orm/sqlite-core' import { answers } from './answers' import { sections } from './sections' -export const questions = mysqlTable('questions', { - id: char('id', { length: 36 }) +export const questions = sqliteTable('questions', { + id: text('id', { length: 36 }) .$defaultFn(() => crypto.randomUUID()) .primaryKey() .notNull(), - msgid: varchar('msgid', { length: 100 }).unique().notNull(), - isMultipleChoice: boolean('is_multiple_choice').default(false), - isMediaQuestion: boolean('is_media_question').default(false), - additionalInfo: varchar('additional_info', { length: 256 }), - sectionId: char('section_id', { length: 36 }) + msgid: text('msgid', { length: 100 }).unique().notNull(), + isMultipleChoice: integer('is_multiple_choice', { mode: 'boolean' }).default( + false, + ), + isMediaQuestion: integer('is_media_question', { mode: 'boolean' }).default( + false, + ), + additionalInfo: text('additional_info', { length: 256 }), + sectionId: text('section_id', { length: 36 }) .notNull() .references(() => sections.id, { onDelete: 'cascade', diff --git a/src/server/database/schema/results.ts b/src/server/database/schema/results.ts index 9a37433..3644d7c 100644 --- a/src/server/database/schema/results.ts +++ b/src/server/database/schema/results.ts @@ -1,24 +1,26 @@ -import { relations } from 'drizzle-orm' -import { char, mysqlTable, primaryKey, timestamp } from 'drizzle-orm/mysql-core' +import { relations, sql } from 'drizzle-orm' +import { integer, primaryKey, sqliteTable, text } from 'drizzle-orm/sqlite-core' import { answers } from './answers' -export const results = mysqlTable('results', { - id: char('id', { length: 36 }) +export const results = sqliteTable('results', { + id: text('id', { length: 36 }) .$defaultFn(() => crypto.randomUUID()) .primaryKey(), - createdAt: timestamp('created_at', { mode: 'date' }).defaultNow().notNull(), + createdAt: integer('created_at', { mode: 'timestamp' }) + .default(sql`CURRENT_TIMESTAMP`) + .notNull(), }) -export const selectedAnswers = mysqlTable( +export const selectedAnswers = sqliteTable( '_selected_answers', { - resultId: char('result_id', { length: 36 }) + resultId: text('result_id', { length: 36 }) .references(() => results.id, { onDelete: 'cascade', onUpdate: 'cascade', }) .notNull(), - selectedAnswerId: char('selected_answer_id', { length: 36 }) + selectedAnswerId: text('selected_answer_id', { length: 36 }) .references(() => answers.id, { onDelete: 'cascade', onUpdate: 'cascade', @@ -31,16 +33,16 @@ export const selectedAnswers = mysqlTable( }), ) -export const importantAnswers = mysqlTable( +export const importantAnswers = sqliteTable( '_important_answers', { - resultId: char('result_id', { length: 36 }) + resultId: text('result_id', { length: 36 }) .references(() => results.id, { onDelete: 'cascade', onUpdate: 'cascade', }) .notNull(), - importantAnswerId: char('important_answer_id', { length: 36 }) + importantAnswerId: text('important_answer_id', { length: 36 }) .references(() => answers.id, { onDelete: 'cascade', onUpdate: 'cascade', diff --git a/src/server/database/schema/sections.ts b/src/server/database/schema/sections.ts index d0e8003..6197e4e 100644 --- a/src/server/database/schema/sections.ts +++ b/src/server/database/schema/sections.ts @@ -1,13 +1,13 @@ import { relations } from 'drizzle-orm' -import { char, mysqlTable, varchar } from 'drizzle-orm/mysql-core' +import { sqliteTable, text } from 'drizzle-orm/sqlite-core' import { questions } from './questions' -export const sections = mysqlTable('sections', { - id: char('id', { length: 36 }) +export const sections = sqliteTable('sections', { + id: text('id', { length: 36 }) .$defaultFn(() => crypto.randomUUID()) .primaryKey(), - msgid: varchar('msgid', { length: 100 }).unique().notNull(), - iconName: varchar('icon_name', { length: 100 }).notNull(), + msgid: text('msgid', { length: 100 }).unique().notNull(), + iconName: text('icon_name', { length: 100 }).notNull(), }) export const sectionsRelations = relations(sections, ({ one }) => ({ diff --git a/src/server/database/seed.ts b/src/server/database/seed.ts index 8f30a75..035787f 100644 --- a/src/server/database/seed.ts +++ b/src/server/database/seed.ts @@ -1,4 +1,4 @@ -import { sql } from 'drizzle-orm' +import 'dotenv/config' import { groupBy, mapValues } from 'lodash-es' import * as answer from '~/server/crud/answer' import * as question from '~/server/crud/question' @@ -11,18 +11,16 @@ import sectionData from '~~/seed-data/sections.json' async function main() { const databaseUrl = process.env.DATABASE_URL - if (!databaseUrl) { - throw Error('database URL not found') + const authToken = process.env.TURSO_AUTH_TOKEN + if (!databaseUrl || !authToken) { + throw Error('database URL or Auth token not found') } - const db = getDb(databaseUrl) + const db = getDb({ authToken, url: databaseUrl }) // create the distros await Promise.all( distros.map(async (distro) => - db - .insert(distributions) - .values({ ...distro }) - .onDuplicateKeyUpdate({ set: { id: sql`id` } }), + db.insert(distributions).values({ ...distro }), ), ) @@ -36,12 +34,14 @@ async function main() { questionData.map(async ({ question: q, answers: ans }, ix) => { return db.transaction(async (tx) => { const id = createdSections[ix]?.id + // @ts-expect-error const createdQuestion = await question.createQuestion(tx, { ...q, sectionId: id as NonNullable, }) // create answers related to question `q` await answer.createAnswers( + // @ts-expect-error tx, ans.map((a) => ({ questionId: createdQuestion?.id, ...a })), ) @@ -75,4 +75,7 @@ async function main() { ) } -await main() +main().catch((e) => { + console.error(e) + process.exit(1) +}) diff --git a/src/server/middleware/0.db.ts b/src/server/middleware/0.db.ts index cedafa9..0d0e348 100644 --- a/src/server/middleware/0.db.ts +++ b/src/server/middleware/0.db.ts @@ -10,8 +10,10 @@ declare module 'h3' { export default defineEventHandler((event) => { const config = useRuntimeConfig(event) + const databaseUrl = config.databaseUrl + const authToken = config.turso.authToken if (!db) { - db = getDb(config.databaseUrl) + db = getDb({ url: databaseUrl, authToken }) } event.context.db = db })