diff --git a/docs/content/docs/2.storage/1.database.md b/docs/content/docs/2.storage/1.database.md index 7c5de9f5..182d3ea2 100644 --- a/docs/content/docs/2.storage/1.database.md +++ b/docs/content/docs/2.storage/1.database.md @@ -214,3 +214,11 @@ The methods [`.all()`](#all) and [`.batch()`](#batch) return an object that cont ::callout Read more on [Cloudflare D1 documentation](https://developers.cloudflare.com/d1/build-databases/query-databases/). :: + +## Nuxt Devtools + +You can use the Nuxt Devtools to inspect the database and run queries, powered by [Drizzle Studio](https://orm.drizzle.team/drizzle-studio/overview). + +Open the Nuxt Devtools and navigate to the Hub Database. + +![Nuxt Devtools - Hub Database](/nuxthub-devtools-database.png){.rounded} diff --git a/docs/public/nuxthub-devtools-database.png b/docs/public/nuxthub-devtools-database.png new file mode 100644 index 00000000..c46d9512 Binary files /dev/null and b/docs/public/nuxthub-devtools-database.png differ diff --git a/package.json b/package.json index c55d3b8b..dd839cf2 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ }, "dependencies": { "@cloudflare/workers-types": "^4.20240320.1", + "@nuxt/devtools-kit": "^1.1.3", "@nuxt/kit": "^3.11.1", "@sindresorhus/slugify": "^2.2.1", "@uploadthing/mime-types": "^0.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50d257ac..9298465e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@cloudflare/workers-types': specifier: ^4.20240320.1 version: 4.20240320.1 + '@nuxt/devtools-kit': + specifier: ^1.1.3 + version: 1.1.3(nuxt@3.11.1)(vite@5.1.6) '@nuxt/kit': specifier: ^3.11.1 version: 3.11.1 @@ -782,7 +785,6 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true - dev: true optional: true /@esbuild/android-arm64@0.17.19: @@ -815,7 +817,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm@0.17.19: @@ -848,7 +849,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64@0.17.19: @@ -881,7 +881,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64@0.17.19: @@ -914,7 +913,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64@0.17.19: @@ -947,7 +945,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64@0.17.19: @@ -980,7 +977,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64@0.17.19: @@ -1013,7 +1009,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64@0.17.19: @@ -1046,7 +1041,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm@0.17.19: @@ -1079,7 +1073,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32@0.17.19: @@ -1112,7 +1105,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.17.19: @@ -1145,7 +1137,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el@0.17.19: @@ -1178,7 +1169,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64@0.17.19: @@ -1211,7 +1201,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64@0.17.19: @@ -1244,7 +1233,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x@0.17.19: @@ -1277,7 +1265,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64@0.17.19: @@ -1310,7 +1297,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64@0.17.19: @@ -1343,7 +1329,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64@0.17.19: @@ -1376,7 +1361,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64@0.17.19: @@ -1409,7 +1393,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64@0.17.19: @@ -1442,7 +1425,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32@0.17.19: @@ -1475,7 +1457,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64@0.17.19: @@ -1508,7 +1489,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): @@ -1991,7 +1971,22 @@ packages: transitivePeerDependencies: - rollup - supports-color - dev: true + + /@nuxt/devtools-kit@1.1.3(nuxt@3.11.1)(vite@5.1.6): + resolution: {integrity: sha512-bVIGng74haYAvJXiV+xtk7xrpHPZOJtcV4Flgl9IM+PYSjqs5pIRFRDnDwCQYAGt99hxGtQkdTBRqPQLxVCmeA==} + peerDependencies: + nuxt: ^3.9.0 + vite: '*' + dependencies: + '@nuxt/kit': 3.11.1 + '@nuxt/schema': 3.11.1 + execa: 7.2.0 + nuxt: 3.11.1(@types/node@20.11.30)(eslint@8.57.0)(typescript@5.4.3)(vite@5.1.6) + vite: 5.1.6(@types/node@20.11.30) + transitivePeerDependencies: + - rollup + - supports-color + dev: false /@nuxt/devtools-ui-kit@1.0.8(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.21)(nuxt@3.10.3)(postcss@8.4.36)(vite@5.1.6)(vue@3.4.21)(webpack@5.90.3): resolution: {integrity: sha512-oPkyQ+nkvCvveWxHWAHpZt9uEycHFD00Rh46KYKe5KLl81Wr/L3KacIIYpiocPog0YZZhjvX5CmrIe8zXopNOA==} @@ -2069,7 +2064,7 @@ packages: '@antfu/utils': 0.7.7 '@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 + '@nuxt/kit': 3.11.1 birpc: 0.2.17 consola: 3.2.3 destr: 2.0.3 @@ -2084,7 +2079,7 @@ packages: launch-editor: 2.6.1 local-pkg: 0.5.0 magicast: 0.3.3 - nuxt: 3.10.3(@types/node@20.11.30)(drizzle-orm@0.30.4)(eslint@8.57.0)(typescript@5.4.3)(vite@5.1.6) + nuxt: 3.10.3(@types/node@20.11.30)(eslint@8.57.0)(typescript@5.4.3)(vite@5.1.6) nypm: 0.3.8 ohash: 1.1.3 pacote: 17.0.6 @@ -2096,9 +2091,9 @@ packages: semver: 7.6.0 simple-git: 3.22.0 sirv: 2.0.4 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) vite: 5.1.6(@types/node@20.11.30) - vite-plugin-inspect: 0.8.3(@nuxt/kit@3.10.3)(vite@5.1.6) + vite-plugin-inspect: 0.8.3(@nuxt/kit@3.11.1)(vite@5.1.6) vite-plugin-vue-inspector: 4.0.2(vite@5.1.6) which: 3.0.1 ws: 8.16.0 @@ -2119,7 +2114,7 @@ packages: '@antfu/utils': 0.7.7 '@nuxt/devtools-kit': 1.0.8(nuxt@3.11.1)(vite@5.1.6) '@nuxt/devtools-wizard': 1.0.8 - '@nuxt/kit': 3.10.3 + '@nuxt/kit': 3.11.1 birpc: 0.2.17 consola: 3.2.3 destr: 2.0.3 @@ -2146,9 +2141,9 @@ packages: semver: 7.6.0 simple-git: 3.22.0 sirv: 2.0.4 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) vite: 5.1.6(@types/node@20.11.30) - vite-plugin-inspect: 0.8.3(@nuxt/kit@3.10.3)(vite@5.1.6) + vite-plugin-inspect: 0.8.3(@nuxt/kit@3.11.1)(vite@5.1.6) vite-plugin-vue-inspector: 4.0.2(vite@5.1.6) which: 3.0.1 ws: 8.16.0 @@ -2158,7 +2153,6 @@ packages: - rollup - supports-color - utf-8-validate - dev: true /@nuxt/eslint-config@0.2.0(eslint@8.57.0): resolution: {integrity: sha512-NeJX8TLcnNAjQFiDs3XhP+9CHKK8jaKsP7eUyCSrQdgY7nqWe7VJx64lwzx5FTT4cW3RHMEyH+Y0qzLGYYoa/A==} @@ -2235,7 +2229,7 @@ packages: semver: 7.6.0 ufo: 1.5.3 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2261,7 +2255,7 @@ packages: semver: 7.6.0 ufo: 1.5.3 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2288,7 +2282,7 @@ packages: semver: 7.6.0 ufo: 1.5.3 unctx: 2.3.1 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2307,7 +2301,7 @@ packages: scule: 1.3.0 std-env: 3.7.0 ufo: 1.5.3 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2326,7 +2320,7 @@ packages: scule: 1.3.0 std-env: 3.7.0 ufo: 1.5.3 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2346,7 +2340,7 @@ packages: scule: 1.3.0 std-env: 3.7.0 ufo: 1.5.3 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) untyped: 1.4.2 transitivePeerDependencies: - rollup @@ -2544,7 +2538,7 @@ packages: vue: ^3.3.4 dependencies: '@nuxt/kit': 3.10.3 - '@rollup/plugin-replace': 5.0.5(rollup@4.13.0) + '@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) autoprefixer: 10.4.18(postcss@8.4.35) @@ -2567,7 +2561,7 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 postcss: 8.4.35 - rollup-plugin-visualizer: 5.12.0(rollup@4.13.0) + rollup-plugin-visualizer: 5.12.0(rollup@4.12.1) std-env: 3.7.0 strip-literal: 2.0.0 ufo: 1.5.3 @@ -2605,7 +2599,7 @@ packages: vue: ^3.3.4 dependencies: '@nuxt/kit': 3.11.1 - '@rollup/plugin-replace': 5.0.5(rollup@4.13.0) + '@rollup/plugin-replace': 5.0.5(rollup@4.12.1) '@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.36) @@ -2628,7 +2622,7 @@ packages: perfect-debounce: 1.0.0 pkg-types: 1.0.3 postcss: 8.4.36 - rollup-plugin-visualizer: 5.12.0(rollup@4.13.0) + rollup-plugin-visualizer: 5.12.0(rollup@4.12.1) std-env: 3.7.0 strip-literal: 2.0.0 ufo: 1.5.3 @@ -2658,7 +2652,6 @@ packages: - vls - vti - vue-tsc - dev: true /@nuxthq/studio@1.0.13: resolution: {integrity: sha512-C4j+K53om5Kj5xLrehWEbnDJlid5tDsHP7QdOIsK550dHOxPmvaXMH4YxsSNU8cDppMheMbN59zdYhQaQfko6g==} @@ -3064,7 +3057,6 @@ packages: dependencies: rollup: 4.13.0 slash: 4.0.0 - dev: true /@rollup/plugin-commonjs@25.0.7(rollup@4.12.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} @@ -3099,7 +3091,6 @@ packages: is-reference: 1.2.1 magic-string: 0.30.8 rollup: 4.13.0 - dev: true /@rollup/plugin-inject@5.0.5(rollup@4.12.1): resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} @@ -3128,7 +3119,6 @@ packages: estree-walker: 2.0.2 magic-string: 0.30.8 rollup: 4.13.0 - dev: true /@rollup/plugin-json@6.1.0(rollup@4.12.1): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} @@ -3153,7 +3143,6 @@ packages: dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.13.0) rollup: 4.13.0 - dev: true /@rollup/plugin-node-resolve@15.2.3(rollup@4.12.1): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} @@ -3188,7 +3177,6 @@ packages: is-module: 1.0.0 resolve: 1.22.8 rollup: 4.13.0 - dev: true /@rollup/plugin-replace@5.0.5(rollup@4.12.1): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} @@ -3243,7 +3231,6 @@ packages: serialize-javascript: 6.0.2 smob: 1.4.1 terser: 5.29.1 - dev: true /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -3882,7 +3869,6 @@ packages: dependencies: '@unhead/schema': 1.8.20 '@unhead/shared': 1.8.20 - dev: true /@unhead/schema@1.8.11: resolution: {integrity: sha512-Aok9sZcVznJxjBRF/v2LKaeoqgYU/9kuyknYhf3M13byrdp3dLD6qcUvnLC98PrPVy7CMfOov4kXHoI/DRY5MQ==} @@ -3895,7 +3881,6 @@ packages: dependencies: hookable: 5.5.3 zhead: 2.2.4 - dev: true /@unhead/shared@1.8.11: resolution: {integrity: sha512-Mz3pAJUq160mPXYFNUalfyEDQ0a6eRIbMlJFQ7HNy8shM+4kbeKgInoaa2EaFF8zRrhYvuLJZhyLk5kFINSmBg==} @@ -3906,7 +3891,6 @@ packages: resolution: {integrity: sha512-J0fdtavcMtXcG0g9jmVW03toqfr8A0G7k+Q6jdpwuUPhWk/vhfZn3aiRV+F8LlU91c/AbGWDv8T1MrtMQbb0Sg==} dependencies: '@unhead/schema': 1.8.20 - dev: true /@unhead/ssr@1.8.11: resolution: {integrity: sha512-5LI+uzcNu2FQp2IOoRQSaWWPDBQNXIuOvcZfxUDKzj0GMdqHRaugPdf44Jje7SmG7RsPhOR9DHKDtuCJ65zcaw==} @@ -3919,7 +3903,6 @@ packages: dependencies: '@unhead/schema': 1.8.20 '@unhead/shared': 1.8.20 - dev: true /@unhead/vue@1.8.11(vue@3.4.21): resolution: {integrity: sha512-yEpQaBYQsqld3m6lexMP+Vf0+j2UdY/QIO98b7v2XBm200ruZmRvI4IJDMrI8cODVwSnwQWHDLF2upXlNeQ4Qg==} @@ -3942,7 +3925,6 @@ packages: hookable: 5.5.3 unhead: 1.8.20 vue: 3.4.21(typescript@5.4.3) - dev: true /@unocss/astro@0.58.5(vite@5.1.6): resolution: {integrity: sha512-LtuVnj8oFAK9663OVhQO8KpdJFiOyyPsYfnOZlDCOFK3gHb/2WMrzdBwr1w8LoQF3bDedkFMKirVF7gWjyZiaw==} @@ -3966,7 +3948,7 @@ packages: hasBin: true dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) '@unocss/config': 0.58.5 '@unocss/core': 0.58.5 '@unocss/preset-uno': 0.58.5 @@ -4169,7 +4151,7 @@ packages: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) '@unocss/config': 0.58.5 '@unocss/core': 0.58.5 '@unocss/inspector': 0.58.5 @@ -4189,7 +4171,7 @@ packages: webpack: ^4 || ^5 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) '@unocss/config': 0.58.5 '@unocss/core': 0.58.5 chokidar: 3.6.0 @@ -4256,7 +4238,6 @@ packages: vue: 3.4.21(typescript@5.4.3) transitivePeerDependencies: - supports-color - dev: true /@vitejs/plugin-vue@5.0.4(vite@5.1.5)(vue@3.4.21): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} @@ -4277,7 +4258,6 @@ packages: dependencies: vite: 5.1.6(@types/node@20.11.30) vue: 3.4.21(typescript@5.4.3) - dev: true /@vitest/expect@1.4.0: resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} @@ -4347,7 +4327,7 @@ packages: optional: true dependencies: '@babel/types': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) '@vue/compiler-sfc': 3.4.21 ast-kit: 0.11.3 local-pkg: 0.5.0 @@ -4852,7 +4832,6 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: true /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -5008,7 +4987,6 @@ packages: lodash: 4.17.21 normalize-path: 3.0.0 readable-stream: 4.5.2 - dev: true /archiver@6.0.2: resolution: {integrity: sha512-UQ/2nW7NMl1G+1UnrLypQw1VdT9XZg/ECcKPq7l+STzStrSivFIXIp34D8M5zeNGW5NoOupdYCHv6VySCPNNlw==} @@ -5033,7 +5011,6 @@ packages: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 - dev: true /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} @@ -5069,7 +5046,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) pathe: 1.1.2 transitivePeerDependencies: - rollup @@ -5079,7 +5056,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/parser': 7.23.9 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) pathe: 1.1.2 transitivePeerDependencies: - rollup @@ -5139,7 +5116,6 @@ packages: picocolors: 1.0.0 postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -5242,7 +5218,6 @@ packages: /buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} - dev: true /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -5252,7 +5227,6 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -5608,7 +5582,6 @@ packages: is-stream: 2.0.1 normalize-path: 3.0.0 readable-stream: 4.5.2 - dev: true /computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} @@ -5683,7 +5656,6 @@ packages: dependencies: crc-32: 1.2.2 readable-stream: 4.5.2 - dev: true /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -5744,7 +5716,6 @@ packages: postcss: ^8.0.9 dependencies: postcss: 8.4.36 - dev: true /css-inline@0.11.2: resolution: {integrity: sha512-c/oie5Yqa2lVRwUO7A8nd3c3r0x7yE6MQH2PPB/R1LaUb6ohZD7vNXj23fod5y4QNsNhsQi98/AWfUwo1K6R7g==} @@ -5865,7 +5836,6 @@ packages: postcss-reduce-transforms: 6.0.2(postcss@8.4.36) postcss-svgo: 6.0.3(postcss@8.4.36) postcss-unique-selectors: 6.0.3(postcss@8.4.36) - dev: true /cssnano-utils@4.0.2(postcss@8.4.35): resolution: {integrity: sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==} @@ -5882,7 +5852,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /cssnano@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-e2v4w/t3OFM6HTuSweI4RSdABaqgVgHlJp5FZrQsopHnKKHLFIvK2D3C4kHWeFIycN/1L1J5VIrg5KlDzn3r/g==} @@ -5903,7 +5872,6 @@ packages: cssnano-preset-default: 6.1.0(postcss@8.4.36) lilconfig: 3.1.1 postcss: 8.4.36 - dev: true /csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} @@ -5947,7 +5915,6 @@ packages: optional: true drizzle-orm: optional: true - dev: true /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -6455,7 +6422,6 @@ packages: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - dev: true /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} @@ -6623,7 +6589,6 @@ packages: /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: true /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} @@ -7326,7 +7291,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true /ignore-walk@6.0.4: resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} @@ -8835,7 +8799,6 @@ packages: - idb-keyval - supports-color - uWebSockets.js - dev: true /node-addon-api@7.1.0: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} @@ -9020,7 +8983,6 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 - dev: true /nuxt-auth-utils@0.0.20: resolution: {integrity: sha512-r2CfC37ii+qvZlZwEj5OQAJHh5D2ZXycPPw/IvksWnFCFVssAPI0m5+StZHmv/yYNd9/835RjxklD+uWfegIQw==} @@ -9256,7 +9218,7 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) unplugin: 1.8.3 unplugin-vue-router: 0.7.0(vue-router@4.3.0)(vue@3.4.21) untyped: 1.4.2 @@ -9366,7 +9328,7 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) unplugin: 1.8.3 unplugin-vue-router: 0.7.0(vue-router@4.3.0)(vue@3.4.21) untyped: 1.4.2 @@ -9414,7 +9376,6 @@ packages: - vti - vue-tsc - xml2js - dev: false /nuxt@3.11.1(@types/node@20.11.30)(eslint@8.57.0)(typescript@5.4.3)(vite@5.1.6): resolution: {integrity: sha512-CsncE1dxP0cmOYT+PBdjMD0bOK8eZizG5tgNWUOJAAAtU45sO38maoBumYYL2kUpT/SC/dMP+831DAcVPvi9pQ==} @@ -9477,7 +9438,7 @@ packages: uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.9.0 - unimport: 3.7.1(rollup@4.13.0) + unimport: 3.7.1(rollup@4.12.1) unplugin: 1.10.0 unplugin-vue-router: 0.7.0(vue-router@4.3.0)(vue@3.4.21) unstorage: 1.10.2(ioredis@5.3.2) @@ -9526,7 +9487,6 @@ packages: - vti - vue-tsc - xml2js - dev: true /nypm@0.3.6: resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==} @@ -9658,7 +9618,6 @@ packages: supports-color: 9.4.0 undici: 5.28.3 yargs-parser: 21.1.1 - dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -9909,7 +9868,6 @@ packages: postcss: 8.4.36 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 - dev: true /postcss-colormin@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==} @@ -9934,7 +9892,6 @@ packages: colord: 2.9.3 postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-convert-values@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==} @@ -9955,7 +9912,6 @@ packages: browserslist: 4.23.0 postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-custom-properties@13.3.5(postcss@8.4.35): resolution: {integrity: sha512-xHg8DTCMfN2nrqs2CQTF+0m5jgnzKL5zrW5Y05KF6xBRO0uDPxiplBm/xcr1o49SLbyJXkMuaRJKhRzkrquKnQ==} @@ -9986,7 +9942,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /postcss-discard-duplicates@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==} @@ -10003,7 +9958,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /postcss-discard-empty@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==} @@ -10020,7 +9974,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /postcss-discard-overridden@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==} @@ -10037,7 +9990,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /postcss-import@15.1.0(postcss@8.4.35): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} @@ -10097,7 +10049,6 @@ packages: postcss: 8.4.36 postcss-value-parser: 4.2.0 stylehacks: 6.1.0(postcss@8.4.36) - dev: true /postcss-merge-rules@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-lER+W3Gr6XOvxOYk1Vi/6UsAgKMg6MDBthmvbNqi2XxAk/r9XfhdYZSigfWjuWWn3zYw2wLelvtM8XuAEFqRkA==} @@ -10122,7 +10073,6 @@ packages: cssnano-utils: 4.0.2(postcss@8.4.36) postcss: 8.4.36 postcss-selector-parser: 6.0.15 - dev: true /postcss-minify-font-values@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-SmAeTA1We5rMnN3F8X9YBNo9bj9xB4KyDHnaNJnBfQIPi+60fNiR9OTRnIaMqkYzAQX0vObIw4Pn0vuKEOettg==} @@ -10141,7 +10091,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-minify-gradients@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==} @@ -10164,7 +10113,6 @@ packages: cssnano-utils: 4.0.2(postcss@8.4.36) postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-minify-params@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==} @@ -10187,7 +10135,6 @@ packages: cssnano-utils: 4.0.2(postcss@8.4.36) postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-minify-selectors@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-IcV7ZQJcaXyhx4UBpWZMsinGs2NmiUC60rJSkyvjPCPqhNjVGsrJUM+QhAtCaikZ0w0/AbZuH4wVvF/YMuMhvA==} @@ -10206,7 +10153,6 @@ packages: dependencies: postcss: 8.4.36 postcss-selector-parser: 6.0.15 - dev: true /postcss-nested@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} @@ -10244,7 +10190,6 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.36 - dev: true /postcss-normalize-display-values@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==} @@ -10263,7 +10208,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-positions@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==} @@ -10282,7 +10226,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-repeat-style@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==} @@ -10301,7 +10244,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-string@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==} @@ -10320,7 +10262,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-timing-functions@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==} @@ -10339,7 +10280,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-unicode@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==} @@ -10360,7 +10300,6 @@ packages: browserslist: 4.23.0 postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-url@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==} @@ -10379,7 +10318,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-normalize-whitespace@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==} @@ -10398,7 +10336,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-ordered-values@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==} @@ -10419,7 +10356,6 @@ packages: cssnano-utils: 4.0.2(postcss@8.4.36) postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-reduce-initial@6.1.0(postcss@8.4.35): resolution: {integrity: sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==} @@ -10440,7 +10376,6 @@ packages: browserslist: 4.23.0 caniuse-api: 3.0.0 postcss: 8.4.36 - dev: true /postcss-reduce-transforms@6.0.2(postcss@8.4.35): resolution: {integrity: sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==} @@ -10459,7 +10394,6 @@ packages: dependencies: postcss: 8.4.36 postcss-value-parser: 4.2.0 - dev: true /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -10495,7 +10429,6 @@ packages: postcss: 8.4.36 postcss-value-parser: 4.2.0 svgo: 3.2.0 - dev: true /postcss-unique-selectors@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-NFXbYr8qdmCr/AFceaEfdcsKGCvWTeGO6QVC9h2GvtWgj0/0dklKQcaMMVzs6tr8bY+ase8hOtHW8OBTTRvS8A==} @@ -10514,7 +10447,6 @@ packages: dependencies: postcss: 8.4.36 postcss-selector-parser: 6.0.15 - dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -10566,7 +10498,6 @@ packages: /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: true /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} @@ -10626,7 +10557,6 @@ packages: /radix3@1.1.1: resolution: {integrity: sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==} - dev: true /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -10698,7 +10628,6 @@ packages: events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 - dev: true /readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} @@ -11498,7 +11427,6 @@ packages: browserslist: 4.23.0 postcss: 8.4.36 postcss-selector-parser: 6.0.15 - dev: true /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} @@ -11920,7 +11848,6 @@ packages: '@unhead/schema': 1.8.20 '@unhead/shared': 1.8.20 hookable: 5.5.3 - dev: true /unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -12104,7 +12031,7 @@ packages: optional: true dependencies: '@babel/types': 7.24.0 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) '@vue-macros/common': 1.10.1(vue@3.4.21) ast-walker-scope: 0.5.0 chokidar: 3.6.0 @@ -12260,7 +12187,6 @@ packages: pathe: 1.1.2 pkg-types: 1.0.3 unplugin: 1.10.0 - dev: true /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} @@ -12372,7 +12298,6 @@ packages: - sugarss - supports-color - terser - dev: true /vite-plugin-checker@0.6.4(eslint@8.57.0)(typescript@5.4.3)(vite@5.1.5): resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} @@ -12473,9 +12398,8 @@ packages: vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: true - /vite-plugin-inspect@0.8.3(@nuxt/kit@3.10.3)(vite@5.1.6): + /vite-plugin-inspect@0.8.3(@nuxt/kit@3.11.1)(vite@5.1.6): resolution: {integrity: sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==} engines: {node: '>=14'} peerDependencies: @@ -12486,8 +12410,8 @@ packages: optional: true dependencies: '@antfu/utils': 0.7.7 - '@nuxt/kit': 3.10.3 - '@rollup/pluginutils': 5.1.0(rollup@4.13.0) + '@nuxt/kit': 3.11.1 + '@rollup/pluginutils': 5.1.0(rollup@4.12.1) debug: 4.3.4 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 @@ -13116,7 +13040,6 @@ packages: archiver-utils: 5.0.2 compress-commons: 6.0.2 readable-stream: 4.5.2 - dev: true /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} diff --git a/src/module/index.ts b/src/module/index.ts index bf52c199..232d01eb 100644 --- a/src/module/index.ts +++ b/src/module/index.ts @@ -1,4 +1,5 @@ import { defineNuxtModule, createResolver, logger, addServerScanDir, installModule } from '@nuxt/kit' +import { addCustomTab } from '@nuxt/devtools-kit' import { join } from 'pathe' import { defu } from 'defu' import { mkdir, writeFile, readFile } from 'node:fs/promises' @@ -193,14 +194,29 @@ export default defineNuxtModule({ log.warn(`\`${hub.projectUrl}\` is running \`@nuxthub/core@${manifest.version}\` while the local project is running \`@nuxthub/core@${hub.version}\`. Make sure to use the same version on both sides to avoid issues.`) } logger.info(`Remote storage available: ${Object.keys(manifest.storage).filter(k => manifest.storage[k]).map(k => `\`${k}\``).join(', ')} `) - return } - // Add Proxy routes only if not remote - addServerScanDir(resolve('./runtime/server')) + if (nuxt.options.dev || !hub.remote) { + // Add Proxy routes only if not remote or in development (used for devtools) + addServerScanDir(resolve('./runtime/server')) + } - // Local development without remote connection if (nuxt.options.dev) { + nuxt.hook('listen', (_, { url }) => { + addCustomTab({ + name: 'hub-database', + title: 'Hub Database', + icon: 'i-ph-database', + view: { + type: 'iframe', + src: `https://admin.hub.nuxt.com/embed/database?url=${url}`, + }, + }) + }) + } + + // Local development without remote connection + if (nuxt.options.dev && !hub.remote) { log.info('Using local storage from `.data/hub`') // Create the .data/hub/ directory diff --git a/src/module/runtime/server/api/_hub/database/query.post.ts b/src/module/runtime/server/api/_hub/database/query.post.ts new file mode 100644 index 00000000..398efcd3 --- /dev/null +++ b/src/module/runtime/server/api/_hub/database/query.post.ts @@ -0,0 +1,14 @@ +import { eventHandler, readValidatedBody } from 'h3' +import { z } from 'zod' + +const statementValidation = z.object({ + query: z.string().min(1).max(1e6).trim(), + params: z.any().array().optional().default([]), + mode: z.enum(['raw', 'all']).optional().default('all'), +}) + +export default eventHandler(async (event) => { + const { query, params, mode } = await readValidatedBody(event, statementValidation.parse) + + return hubDatabase().prepare(query).bind(...params)[mode === 'raw' ? 'raw' : 'all']({ columnNames: true }) +}) diff --git a/src/module/runtime/server/middleware/1.hub-auth.ts b/src/module/runtime/server/middleware/1.hub-auth.ts index 2a97415a..dda34784 100644 --- a/src/module/runtime/server/middleware/1.hub-auth.ts +++ b/src/module/runtime/server/middleware/1.hub-auth.ts @@ -1,3 +1,4 @@ +import { handleCors } from 'h3' import { eventHandler, getHeader, createError } from 'h3' import { $fetch } from 'ofetch' @@ -8,6 +9,8 @@ export default eventHandler(async (event) => { } // Skip if in development if (import.meta.dev) { + // add cors for devtools embed + handleCors(event, {}) return } const secretKeyOrUserToken = (getHeader(event, 'authorization') || '').split(' ')[1]