diff --git a/package.json b/package.json index 81e0dd6..9104df5 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "tailwindcss-animate": "^1.0.7", "vue": "^3.5.18", "vue-router": "^4.5.1", - "zod": "^3.25.76" + "zod": "^4.0.10" }, "devDependencies": { "@nuxtjs/color-mode": "^3.5.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d7f7c8..97ed5cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^11.1.11 version: 11.1.11 '@nuxt/content': - specifier: 3.5.1 - version: 3.5.1(magicast@0.3.5)(typescript@5.8.3) + specifier: 3.6.3 + version: 3.6.3(better-sqlite3@11.10.0)(magicast@0.3.5)(vue-component-type-helpers@2.2.12) '@nuxt/eslint': specifier: ^1.7.1 version: 1.7.1(@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(@vue/compiler-sfc@3.5.18)(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1))(magicast@0.3.5)(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) @@ -81,8 +81,8 @@ importers: specifier: ^4.5.1 version: 4.5.1(vue@3.5.18(typescript@5.8.3)) zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.0.10 + version: 4.0.10 devDependencies: '@nuxtjs/color-mode': specifier: ^3.5.2 @@ -152,6 +152,10 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} + '@apidevtools/json-schema-ref-parser@14.1.1': resolution: {integrity: sha512-uGF1YGOzzD50L7HLNWclXmsEhQflw8/zZHIz0/AzkJrKL5r9PceUipZxR/cp/8veTk4TVfdDJLyIwXLjaP5ePg==} engines: {node: '>= 20'} @@ -1137,6 +1141,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@koa/router@12.0.2': resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==} engines: {node: '>= 12'} @@ -1225,17 +1232,20 @@ packages: engines: {node: ^16.10.0 || >=18.0.0} hasBin: true - '@nuxt/content@3.5.1': - resolution: {integrity: sha512-WmWgxt5gWPSHBzLBSBZHiU9jaOmTWINMAppWxZ43ZHZCfa0GvdR5+0uTto2EGITPrPsf6iYhKKzSfmJa+Xmp2Q==} + '@nuxt/content@3.6.3': + resolution: {integrity: sha512-AF9/h5YWLXqQi8m1T40lEQLw7zeV98+LdcHRVrrYsWnFKiScRzJhtn+4uzYqUCKx7KPuXK1GszOvUrY3Ke0Q2w==} peerDependencies: '@electric-sql/pglite': '*' '@libsql/client': '*' + better-sqlite3: ^12.0.0 sqlite3: '*' peerDependenciesMeta: '@electric-sql/pglite': optional: true '@libsql/client': optional: true + better-sqlite3: + optional: true sqlite3: optional: true @@ -1941,8 +1951,8 @@ packages: '@speed-highlight/core@1.2.7': resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} - '@sqlite.org/sqlite-wasm@3.49.1-build4': - resolution: {integrity: sha512-TBbTTWhiI6v2CT7J1hij5shx+RGL4iICprVGYhO+LKv5Nbn3NeJPWCY8kMKL5vA6b33NeWkBk4dy6RFbNh3jBw==} + '@sqlite.org/sqlite-wasm@3.50.1-build1': + resolution: {integrity: sha512-yH4M/SHN98NibniIwTVk6rwTJjy7n39l7zwWY3u+qsfZBGTi4lC1uEl2NDvIlkzsFtfCBvHBJJFJ1iuU3UzzEQ==} hasBin: true '@stylistic/eslint-plugin-js@4.4.1': @@ -2100,6 +2110,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/luxon@3.6.2': resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==} @@ -2330,14 +2343,14 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@volar/language-core@2.4.15': - resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==} + '@volar/language-core@2.4.20': + resolution: {integrity: sha512-dRDF1G33xaAIDqR6+mXUIjXYdu9vzSxlMGfMEwBxQsfY/JMUEXSpLTR057oTKlUQ2nIvCmP9k94A8h8z2VrNSA==} - '@volar/source-map@2.4.15': - resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==} + '@volar/source-map@2.4.20': + resolution: {integrity: sha512-mVjmFQH8mC+nUaVwmbxoYUy8cww+abaO8dWzqPUjilsavjxH0jCJ3Mp8HFuHsdewZs2c+SP+EO7hCd8Z92whJg==} - '@volar/typescript@2.4.15': - resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==} + '@volar/typescript@2.4.20': + resolution: {integrity: sha512-Oc4DczPwQyXcVbd+5RsNEqX6ia0+w3p+klwdZQ6ZKhFjWoBP9PCPQYlKYRi/tDemWphW93P/Vv13vcE9I9D2GQ==} '@vue-macros/common@1.16.1': resolution: {integrity: sha512-Pn/AWMTjoMYuquepLZP813BIcq8DTZiNCoaceuNlvaYuOTd8DqBZWc5u0uOMQZMInwME1mdSmmBAcTluiV9Jtg==} @@ -2405,8 +2418,8 @@ packages: '@vue/devtools-shared@7.7.7': resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} - '@vue/language-core@2.2.12': - resolution: {integrity: sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==} + '@vue/language-core@3.0.4': + resolution: {integrity: sha512-BvueED4LfBCSNH66eeUQk37MQCb7hjdezzGgxniM0LbriW53AJIyLorgshAtStmjfsAuOCcTl/c1b+nz/ye8xQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2566,8 +2579,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - alien-signals@1.0.13: - resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + alien-signals@2.0.5: + resolution: {integrity: sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -4219,6 +4232,15 @@ packages: json-schema-to-typescript-lite@15.0.0: resolution: {integrity: sha512-5mMORSQm9oTLyjM4mWnyNBi2T042Fhg1/0gCIB6X8U/LVpM2A+Nmj2yEyArqVouDmFThDxpEXcnTgSrjkGJRFA==} + json-schema-to-typescript@15.0.4: + resolution: {integrity: sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ==} + engines: {node: '>=16.0.0'} + hasBin: true + + json-schema-to-zod@2.6.1: + resolution: {integrity: sha512-uiHmWH21h9FjKJkRBntfVGTLpYlCZ1n98D0izIlByqQLqpmkQpNTBtfbdP04Na6+43lgsvrShFh2uWLkQDKJuQ==} + hasBin: true + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4658,6 +4680,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + minimark@0.2.0: + resolution: {integrity: sha512-AmtWU9pO0C2/3AM2pikaVhJ//8E5rOpJ7+ioFQfjIq+wCsBeuZoxPd97hBFZ9qrI7DMHZudwGH3r8A7BMnsIew==} + minimatch@10.0.3: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} @@ -4850,8 +4875,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nuxt-component-meta@0.11.0: - resolution: {integrity: sha512-tF+BUToseiljrQXEg/zbqDZvr/2RyEGKzj2PzVF0pR9iHTQPEkQ+8Yt91Qo3mU3crttxTP39GJEgN5npeFZ+1w==} + nuxt-component-meta@0.12.2: + resolution: {integrity: sha512-cosF2jUd47TnN7Y8PsRfzdsVomHpVxVjZZIDgyaPqe+wnl2Ys5LXMUt+K3CpXrJrGRFlDRP6ux47Ukevf9juVQ==} hasBin: true nuxt@3.17.7: @@ -6388,13 +6413,11 @@ packages: vue-bundle-renderer@2.1.1: resolution: {integrity: sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==} - vue-component-meta@2.2.12: - resolution: {integrity: sha512-dQU6/obNSNbennJ1xd+rhDid4g3vQro+9qUBBIg8HMZH2Zs1jTpkFNxuQ3z77bOlU+ew08Qck9sbYkdSePr0Pw==} + vue-component-meta@3.0.4: + resolution: {integrity: sha512-0pGpYThdzW+3qUNXX/3N26Ds7P4mCDiM+47aXeDmsb78lPce36RyN+G+7CiMHrL8nHII/+OqFE9iGcUFthyVZA==} peerDependencies: typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + vue-component-type-helpers: 3.0.1 vue-component-type-helpers@2.2.12: resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} @@ -6616,18 +6639,15 @@ packages: peerDependencies: zod: ^3.24.1 - zod-to-ts@1.2.0: - resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} - peerDependencies: - typescript: ^4.9.4 || ^5.0.2 - zod: ^3 - zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.0.10: + resolution: {integrity: sha512-3vB+UU3/VmLL2lvwcY/4RV2i9z/YU0DTV/tDuYjrwmx5WeJ7hwy+rGEEx8glHp6Yxw7ibRbKSaIFBgReRPe5KA==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -6645,6 +6665,12 @@ snapshots: package-manager-detector: 1.3.0 tinyexec: 1.0.1 + '@apidevtools/json-schema-ref-parser@11.9.3': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + '@apidevtools/json-schema-ref-parser@14.1.1': dependencies: '@types/json-schema': 7.0.15 @@ -7452,6 +7478,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 + '@jsdevtools/ono@7.1.3': {} + '@koa/router@12.0.2': dependencies: debug: 4.4.1 @@ -7639,23 +7667,22 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/content@3.5.1(magicast@0.3.5)(typescript@5.8.3)': + '@nuxt/content@3.6.3(better-sqlite3@11.10.0)(magicast@0.3.5)(vue-component-type-helpers@2.2.12)': dependencies: '@nuxt/kit': 3.17.7(magicast@0.3.5) '@nuxtjs/mdc': 0.17.0(magicast@0.3.5) '@shikijs/langs': 3.8.1 - '@sqlite.org/sqlite-wasm': 3.49.1-build4 + '@sqlite.org/sqlite-wasm': 3.50.1-build1 '@webcontainer/env': 1.1.1 - better-sqlite3: 11.10.0 c12: 3.1.0(magicast@0.3.5) chokidar: 4.0.3 consola: 3.4.2 db0: 0.3.2(better-sqlite3@11.10.0) defu: 6.1.4 destr: 2.0.5 - fast-glob: 3.3.3 git-url-parse: 16.1.0 jiti: 2.5.1 + json-schema-to-typescript: 15.0.4 knitwork: 1.2.0 listhen: 1.9.0 mdast-util-to-hast: 13.2.0 @@ -7666,8 +7693,10 @@ snapshots: micromark-util-resolve-all: 2.0.1 micromark-util-sanitize-uri: 2.0.1 micromatch: 4.0.8 + minimark: 0.2.0 minimatch: 10.0.3 - nuxt-component-meta: 0.11.0(magicast@0.3.5) + nuxt-component-meta: 0.12.2(magicast@0.3.5)(vue-component-type-helpers@2.2.12) + nypm: 0.6.0 ohash: 2.0.11 pathe: 2.0.3 pkg-types: 2.2.0 @@ -7677,6 +7706,7 @@ snapshots: slugify: 1.6.6 socket.io-client: 4.8.1 tar: 7.4.3 + tinyglobby: 0.2.14 ufo: 1.6.1 unified: 11.0.5 unist-util-stringify-position: 4.0.0 @@ -7684,15 +7714,16 @@ snapshots: ws: 8.18.3 zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.76) + optionalDependencies: + better-sqlite3: 11.10.0 transitivePeerDependencies: - bufferutil - drizzle-orm - magicast - mysql2 - supports-color - - typescript - utf-8-validate + - vue-component-type-helpers '@nuxt/devalue@2.0.2': {} @@ -8554,7 +8585,7 @@ snapshots: '@speed-highlight/core@1.2.7': {} - '@sqlite.org/sqlite-wasm@3.49.1-build4': {} + '@sqlite.org/sqlite-wasm@3.50.1-build1': {} '@stylistic/eslint-plugin-js@4.4.1(eslint@9.32.0(jiti@2.5.1))': dependencies: @@ -8719,6 +8750,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/lodash@4.17.20': {} + '@types/luxon@3.6.2': {} '@types/mdast@4.0.4': @@ -8957,15 +8990,15 @@ snapshots: vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) vue: 3.5.18(typescript@5.8.3) - '@volar/language-core@2.4.15': + '@volar/language-core@2.4.20': dependencies: - '@volar/source-map': 2.4.15 + '@volar/source-map': 2.4.20 - '@volar/source-map@2.4.15': {} + '@volar/source-map@2.4.20': {} - '@volar/typescript@2.4.15': + '@volar/typescript@2.4.20': dependencies: - '@volar/language-core': 2.4.15 + '@volar/language-core': 2.4.20 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -9086,16 +9119,16 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/language-core@2.2.12(typescript@5.8.3)': + '@vue/language-core@3.0.4(typescript@5.8.3)': dependencies: - '@volar/language-core': 2.4.15 + '@volar/language-core': 2.4.20 '@vue/compiler-dom': 3.5.18 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.18 - alien-signals: 1.0.13 - minimatch: 9.0.5 + alien-signals: 2.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 + picomatch: 4.0.3 optionalDependencies: typescript: 5.8.3 @@ -9241,7 +9274,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - alien-signals@1.0.13: {} + alien-signals@2.0.5: {} ansi-regex@5.0.1: {} @@ -9345,6 +9378,7 @@ snapshots: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + optional: true bin-links@5.0.0: dependencies: @@ -9367,6 +9401,7 @@ snapshots: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true blake3-wasm@2.1.5: {} @@ -9402,6 +9437,7 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true buffer@6.0.3: dependencies: @@ -9505,7 +9541,8 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true chownr@3.0.0: {} @@ -9783,10 +9820,12 @@ snapshots: decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true deep-equal@1.0.1: {} - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true deep-is@0.1.4: {} @@ -10335,7 +10374,8 @@ snapshots: exit-hook@2.2.1: {} - expand-template@2.0.3: {} + expand-template@2.0.3: + optional: true exsolve@1.0.7: {} @@ -10448,7 +10488,8 @@ snapshots: fresh@2.0.0: {} - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fs-extra@9.1.0: dependencies: @@ -10523,7 +10564,8 @@ snapshots: dependencies: git-up: 8.1.1 - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true github-slugger@2.0.0: {} @@ -10843,7 +10885,8 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} + ini@1.3.8: + optional: true ini@4.1.1: {} @@ -11012,6 +11055,20 @@ snapshots: '@apidevtools/json-schema-ref-parser': 14.1.1 '@types/json-schema': 7.0.15 + json-schema-to-typescript@15.0.4: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.9.3 + '@types/json-schema': 7.0.15 + '@types/lodash': 4.17.20 + is-glob: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + minimist: 1.2.8 + prettier: 3.6.2 + tinyglobby: 0.2.14 + + json-schema-to-zod@2.6.1: {} + json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -11616,7 +11673,8 @@ snapshots: mimic-fn@4.0.0: {} - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true min-indent@1.0.1: {} @@ -11638,6 +11696,8 @@ snapshots: - bufferutil - utf-8-validate + minimark@0.2.0: {} + minimatch@10.0.3: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -11664,7 +11724,8 @@ snapshots: mitt@3.0.1: {} - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mkdirp@3.0.1: {} @@ -11700,7 +11761,8 @@ snapshots: nanotar@0.2.0: {} - napi-build-utils@2.0.0: {} + napi-build-utils@2.0.0: + optional: true napi-postinstall@0.3.2: {} @@ -11826,6 +11888,7 @@ snapshots: node-abi@3.75.0: dependencies: semver: 7.7.2 + optional: true node-addon-api@7.1.1: {} @@ -11895,18 +11958,20 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxt-component-meta@0.11.0(magicast@0.3.5): + nuxt-component-meta@0.12.2(magicast@0.3.5)(vue-component-type-helpers@2.2.12): dependencies: - '@nuxt/kit': 3.17.7(magicast@0.3.5) + '@nuxt/kit': 4.0.1(magicast@0.3.5) citty: 0.1.6 + json-schema-to-zod: 2.6.1 mlly: 1.7.4 ohash: 2.0.11 scule: 1.3.0 typescript: 5.8.3 ufo: 1.6.1 - vue-component-meta: 2.2.12(typescript@5.8.3) + vue-component-meta: 3.0.4(typescript@5.8.3)(vue-component-type-helpers@2.2.12) transitivePeerDependencies: - magicast + - vue-component-type-helpers nuxt@3.17.7(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@24.1.0)(@vue/compiler-sfc@3.5.18)(better-sqlite3@11.10.0)(db0@0.3.2(better-sqlite3@11.10.0))(eslint@9.32.0(jiti@2.5.1))(ioredis@5.6.1)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.45.3)(sass@1.89.2)(terser@5.43.1)(typescript@5.8.3)(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))(yaml@2.8.0): dependencies: @@ -12526,6 +12591,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.3 tunnel-agent: 0.6.0 + optional: true precinct@12.2.0: dependencies: @@ -12627,6 +12693,7 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true read-cache@1.0.0: dependencies: @@ -13058,13 +13125,15 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true simple-git@3.28.0: dependencies: @@ -13212,7 +13281,8 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true strip-json-comments@3.1.1: {} @@ -13332,6 +13402,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.3 tar-stream: 2.2.0 + optional: true tar-stream@2.2.0: dependencies: @@ -13340,6 +13411,7 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true tar-stream@3.1.7: dependencies: @@ -13429,6 +13501,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true type-check@0.4.0: dependencies: @@ -13813,14 +13886,13 @@ snapshots: dependencies: ufo: 1.6.1 - vue-component-meta@2.2.12(typescript@5.8.3): + vue-component-meta@3.0.4(typescript@5.8.3)(vue-component-type-helpers@2.2.12): dependencies: - '@volar/typescript': 2.4.15 - '@vue/language-core': 2.2.12(typescript@5.8.3) + '@volar/typescript': 2.4.20 + '@vue/language-core': 3.0.4(typescript@5.8.3) path-browserify: 1.0.1 - vue-component-type-helpers: 2.2.12 - optionalDependencies: typescript: 5.8.3 + vue-component-type-helpers: 2.2.12 vue-component-type-helpers@2.2.12: {} @@ -14032,13 +14104,10 @@ snapshots: dependencies: zod: 3.25.76 - zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.76): - dependencies: - typescript: 5.8.3 - zod: 3.25.76 - zod@3.22.3: {} zod@3.25.76: {} + zod@4.0.10: {} + zwitch@2.0.4: {} diff --git a/server/api/calendars/[id].delete.ts b/server/api/calendars/[id].delete.ts index f5710b4..93d593d 100644 --- a/server/api/calendars/[id].delete.ts +++ b/server/api/calendars/[id].delete.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import type { Calendar } from "~/models/CalendarConfig" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/[id].patch.ts b/server/api/calendars/[id].patch.ts index 7a143c5..9793911 100644 --- a/server/api/calendars/[id].patch.ts +++ b/server/api/calendars/[id].patch.ts @@ -4,7 +4,7 @@ import type { Calendar} from "~/models/CalendarConfig"; import { postCalendarSchema } from "~/models/CalendarConfig" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/categories/[id].delete.ts b/server/api/calendars/categories/[id].delete.ts index fb2e568..d4ae143 100644 --- a/server/api/calendars/categories/[id].delete.ts +++ b/server/api/calendars/categories/[id].delete.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import type { Category } from "~/models/Category" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/categories/[id].patch.ts b/server/api/calendars/categories/[id].patch.ts index d7926fb..be9baec 100644 --- a/server/api/calendars/categories/[id].patch.ts +++ b/server/api/calendars/categories/[id].patch.ts @@ -4,7 +4,7 @@ import type { Category} from "~/models/Category"; import { categorySchema } from "~/models/Category" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/categories/query.get.ts b/server/api/calendars/categories/query.get.ts index 4627884..c2122da 100644 --- a/server/api/calendars/categories/query.get.ts +++ b/server/api/calendars/categories/query.get.ts @@ -3,8 +3,8 @@ import { z } from "zod" import type { Category } from "~/models/Category"; const querySchema = z.object({ - id: z.number({ coerce: true }).positive().int().optional(), - calendarId: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int().optional(), + calendarId: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/events/[id].delete.ts b/server/api/calendars/events/[id].delete.ts index 2934682..4cc5886 100644 --- a/server/api/calendars/events/[id].delete.ts +++ b/server/api/calendars/events/[id].delete.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import type { CalendarEvent } from "~/models/CalendarEvent" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/events/[id].patch.ts b/server/api/calendars/events/[id].patch.ts index ca0aa9a..75491e5 100644 --- a/server/api/calendars/events/[id].patch.ts +++ b/server/api/calendars/events/[id].patch.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import { postEventBodySchema, type CalendarEvent } from "~/models/CalendarEvent" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/events/query.get.ts b/server/api/calendars/events/query.get.ts index 4167b6a..67d0dec 100644 --- a/server/api/calendars/events/query.get.ts +++ b/server/api/calendars/events/query.get.ts @@ -3,7 +3,7 @@ import { z } from "zod" import type { CalendarEvent } from "~/models/CalendarEvent"; const querySchema = z.object({ - calendarId: z.number({ coerce: true }).positive().int() + calendarId: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/months/[id].delete.ts b/server/api/calendars/months/[id].delete.ts index 3536f16..84097cc 100644 --- a/server/api/calendars/months/[id].delete.ts +++ b/server/api/calendars/months/[id].delete.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import type { CalendarMonth } from "~/models/CalendarMonth" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/months/[id].patch.ts b/server/api/calendars/months/[id].patch.ts index 7e7c2ad..5ca780b 100644 --- a/server/api/calendars/months/[id].patch.ts +++ b/server/api/calendars/months/[id].patch.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import { calendarMonthSchema, type CalendarMonth } from "~/models/CalendarMonth" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/months/query.get.ts b/server/api/calendars/months/query.get.ts index b2d7c24..0ab493e 100644 --- a/server/api/calendars/months/query.get.ts +++ b/server/api/calendars/months/query.get.ts @@ -3,7 +3,7 @@ import { z } from "zod" import type { CalendarMonth } from "~/models/CalendarMonth"; const querySchema = z.object({ - calendarId: z.number({ coerce: true }).positive().int() + calendarId: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/calendars/query.get.ts b/server/api/calendars/query.get.ts index d5b67c1..ea239eb 100644 --- a/server/api/calendars/query.get.ts +++ b/server/api/calendars/query.get.ts @@ -3,9 +3,9 @@ import { z } from "zod" import type { Calendar } from "~/models/CalendarConfig"; const querySchema = z.object({ - id: z.number({ coerce: true }).positive().int().optional(), + id: z.coerce.number().positive().int().optional(), shortId: z.string().optional(), - full: z.boolean({ coerce: true }).optional() + full: z.coerce.boolean().optional() }) export default defineEventHandler(async (event) => { diff --git a/server/api/characters/query.get.ts b/server/api/characters/query.get.ts index 21578a7..acdf4f2 100644 --- a/server/api/characters/query.get.ts +++ b/server/api/characters/query.get.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server"; import type { Character } from "~/models/Characters"; const querySchema = z.object({ - worldId: z.number({ coerce: true }).positive().int() + worldId: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/worlds/[id].delete.ts b/server/api/worlds/[id].delete.ts index 0b9bd0d..4aaa2d5 100644 --- a/server/api/worlds/[id].delete.ts +++ b/server/api/worlds/[id].delete.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import type { World } from "~/models/World" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/worlds/[id].patch.ts b/server/api/worlds/[id].patch.ts index 7cb6cd0..f9459d2 100644 --- a/server/api/worlds/[id].patch.ts +++ b/server/api/worlds/[id].patch.ts @@ -3,7 +3,7 @@ import { serverSupabaseClient } from "#supabase/server" import { postWorldSchema, type World } from "~/models/World" const paramsSchema = z.object({ - id: z.number({ coerce: true }).positive().int() + id: z.coerce.number().positive().int() }) export default defineEventHandler(async (event) => { diff --git a/server/api/worlds/query.get.ts b/server/api/worlds/query.get.ts index ce81242..992965d 100644 --- a/server/api/worlds/query.get.ts +++ b/server/api/worlds/query.get.ts @@ -3,8 +3,8 @@ import { serverSupabaseClient } from "#supabase/server"; import type { World } from "~/models/World"; const querySchema = z.object({ - id: z.number({ coerce: true }).positive().int().optional(), - full: z.boolean({ coerce: true }).optional(), + id: z.coerce.number().positive().int().optional(), + full: z.coerce.boolean().optional(), gmId: z.string().optional(), })